Code was inserted to create default boot entries for Juno R1.  These
don't work, but they are also preventing the board from booting into the
default options that Intel BDS would otherwise boot.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Ryan Harkin <ryan.har...@linaro.org>
---
 .../ArmJunoPkg/Drivers/ArmJunoDxe/ArmJunoDxe.c     | 248 ---------------------
 1 file changed, 248 deletions(-)

diff --git a/ArmPlatformPkg/ArmJunoPkg/Drivers/ArmJunoDxe/ArmJunoDxe.c 
b/ArmPlatformPkg/ArmJunoPkg/Drivers/ArmJunoDxe/ArmJunoDxe.c
index f4e6d35..61b2401 100644
--- a/ArmPlatformPkg/ArmJunoPkg/Drivers/ArmJunoDxe/ArmJunoDxe.c
+++ b/ArmPlatformPkg/ArmJunoPkg/Drivers/ArmJunoDxe/ArmJunoDxe.c
@@ -37,13 +37,6 @@
 //
 #define SKY2_MAC_ADDRESS_BOOTARG_LEN  47
 
-//
-// Function prototypes
-//
-STATIC EFI_STATUS SetJunoR1DefaultBootEntries (
-  VOID
-  );
-
 // This GUID must match the FILE_GUID in 
ArmPlatformPkg/ArmJunoPkg/AcpiTables/AcpiTables.inf
 STATIC CONST EFI_GUID mJunoAcpiTableFile = { 0xa1dd808e, 0x1e95, 0x4399, { 
0xab, 0xc0, 0x65, 0x3c, 0x82, 0xe8, 0x53, 0x0c } };
 
