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/HiiResourcesSampleDxe/HiiResourcesSample.c b/uefi/linaro-edk2/MdeModulePkg/Universal/HiiResourcesSampleDxe/HiiResourcesSample.c
new file mode 100644
index 0000000..adce780
--- /dev/null
+++ b/uefi/linaro-edk2/MdeModulePkg/Universal/HiiResourcesSampleDxe/HiiResourcesSample.c
@@ -0,0 +1,152 @@
+/** @file

+This is an example of how a driver retrieve HII data using HII Package List

+Protocol, and how to publish the HII data.

+

+Copyright (c) 2009 - 2011, 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 <Uefi.h>

+#include <Guid/HiiResourceSampleHii.h>

+#include <Protocol/HiiPackageList.h>

+#include <Library/DevicePathLib.h>

+#include <Library/UefiDriverEntryPoint.h>

+#include <Library/UefiBootServicesTableLib.h>

+#include <Library/UefiHiiServicesLib.h>

+#include <Library/HiiLib.h>

+

+#pragma pack(1)

+///

+/// HII specific Vendor Device Path definition.

+///

+typedef struct {

+  VENDOR_DEVICE_PATH             VendorDevicePath;

+  EFI_DEVICE_PATH_PROTOCOL       End;

+} HII_VENDOR_DEVICE_PATH;

+#pragma pack()

+

+

+EFI_HII_HANDLE  mHiiHandle = NULL;

+EFI_HANDLE      mDriverHandle = NULL;

+

+HII_VENDOR_DEVICE_PATH  mHiiVendorDevicePath = {

+  {

+    {

+      HARDWARE_DEVICE_PATH,

+      HW_VENDOR_DP,

+      {

+        (UINT8) (sizeof (VENDOR_DEVICE_PATH)),

+        (UINT8) ((sizeof (VENDOR_DEVICE_PATH)) >> 8)

+      }

+    },

+    HII_RESOURCE_SAMPLE_FORM_SET_GUID

+  },

+  {

+    END_DEVICE_PATH_TYPE,

+    END_ENTIRE_DEVICE_PATH_SUBTYPE,

+    { 

+      (UINT8) (END_DEVICE_PATH_LENGTH),

+      (UINT8) ((END_DEVICE_PATH_LENGTH) >> 8)

+    }

+  }

+};

+

+/**

+  Main entry for this driver.

+  

+  @param[in] ImageHandle     Image handle this driver.

+  @param[in] SystemTable     Pointer to SystemTable.

+

+  @retval EFI_SUCESS     This function always complete successfully.

+

+**/

+EFI_STATUS

+EFIAPI

+HiiResourcesSampleInit (

+  IN EFI_HANDLE                   ImageHandle,

+  IN EFI_SYSTEM_TABLE             *SystemTable

+  )

+{

+  EFI_STATUS                      Status;

+  EFI_HII_PACKAGE_LIST_HEADER     *PackageList;

+

+  //

+  // Retrieve HII package list from ImageHandle

+  //

+  Status = gBS->OpenProtocol (

+                  ImageHandle,

+                  &gEfiHiiPackageListProtocolGuid,

+                  (VOID **) &PackageList,

+                  ImageHandle,

+                  NULL,

+                  EFI_OPEN_PROTOCOL_GET_PROTOCOL

+                  );

+  if (EFI_ERROR (Status)) {

+    return Status;

+  }

+

+  //

+  // Publish sample Fromset

+  //

+  Status = gBS->InstallProtocolInterface (

+                  &mDriverHandle,

+                  &gEfiDevicePathProtocolGuid,

+                  EFI_NATIVE_INTERFACE,

+                  &mHiiVendorDevicePath

+                  );

+  if (EFI_ERROR (Status)) {

+    return Status;

+  }

+

+  //

+  // Publish HII package list to HII Database.

+  //

+  Status = gHiiDatabase->NewPackageList (

+                          gHiiDatabase,

+                          PackageList,

+                          mDriverHandle,

+                          &mHiiHandle

+                          );

+  if (EFI_ERROR (Status)) {

+    return Status;

+  }

+

+  return EFI_SUCCESS;

+}

+

+/**

+  Unloads the application and its installed protocol.

+

+  @param[in]  ImageHandle       Handle that identifies the image to be unloaded.

+

+  @retval EFI_SUCCESS           The image has been unloaded.

+**/

+EFI_STATUS

+EFIAPI

+HiiResourcesSampleUnload (

+  IN EFI_HANDLE  ImageHandle

+  )

+{

+  if (mDriverHandle != NULL) {

+    gBS->UninstallProtocolInterface (

+            mDriverHandle,

+            &gEfiDevicePathProtocolGuid,

+            &mHiiVendorDevicePath

+           );

+    mDriverHandle = NULL;

+  }

+

+  if (mHiiHandle != NULL) {

+    HiiRemovePackages (mHiiHandle);

+    mHiiHandle = NULL;

+  }

+

+  return EFI_SUCCESS;

+}