VirtualBox

Ignore:
Timestamp:
Apr 14, 2023 3:17:44 PM (20 months ago)
Author:
vboxsync
Message:

Devices/EFI/FirmwareNew: Update to edk2-stable202302 and make it build, bugref:4643

Location:
trunk/src/VBox/Devices/EFI/FirmwareNew
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/EFI/FirmwareNew

  • trunk/src/VBox/Devices/EFI/FirmwareNew/OvmfPkg/QemuRamfbDxe/QemuRamfb.c

    r80721 r99404  
    2727#pragma pack (1)
    2828typedef struct RAMFB_CONFIG {
    29   UINT64 Address;
    30   UINT32 FourCC;
    31   UINT32 Flags;
    32   UINT32 Width;
    33   UINT32 Height;
    34   UINT32 Stride;
     29  UINT64    Address;
     30  UINT32    FourCC;
     31  UINT32    Flags;
     32  UINT32    Width;
     33  UINT32    Height;
     34  UINT32    Stride;
    3535} RAMFB_CONFIG;
    3636#pragma pack ()
    3737
    38 STATIC EFI_HANDLE                    mRamfbHandle;
    39 STATIC EFI_HANDLE                    mGopHandle;
    40 STATIC FRAME_BUFFER_CONFIGURE        *mQemuRamfbFrameBufferBltConfigure;
    41 STATIC UINTN                         mQemuRamfbFrameBufferBltConfigureSize;
    42 STATIC FIRMWARE_CONFIG_ITEM          mRamfbFwCfgItem;
    43 
    44 STATIC EFI_GRAPHICS_OUTPUT_MODE_INFORMATION mQemuRamfbModeInfo[] = {
     38STATIC EFI_HANDLE              mRamfbHandle;
     39STATIC EFI_HANDLE              mGopHandle;
     40STATIC FRAME_BUFFER_CONFIGURE  *mQemuRamfbFrameBufferBltConfigure;
     41STATIC UINTN                   mQemuRamfbFrameBufferBltConfigureSize;
     42STATIC FIRMWARE_CONFIG_ITEM    mRamfbFwCfgItem;
     43
     44STATIC EFI_GRAPHICS_OUTPUT_MODE_INFORMATION  mQemuRamfbModeInfo[] = {
    4545  {
    4646    0,    // Version
     
    5858};
    5959
    60 STATIC EFI_GRAPHICS_OUTPUT_PROTOCOL_MODE mQemuRamfbMode = {
     60STATIC EFI_GRAPHICS_OUTPUT_PROTOCOL_MODE  mQemuRamfbMode = {
    6161  ARRAY_SIZE (mQemuRamfbModeInfo),                // MaxMode
    6262  0,                                              // Mode
     
    7777  EFI_GRAPHICS_OUTPUT_MODE_INFORMATION  *ModeInfo;
    7878
    79   if (Info == NULL || SizeOfInfo == NULL ||
    80       ModeNumber >= mQemuRamfbMode.MaxMode) {
     79  if ((Info == NULL) || (SizeOfInfo == NULL) ||
     80      (ModeNumber >= mQemuRamfbMode.MaxMode))
     81  {
    8182    return EFI_INVALID_PARAMETER;
    8283  }
     84
    8385  ModeInfo = &mQemuRamfbModeInfo[ModeNumber];
    8486
    85   *Info = AllocateCopyPool (sizeof (EFI_GRAPHICS_OUTPUT_MODE_INFORMATION),
    86             ModeInfo);
     87  *Info = AllocateCopyPool (
     88            sizeof (EFI_GRAPHICS_OUTPUT_MODE_INFORMATION),
     89            ModeInfo
     90            );
    8791  if (*Info == NULL) {
    8892    return EFI_OUT_OF_RESOURCES;
    8993  }
     94
    9095  *SizeOfInfo = sizeof (EFI_GRAPHICS_OUTPUT_MODE_INFORMATION);
    9196
     
    97102EFIAPI
    98103QemuRamfbGraphicsOutputSetMode (
    99   IN  EFI_GRAPHICS_OUTPUT_PROTOCOL *This,
    100   IN  UINT32                       ModeNumber
     104  IN  EFI_GRAPHICS_OUTPUT_PROTOCOL  *This,
     105  IN  UINT32                        ModeNumber
    101106  )
    102107{
     
    109114    return EFI_UNSUPPORTED;
    110115  }
     116
    111117  ModeInfo = &mQemuRamfbModeInfo[ModeNumber];
    112118
    113   DEBUG ((DEBUG_INFO, "Ramfb: SetMode %u (%ux%u)\n", ModeNumber,
    114     ModeInfo->HorizontalResolution, ModeInfo->VerticalResolution));
     119  DEBUG ((
     120    DEBUG_INFO,
     121    "Ramfb: SetMode %u (%ux%u)\n",
     122    ModeNumber,
     123    ModeInfo->HorizontalResolution,
     124    ModeInfo->VerticalResolution
     125    ));
    115126
    116127  Config.Address = SwapBytes64 (mQemuRamfbMode.FrameBufferBase);
     
    122133
    123134  Status = FrameBufferBltConfigure (
    124              (VOID*)(UINTN)mQemuRamfbMode.FrameBufferBase,
     135             (VOID *)(UINTN)mQemuRamfbMode.FrameBufferBase,
    125136             ModeInfo,
    126137             mQemuRamfbFrameBufferBltConfigure,
     
    132143      FreePool (mQemuRamfbFrameBufferBltConfigure);
    133144    }
     145
    134146    mQemuRamfbFrameBufferBltConfigure =
    135147      AllocatePool (mQemuRamfbFrameBufferBltConfigureSize);
     
    140152
    141153    Status = FrameBufferBltConfigure (
    142                (VOID*)(UINTN)mQemuRamfbMode.FrameBufferBase,
     154               (VOID *)(UINTN)mQemuRamfbMode.FrameBufferBase,
    143155               ModeInfo,
    144156               mQemuRamfbFrameBufferBltConfigure,
     
    146158               );
    147159  }
     160
    148161  if (RETURN_ERROR (Status)) {
    149162    ASSERT (Status == RETURN_UNSUPPORTED);
     
    174187             );
    175188  if (RETURN_ERROR (Status)) {
    176     DEBUG ((DEBUG_WARN, "%a: clearing the screen failed: %r\n",
    177       __FUNCTION__, Status));
     189    DEBUG ((
     190      DEBUG_WARN,
     191      "%a: clearing the screen failed: %r\n",
     192      __FUNCTION__,
     193      Status
     194      ));
    178195  }
    179196
     
    185202EFIAPI
    186203QemuRamfbGraphicsOutputBlt (
    187   IN  EFI_GRAPHICS_OUTPUT_PROTOCOL          *This,
    188   IN  EFI_GRAPHICS_OUTPUT_BLT_PIXEL         *BltBuffer, OPTIONAL
    189   IN  EFI_GRAPHICS_OUTPUT_BLT_OPERATION     BltOperation,
    190   IN  UINTN                                 SourceX,
    191   IN  UINTN                                 SourceY,
    192   IN  UINTN                                 DestinationX,
    193   IN  UINTN                                 DestinationY,
    194   IN  UINTN                                 Width,
    195   IN  UINTN                                 Height,
    196   IN  UINTN                                 Delta
     204  IN  EFI_GRAPHICS_OUTPUT_PROTOCOL       *This,
     205  IN  EFI_GRAPHICS_OUTPUT_BLT_PIXEL      *BltBuffer  OPTIONAL,
     206  IN  EFI_GRAPHICS_OUTPUT_BLT_OPERATION  BltOperation,
     207  IN  UINTN                              SourceX,
     208  IN  UINTN                              SourceY,
     209  IN  UINTN                              DestinationX,
     210  IN  UINTN                              DestinationY,
     211  IN  UINTN                              Width,
     212  IN  UINTN                              Height,
     213  IN  UINTN                              Delta
    197214  )
    198215{
     
    211228}
    212229
    213 STATIC EFI_GRAPHICS_OUTPUT_PROTOCOL mQemuRamfbGraphicsOutput = {
     230STATIC EFI_GRAPHICS_OUTPUT_PROTOCOL  mQemuRamfbGraphicsOutput = {
    214231  QemuRamfbGraphicsOutputQueryMode,
    215232  QemuRamfbGraphicsOutputSetMode,
     
    221238EFIAPI
    222239InitializeQemuRamfb (
    223   IN EFI_HANDLE           ImageHandle,
    224   IN EFI_SYSTEM_TABLE     *SystemTable
     240  IN EFI_HANDLE        ImageHandle,
     241  IN EFI_SYSTEM_TABLE  *SystemTable
    225242  )
    226243{
     
    245262    return EFI_NOT_FOUND;
    246263  }
     264
    247265  if (FwCfgSize != sizeof (RAMFB_CONFIG)) {
    248     DEBUG ((DEBUG_ERROR, "Ramfb: FwCfg size mismatch (expected %lu, got %lu)\n",
    249       (UINT64)sizeof (RAMFB_CONFIG), (UINT64)FwCfgSize));
     266    DEBUG ((
     267      DEBUG_ERROR,
     268      "Ramfb: FwCfg size mismatch (expected %lu, got %lu)\n",
     269      (UINT64)sizeof (RAMFB_CONFIG),
     270      (UINT64)FwCfgSize
     271      ));
    250272    return EFI_PROTOCOL_ERROR;
    251273  }
     
    258280      PixelBlueGreenRedReserved8BitPerColor;
    259281    FbSize = RAMFB_BPP *
    260       mQemuRamfbModeInfo[Index].HorizontalResolution *
    261       mQemuRamfbModeInfo[Index].VerticalResolution;
     282             mQemuRamfbModeInfo[Index].HorizontalResolution *
     283             mQemuRamfbModeInfo[Index].VerticalResolution;
    262284    if (MaxFbSize < FbSize) {
    263285      MaxFbSize = FbSize;
    264286    }
    265     DEBUG ((DEBUG_INFO, "Ramfb: Mode %lu: %ux%u, %lu kB\n", (UINT64)Index,
     287
     288    DEBUG ((
     289      DEBUG_INFO,
     290      "Ramfb: Mode %lu: %ux%u, %lu kB\n",
     291      (UINT64)Index,
    266292      mQemuRamfbModeInfo[Index].HorizontalResolution,
    267293      mQemuRamfbModeInfo[Index].VerticalResolution,
    268       (UINT64)(FbSize / 1024)));
    269   }
    270 
    271   Pages = EFI_SIZE_TO_PAGES (MaxFbSize);
     294      (UINT64)(FbSize / 1024)
     295      ));
     296  }
     297
     298  Pages     = EFI_SIZE_TO_PAGES (MaxFbSize);
    272299  MaxFbSize = EFI_PAGES_TO_SIZE (Pages);
    273   FbBase = (EFI_PHYSICAL_ADDRESS)(UINTN)AllocateReservedPages (Pages);
     300  FbBase    = (EFI_PHYSICAL_ADDRESS)(UINTN)AllocateReservedPages (Pages);
    274301  if (FbBase == 0) {
    275302    DEBUG ((DEBUG_ERROR, "Ramfb: memory allocation failed\n"));
    276303    return EFI_OUT_OF_RESOURCES;
    277304  }
    278   DEBUG ((DEBUG_INFO, "Ramfb: Framebuffer at 0x%lx, %lu kB, %lu pages\n",
    279     (UINT64)FbBase, (UINT64)(MaxFbSize / 1024), (UINT64)Pages));
     305
     306  DEBUG ((
     307    DEBUG_INFO,
     308    "Ramfb: Framebuffer at 0x%lx, %lu kB, %lu pages\n",
     309    (UINT64)FbBase,
     310    (UINT64)(MaxFbSize / 1024),
     311    (UINT64)Pages
     312    ));
    280313  mQemuRamfbMode.FrameBufferSize = MaxFbSize;
    281314  mQemuRamfbMode.FrameBufferBase = FbBase;
     
    289322  // ramfb vendor devpath
    290323  //
    291   VendorDeviceNode.Header.Type = HARDWARE_DEVICE_PATH;
     324  VendorDeviceNode.Header.Type    = HARDWARE_DEVICE_PATH;
    292325  VendorDeviceNode.Header.SubType = HW_VENDOR_DP;
    293326  CopyGuid (&VendorDeviceNode.Guid, &gQemuRamfbGuid);
    294   SetDevicePathNodeLength (&VendorDeviceNode.Header,
    295     sizeof (VENDOR_DEVICE_PATH));
    296 
    297   RamfbDevicePath = AppendDevicePathNode (NULL,
    298     (EFI_DEVICE_PATH_PROTOCOL *) &VendorDeviceNode);
     327  SetDevicePathNodeLength (
     328    &VendorDeviceNode.Header,
     329    sizeof (VENDOR_DEVICE_PATH)
     330    );
     331
     332  RamfbDevicePath = AppendDevicePathNode (
     333                      NULL,
     334                      (EFI_DEVICE_PATH_PROTOCOL *)&VendorDeviceNode
     335                      );
    299336  if (RamfbDevicePath == NULL) {
    300337    Status = EFI_OUT_OF_RESOURCES;
     
    309346                  );
    310347  if (EFI_ERROR (Status)) {
    311     DEBUG ((DEBUG_ERROR, "Ramfb: install Ramfb Vendor DevicePath failed: %r\n",
    312       Status));
     348    DEBUG ((
     349      DEBUG_ERROR,
     350      "Ramfb: install Ramfb Vendor DevicePath failed: %r\n",
     351      Status
     352      ));
    313353    goto FreeRamfbDevicePath;
    314354  }
     
    317357  // gop devpath + protocol
    318358  //
    319   AcpiDeviceNode.Header.Type = ACPI_DEVICE_PATH;
     359  AcpiDeviceNode.Header.Type    = ACPI_DEVICE_PATH;
    320360  AcpiDeviceNode.Header.SubType = ACPI_ADR_DP;
    321   AcpiDeviceNode.ADR = ACPI_DISPLAY_ADR (
    322     1,                                       // DeviceIdScheme
    323     0,                                       // HeadId
    324     0,                                       // NonVgaOutput
    325     1,                                       // BiosCanDetect
    326     0,                                       // VendorInfo
    327     ACPI_ADR_DISPLAY_TYPE_EXTERNAL_DIGITAL,  // Type
    328     0,                                       // Port
    329     0                                        // Index
     361  AcpiDeviceNode.ADR            = ACPI_DISPLAY_ADR (
     362                                    1,                                      // DeviceIdScheme
     363                                    0,                                      // HeadId
     364                                    0,                                      // NonVgaOutput
     365                                    1,                                      // BiosCanDetect
     366                                    0,                                      // VendorInfo
     367                                    ACPI_ADR_DISPLAY_TYPE_EXTERNAL_DIGITAL, // Type
     368                                    0,                                      // Port
     369                                    0                                       // Index
     370                                    );
     371  SetDevicePathNodeLength (
     372    &AcpiDeviceNode.Header,
     373    sizeof (ACPI_ADR_DEVICE_PATH)
    330374    );
    331   SetDevicePathNodeLength (&AcpiDeviceNode.Header,
    332     sizeof (ACPI_ADR_DEVICE_PATH));
    333 
    334   GopDevicePath = AppendDevicePathNode (RamfbDevicePath,
    335     (EFI_DEVICE_PATH_PROTOCOL *) &AcpiDeviceNode);
     375
     376  GopDevicePath = AppendDevicePathNode (
     377                    RamfbDevicePath,
     378                    (EFI_DEVICE_PATH_PROTOCOL *)&AcpiDeviceNode
     379                    );
    336380  if (GopDevicePath == NULL) {
    337381    Status = EFI_OUT_OF_RESOURCES;
     
    348392                  );
    349393  if (EFI_ERROR (Status)) {
    350     DEBUG ((DEBUG_ERROR, "Ramfb: install GOP DevicePath failed: %r\n",
    351       Status));
     394    DEBUG ((
     395      DEBUG_ERROR,
     396      "Ramfb: install GOP DevicePath failed: %r\n",
     397      Status
     398      ));
    352399    goto FreeGopDevicePath;
    353400  }
     
    389436  FreePool (RamfbDevicePath);
    390437FreeFramebuffer:
    391   FreePages ((VOID*)(UINTN)mQemuRamfbMode.FrameBufferBase, Pages);
     438  FreePages ((VOID *)(UINTN)mQemuRamfbMode.FrameBufferBase, Pages);
    392439  return Status;
    393440}
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette