hikey: Add UEFI sources for reference

UEFI needs to be built outside Android build system.
Please follow the instructions in README.

The sources correspond to:
https://github.com/96boards/edk2/commit/14eae0c12e71fd33c4c0fc51e4475e8db02566cf
https://github.com/96boards/arm-trusted-firmware/commit/e9b4909dcd75fc4ae7041cfb83d28ab9adb7afdf
https://github.com/96boards/l-loader/commit/6b784ad5c4ab00e2b1c6f53cd5f74054e5d00a78
https://git.linaro.org/uefi/uefi-tools.git/commit/abe618f8ab72034fff1ce46c9c006a2c6bd40a7e

Change-Id: Ieeefdb63e673e0c8e64e0a1f02c7bddc63b2c7fb
Signed-off-by: Vishal Bhoj <vishal.bhoj@linaro.org>
diff --git a/uefi/linaro-edk2/MdeModulePkg/Universal/ResetSystemRuntimeDxe/ResetSystem.c b/uefi/linaro-edk2/MdeModulePkg/Universal/ResetSystemRuntimeDxe/ResetSystem.c
new file mode 100644
index 0000000..aa1ca16
--- /dev/null
+++ b/uefi/linaro-edk2/MdeModulePkg/Universal/ResetSystemRuntimeDxe/ResetSystem.c
@@ -0,0 +1,155 @@
+/** @file

+  Reset Architectural Protocol implementation

+

+  Copyright (c) 2006 - 2012, Intel Corporation. All rights reserved.<BR>

+

+  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 "ResetSystem.h"

+

+//

+// The handle onto which the Reset Architectural Protocol is installed

+//

+EFI_HANDLE  mResetHandle = NULL;

+

+/**

+  The driver's entry point.

+

+  It initializes the Reset Architectural Protocol.

+

+  @param[in] ImageHandle  The firmware allocated handle for the EFI image.  

+  @param[in] SystemTable  A pointer to the EFI System Table.

+  

+  @retval EFI_SUCCESS     The entry point is executed successfully.

+  @retval other           Cannot install ResetArch protocol.

+

+**/

+EFI_STATUS

+EFIAPI

+InitializeResetSystem (

+  IN EFI_HANDLE        ImageHandle,

+  IN EFI_SYSTEM_TABLE  *SystemTable

+  )

+{

+  EFI_STATUS  Status;

+

+  //

+  // Make sure the Reset Architectural Protocol is not already installed in the system

+  //

+  ASSERT_PROTOCOL_ALREADY_INSTALLED (NULL, &gEfiResetArchProtocolGuid);

+

+  //

+  // Hook the runtime service table

+  //

+  gRT->ResetSystem = ResetSystem;

+

+  //

+  // Now install the Reset RT AP on a new handle

+  //

+  Status = gBS->InstallMultipleProtocolInterfaces (

+                  &mResetHandle,

+                  &gEfiResetArchProtocolGuid,

+                  NULL,

+                  NULL

+                  );

+  ASSERT_EFI_ERROR (Status);

+

+  return Status;

+}

+

+/**

+  Put the system into S3 power state.                            

+**/

+VOID

+DoS3 (

+  VOID

+  )

+{

+  EnterS3WithImmediateWake ();

+

+  //

+  // Should not return

+  //

+  CpuDeadLoop ();

+}

+

+/**

+  Resets the entire platform.

+

+  @param[in] ResetType          The type of reset to perform.

+  @param[in] ResetStatus        The status code for the reset.

+  @param[in] DataSize           The size, in bytes, of WatchdogData.

+  @param[in] ResetData          For a ResetType of EfiResetCold, EfiResetWarm, or

+                                EfiResetShutdown the data buffer starts with a Null-terminated

+                                string, optionally followed by additional binary data.

+

+**/

+VOID

+EFIAPI