@@ -82,75 +75,6 @@ STATIC CONST EFI_PCI_ROOT_BRIDGE_DEVICE_PATH 
mPciRootComplexDevicePath = {
 EFI_EVENT mAcpiRegistration = NULL;
 
 /**
- * Build and Set UEFI Variable Boot####
- *
- * @param BootVariableName       Name of the UEFI Variable
- * @param Attributes             'Attributes' for the Boot#### variable as per 
UEFI spec
- * @param BootDescription        Description of the Boot#### variable
- * @param DevicePath             EFI Device Path of the EFI Application to boot
- * @param OptionalData           Parameters to pass to the EFI application
- * @param OptionalDataSize       Size of the parameters to pass to the EFI 
application
- *
- * @return EFI_OUT_OF_RESOURCES  A memory allocation failed
- * @return                       Return value of RT.SetVariable
- */
-STATIC
-EFI_STATUS
-BootOptionCreate (
-  IN  CHAR16                    BootVariableName[9],
-  IN  UINT32                    Attributes,
-  IN  CHAR16*                   BootDescription,
-  IN  EFI_DEVICE_PATH_PROTOCOL* DevicePath,
-  IN  UINT8*                    OptionalData,
-  IN  UINTN                     OptionalDataSize
-  )
-{
-  UINTN                         VariableSize;
-  UINT8                         *Variable;
-  UINT8                         *VariablePtr;
-  UINTN                         FilePathListLength;
-  UINTN                         BootDescriptionSize;
-
-  FilePathListLength  = GetDevicePathSize (DevicePath);
-  BootDescriptionSize = StrSize (BootDescription);
-
-  // Each Boot#### variable is built as follow:
-  //   UINT32                   Attributes
-  //   UINT16                   FilePathListLength
-  //   CHAR16*                  Description
-  //   EFI_DEVICE_PATH_PROTOCOL FilePathList[]
-  //   UINT8                    OptionalData[]
-  VariableSize = sizeof (UINT32) + sizeof (UINT16) +
-      BootDescriptionSize + FilePathListLength + OptionalDataSize;
-  Variable = AllocateZeroPool (VariableSize);
-  if (Variable == NULL) {
-    return EFI_OUT_OF_RESOURCES;
-  }
-
-  // 'Attributes' field
-  *(UINT32*)Variable = Attributes;
-  // 'FilePathListLength' field
-  VariablePtr = Variable + sizeof (UINT32);
-  *(UINT16*)VariablePtr = FilePathListLength;
-  // 'Description' field
-  VariablePtr += sizeof (UINT16);
-  CopyMem (VariablePtr, BootDescription, BootDescriptionSize);
-  // 'FilePathList' field
-  VariablePtr += BootDescriptionSize;
-  CopyMem (VariablePtr, DevicePath, FilePathListLength);
-  // 'OptionalData' field
-  VariablePtr += FilePathListLength;
-  CopyMem (VariablePtr, OptionalData, OptionalDataSize);
-
-  return gRT->SetVariable (
-      BootVariableName,
-      &gEfiGlobalVariableGuid,
-      EFI_VARIABLE_NON_VOLATILE | EFI_VARIABLE_BOOTSERVICE_ACCESS | 
EFI_VARIABLE_RUNTIME_ACCESS,
-      VariableSize, Variable
-      );
-}
-
-/**
   Notification function of the event defined as belonging to the
   EFI_END_OF_DXE_EVENT_GROUP_GUID event group that was created in
   the entry point of the driver.
@@ -304,11 +228,6 @@ ArmJunoEntryPoint (
   // Set the R1 two boot options if not already done.
   //
   if (JunoRevision == JUNO_REVISION_R1) {
-    Status = SetJunoR1DefaultBootEntries ();
-    if (EFI_ERROR (Status)) {
-      return Status;
-    }
-
     // Enable PCI enumeration
     PcdSetBool (PcdPciDisableBusEnumeration, FALSE);
 
@@ -356,170 +275,3 @@ ArmJunoEntryPoint (
 
   return Status;
 }
-
-/**
- * If no boot entry is currently defined, define the two default boot entries
- * for Juno R1.
- *
- * @return EFI_SUCCESS             Some boot entries were already defined or
- *                                 the default boot entries were set 
successfully.
- * @return EFI_OUT_OF_RESOURCES    A memory allocation failed.
- * @return EFI_DEVICE_ERROR        An UEFI variable could not be saved due to 
a hardware failure.
- * @return EFI_WRITE_PROTECTED     An UEFI variable is read-only.
- * @return EFI_SECURITY_VIOLATION  An UEFI variable could not be written.
- */
-STATIC
-EFI_STATUS
-SetJunoR1DefaultBootEntries (
-  VOID
-  )
-{
-  EFI_STATUS                          Status;
-  CONST CHAR16*                       ExtraBootArgument = L" dtb=r1a57a53.dtb";
-  UINTN                               Size;
-  EFI_DEVICE_PATH_FROM_TEXT_PROTOCOL  *EfiDevicePathFromTextProtocol;
-  EFI_DEVICE_PATH*                    BootDevicePath;
-  UINT32                              SysPciGbeL;
-  UINT32                              SysPciGbeH;
-  CHAR16*                             DefaultBootArgument;
-  CHAR16*                             DefaultBootArgument1;
-  UINTN                               DefaultBootArgument1Size;
-  CHAR16*                             DefaultBootArgument2;
-  UINTN                               DefaultBootArgument2Size;
-  UINT16                              BootOrder[2];
-
-  BootDevicePath       = NULL;
-  DefaultBootArgument1 = NULL;
-  DefaultBootArgument2 = NULL;
-
-  //
-  // Because the driver has a dependency on gEfiVariable(Write)ArchProtocolGuid
-  // (see [Depex] section of the INF file), we know we can safely access the
-  // UEFI Variable at that stage.
-  //
-  Size = 0;
-  Status = gRT->GetVariable (L"BootOrder", &gEfiGlobalVariableGuid, NULL, 
&Size, NULL);
-  if (Status != EFI_NOT_FOUND) {
-    return EFI_SUCCESS;
-  }
-
-  Status = gBS->LocateProtocol (
-                  &gEfiDevicePathFromTextProtocolGuid,
-                  NULL,
-                  (VOID **)&EfiDevicePathFromTextProtocol
-                  );
-  if (EFI_ERROR (Status)) {
-    //
-    // You must provide an implementation of DevicePathFromTextProtocol
-    // in your firmware (eg: DevicePathDxe)
-    //
-    DEBUG ((EFI_D_ERROR, "Error: Require DevicePathFromTextProtocol\n"));
-    return Status;
-  }
-  //
-  // We use the same default kernel.
-  //
-  BootDevicePath = EfiDevicePathFromTextProtocol->ConvertTextToDevicePath (
-                     (CHAR16*)PcdGetPtr (PcdDefaultBootDevicePath)
-                     );
-  if (BootDevicePath == NULL) {
-    return EFI_UNSUPPORTED;
-  }
-
-  DefaultBootArgument = (CHAR16*)PcdGetPtr (PcdDefaultBootArgument);
-  DefaultBootArgument1Size = StrSize (DefaultBootArgument) +
-                             (SKY2_MAC_ADDRESS_BOOTARG_LEN * sizeof (CHAR16));
-  DefaultBootArgument2Size = DefaultBootArgument1Size + StrSize 
(ExtraBootArgument);
-
-  Status = EFI_OUT_OF_RESOURCES;
-  DefaultBootArgument1 = AllocatePool (DefaultBootArgument1Size);
-  if (DefaultBootArgument1 == NULL) {
-    goto Error;
-  }
-  DefaultBootArgument2 = AllocatePool (DefaultBootArgument2Size);
-  if (DefaultBootArgument2 == NULL) {
-    goto Error;
-  }
-
-  SysPciGbeL = MmioRead32 (ARM_JUNO_SYS_PCIGBE_L);
-  SysPciGbeH = MmioRead32 (ARM_JUNO_SYS_PCIGBE_H);
-
-  UnicodeSPrint (
-    DefaultBootArgument1,
-    DefaultBootArgument1Size,
-    L"%s sky2.mac_address=0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,0x%02x",
-    DefaultBootArgument,
-    (SysPciGbeH >> 8 ) & 0xFF, (SysPciGbeH      ) & 0xFF,
-    (SysPciGbeL >> 24) & 0xFF, (SysPciGbeL >> 16) & 0xFF,
-    (SysPciGbeL >> 8 ) & 0xFF, (SysPciGbeL      ) & 0xFF
-    );
-
-  CopyMem (DefaultBootArgument2, DefaultBootArgument1, 
DefaultBootArgument1Size);
-  CopyMem (
-    (UINT8*)DefaultBootArgument2 + DefaultBootArgument1Size - sizeof (CHAR16),
-    ExtraBootArgument,
-    StrSize (ExtraBootArgument)
-  );
-
-  //
-  // Create Boot0001 environment variable
-  //
-  Status = BootOptionCreate (
-             L"Boot0001", LOAD_OPTION_ACTIVE | LOAD_OPTION_CATEGORY_BOOT,
-             L"Linux with A57x2", BootDevicePath,
-             (UINT8*)DefaultBootArgument1, DefaultBootArgument1Size
-             );
-  if (EFI_ERROR (Status)) {
-    ASSERT_EFI_ERROR (Status);
-    goto Error;
-  }
-
-  //
-  // Create Boot0002 environment variable
-  //
-  Status = BootOptionCreate (
-             L"Boot0002", LOAD_OPTION_ACTIVE | LOAD_OPTION_CATEGORY_BOOT,
-             L"Linux with A57x2_A53x4", BootDevicePath,
-             (UINT8*)DefaultBootArgument2, DefaultBootArgument2Size
-             );
-  if (EFI_ERROR (Status)) {
-    ASSERT_EFI_ERROR (Status);
-    goto Error;
-  }
-
-  //
-  // Add the new Boot Index to the list
-  //
-  BootOrder[0] = 1; // Boot0001
-  BootOrder[1] = 2; // Boot0002
-  Status = gRT->SetVariable (
-                  L"BootOrder",
-                  &gEfiGlobalVariableGuid,
-                  EFI_VARIABLE_NON_VOLATILE       |
-                  EFI_VARIABLE_BOOTSERVICE_ACCESS |
-                  EFI_VARIABLE_RUNTIME_ACCESS,
-                  sizeof (BootOrder),
-                  BootOrder
-                  );
-
-Error:
-  if (BootDevicePath != NULL) {
-    FreePool (BootDevicePath);
-  }
-  if (DefaultBootArgument1 != NULL) {
-    FreePool (DefaultBootArgument1);
-  }
-  if (DefaultBootArgument2 != NULL) {
-    FreePool (DefaultBootArgument2);
-  }
-
-  if (EFI_ERROR (Status)) {
-    DEBUG ((
-      EFI_D_ERROR,
-      "ArmJunoDxe - The setting of the default boot entries failed - %r\n",
-      Status
-      ));
-  }
-
-  return Status;
-}
-- 
2.1.4

_______________________________________________
edk2-devel mailing list
edk2-devel@lists.01.org
https://lists.01.org/mailman/listinfo/edk2-devel

Reply via email to