+ResetSystem (

+  IN EFI_RESET_TYPE   ResetType,

+  IN EFI_STATUS       ResetStatus,

+  IN UINTN            DataSize,

+  IN VOID             *ResetData OPTIONAL

+  )

+{

+  EFI_STATUS    Status;

+  UINTN         Size;

+  UINTN         CapsuleDataPtr;

+  

+  //

+  // Indicate reset system runtime service is called.

+  //

+  REPORT_STATUS_CODE (EFI_PROGRESS_CODE, (EFI_SOFTWARE_EFI_RUNTIME_SERVICE | EFI_SW_RS_PC_RESET_SYSTEM));

+

+  switch (ResetType) {

+  case EfiResetWarm:

+

+    //

+    //Check if there are pending capsules to process

+    //

+    Size = sizeof (CapsuleDataPtr);

+    Status =  EfiGetVariable (

+                 EFI_CAPSULE_VARIABLE_NAME,

+                 &gEfiCapsuleVendorGuid,

+                 NULL,

+                 &Size,

+                 (VOID *) &CapsuleDataPtr

+                 );

+

+    if (Status == EFI_SUCCESS) {

+      //

+      //Process capsules across a system reset.

+      //

+      DoS3();

+    }

+

+    ResetWarm ();

+

+    break;

+

+ case EfiResetCold:

+    ResetCold ();

+    break;

+

+  case EfiResetShutdown:

+    ResetShutdown ();

+    return ;

+

+  default:

+    return ;

+  }

+

+  //

+  // Given we should have reset getting here would be bad

+  //

+  ASSERT (FALSE);

+}

diff --git a/uefi/linaro-edk2/MdeModulePkg/Universal/ResetSystemRuntimeDxe/ResetSystem.h b/uefi/linaro-edk2/MdeModulePkg/Universal/ResetSystemRuntimeDxe/ResetSystem.h
new file mode 100644
index 0000000..c3a2a7f
--- /dev/null
+++ b/uefi/linaro-edk2/MdeModulePkg/Universal/ResetSystemRuntimeDxe/ResetSystem.h
@@ -0,0 +1,74 @@
+/** @file

+

+  Copyright (c) 2006 - 2012, Intel Corporation. All rights reserved.<BR>

+

+  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.

+

+**/

+

+#ifndef _RESET_SYSTEM_H_

+#define _RESET_SYSTEM_H_

+

+

+#include <PiDxe.h>

+

+#include <Protocol/Reset.h>

+#include <Guid/CapsuleVendor.h>

+

+#include <Library/BaseLib.h>

+#include <Library/DebugLib.h>

+#include <Library/UefiLib.h>

+#include <Library/IoLib.h>

+#include <Library/UefiDriverEntryPoint.h>

+#include <Library/UefiBootServicesTableLib.h>

+#include <Library/UefiRuntimeLib.h>

+#include <Library/UefiRuntimeServicesTableLib.h>

+#include <Library/ResetSystemLib.h>

+#include <Library/ReportStatusCodeLib.h>

+

+/**

+  The driver's entry point.

+

+  It initializes the Reset Architectural Protocol.

+

+  @param[in] ImageHandle  The firmware allocated handle for the EFI image.  

+  @param[in] SystemTable  A pointer to the EFI System Table.

+  

+  @retval EFI_SUCCESS     The entry point is executed successfully.

+  @retval other           Cannot install ResetArch protocol.

+

+**/

+EFI_STATUS

+EFIAPI

+InitializeResetSystem (

+  IN EFI_HANDLE        ImageHandle,

+  IN EFI_SYSTEM_TABLE  *SystemTable

+  );

+

+/**

+  Resets the entire platform.

+

+  @param[in] ResetType          The type of reset to perform.

+  @param[in] ResetStatus        The status code for the reset.

+  @param[in] DataSize           The size, in bytes, of WatchdogData.

+  @param[in] ResetData          For a ResetType of EfiResetCold, EfiResetWarm, or

+                                EfiResetShutdown the data buffer starts with a Null-terminated

+                                string, optionally followed by additional binary data.

+

+**/

+VOID

+EFIAPI

+ResetSystem (

+  IN EFI_RESET_TYPE   ResetType,

+  IN EFI_STATUS       ResetStatus,

+  IN UINTN            DataSize,

+  IN VOID             *ResetData OPTIONAL

+  );

+

+#endif

diff --git a/uefi/linaro-edk2/MdeModulePkg/Universal/ResetSystemRuntimeDxe/ResetSystemRuntimeDxe.inf b/uefi/linaro-edk2/MdeModulePkg/Universal/ResetSystemRuntimeDxe/ResetSystemRuntimeDxe.inf
new file mode 100644
index 0000000..7ef52b3
--- /dev/null
+++ b/uefi/linaro-edk2/MdeModulePkg/Universal/ResetSystemRuntimeDxe/ResetSystemRuntimeDxe.inf
@@ -0,0 +1,65 @@
+## @file

+# This driver implements Reset Architectural Protocol.

+#

+# Copyright (c) 2006 - 2014, Intel Corporation. All rights reserved.<BR>

+#

+# 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.

+#

+##

+

+[Defines]

+  INF_VERSION                    = 0x00010005

+  BASE_NAME                      = ResetSystemRuntimeDxe

+  MODULE_UNI_FILE                = ResetSystemRuntimeDxe.uni

+  FILE_GUID                      = 4B28E4C7-FF36-4e10-93CF-A82159E777C5

+  MODULE_TYPE                    = DXE_RUNTIME_DRIVER

+  VERSION_STRING                 = 1.0

+

+  ENTRY_POINT                    = InitializeResetSystem

+

+#

+# The following information is for reference only and not required by the build tools.

+#

+#  VALID_ARCHITECTURES           = IA32 X64 EBC

+#

+

+[Sources]

+  ResetSystem.h

+  ResetSystem.c

+

+[Packages]

+  MdePkg/MdePkg.dec

+  MdeModulePkg/MdeModulePkg.dec

+

+[LibraryClasses]

+  ResetSystemLib

+  UefiRuntimeServicesTableLib

+  UefiRuntimeLib

+  UefiBootServicesTableLib

+  UefiDriverEntryPoint

+  IoLib

+  UefiLib

+  DebugLib

+  BaseLib

+  ReportStatusCodeLib

+

+

+[Guids]

+  gEfiCapsuleVendorGuid                         ## SOMETIMES_CONSUMES   ## Variable:L"CapsuleUpdateData"

+

+

+[Protocols]

+  gEfiResetArchProtocolGuid                     ## PRODUCES

+

+

+[Depex]

+  TRUE

+

+[UserExtensions.TianoCore."ExtraFiles"]

+  ResetSystemRuntimeDxeExtra.uni

diff --git a/uefi/linaro-edk2/MdeModulePkg/Universal/ResetSystemRuntimeDxe/ResetSystemRuntimeDxe.uni b/uefi/linaro-edk2/MdeModulePkg/Universal/ResetSystemRuntimeDxe/ResetSystemRuntimeDxe.uni
new file mode 100644
index 0000000..b47b59e
--- /dev/null
+++ b/uefi/linaro-edk2/MdeModulePkg/Universal/ResetSystemRuntimeDxe/ResetSystemRuntimeDxe.uni
Binary files differ
diff --git a/uefi/linaro-edk2/MdeModulePkg/Universal/ResetSystemRuntimeDxe/ResetSystemRuntimeDxeExtra.uni b/uefi/linaro-edk2/MdeModulePkg/Universal/ResetSystemRuntimeDxe/ResetSystemRuntimeDxeExtra.uni
new file mode 100644
index 0000000..b20565f
--- /dev/null
+++ b/uefi/linaro-edk2/MdeModulePkg/Universal/ResetSystemRuntimeDxe/ResetSystemRuntimeDxeExtra.uni
Binary files differ