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/Nt32Pkg/WinNtBusDriverDxe/WinNtBusDriver.h b/uefi/linaro-edk2/Nt32Pkg/WinNtBusDriverDxe/WinNtBusDriver.h
new file mode 100644
index 0000000..e7a5c0b
--- /dev/null
+++ b/uefi/linaro-edk2/Nt32Pkg/WinNtBusDriverDxe/WinNtBusDriver.h
@@ -0,0 +1,323 @@
+/**@file

+

+Copyright (c) 2006, 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.

+

+Module Name:

+

+  WinNtBusDriver.h

+

+Abstract:

+

+This following section documents the envirnoment variables for the Win NT

+build.  These variables are used to define the (virtual) hardware

+configuration of the NT environment

+

+A ! can be used to seperate multiple instances in a variable. Each

+instance represents a seperate hardware device.

+

+EFI_WIN_NT_PHYSICAL_DISKS - maps to drives on your system

+EFI_WIN_NT_VIRTUAL_DISKS  - maps to a device emulated by a file

+EFI_WIN_NT_FILE_SYSTEM    - mouts a directory as a file system

+EFI_WIN_NT_CONSOLE        - make a logical comand line window (only one!)

+EFI_WIN_NT_GOP            - Builds GOP Windows of Width and Height

+EFI_WIN_NT_SERIAL_PORT    - maps physical serial ports

+EFI_WIN_NT_PASS_THRU      - associates a device with our PCI support

+

+ <F>ixed       - Fixed disk like a hard drive.

+ <R>emovable   - Removable media like a floppy or CD-ROM.

+ Read <O>nly   - Write protected device.

+ Read <W>rite  - Read write device.

+ <block count> - Decimal number of blocks a device supports.

+ <block size>  - Decimal number of bytes per block.

+

+ NT envirnonment variable contents. '<' and '>' are not part of the variable,

+ they are just used to make this help more readable. There should be no

+ spaces between the ';'. Extra spaces will break the variable. A '!' is

+ used to seperate multiple devices in a variable.

+

+ EFI_WIN_NT_VIRTUAL_DISKS =

+   <F | R><O | W>;<block count>;<block size>[!...]

+

+ EFI_WIN_NT_PHYSICAL_DISKS =

+   <drive letter>:<F | R><O | W>;<block count>;<block size>[!...]

+

+ Virtual Disks: These devices use a file to emulate a hard disk or removable

+                media device.

+

+   Thus a 20 MB emulated hard drive would look like:

+   EFI_WIN_NT_VIRTUAL_DISKS=FW;40960;512

+

+   A 1.44MB emulated floppy with a block size of 1024 would look like:

+   EFI_WIN_NT_VIRTUAL_DISKS=RW;1440;1024

+

+ Physical Disks: These devices use NT to open a real device in your system

+

+   Thus a 120 MB floppy would look like:

+   EFI_WIN_NT_PHYSICAL_DISKS=B:RW;245760;512

+

+   Thus a standard CD-ROM floppy would look like:

+   EFI_WIN_NT_PHYSICAL_DISKS=Z:RO;307200;2048

+

+ EFI_WIN_NT_FILE_SYSTEM =

+   <directory path>[!...]

+

+   Mounting the two directories C:\FOO and C:\BAR would look like:

+   EFI_WIN_NT_FILE_SYSTEM=c:\foo!c:\bar

+

+ EFI_WIN_NT_CONSOLE =

+   <window title>

+

+   Declaring a text console window with the title "My EFI Console" woild look like:

+   EFI_WIN_NT_CONSOLE=My EFI Console

+

+ EFI_WIN_NT_GOP =

+   <width> <height>[!...]

+

+   Declaring a two GOP windows with resolutions of 800x600 and 1024x768 would look like:

+   Example : EFI_WIN_NT_GOP=800 600!1024 768

+

+ EFI_WIN_NT_SERIAL_PORT =

+   <port name>[!...]

+

+   Declaring two serial ports on COM1 and COM2 would look like:

+   Example : EFI_WIN_NT_SERIAL_PORT=COM1!COM2

+

+ EFI_WIN_NT_PASS_THROUGH =

+   <BaseAddress>;<Bus#>;<Device#>;<Function#>

+

+   Declaring a base address of 0xE0000000 (used for PCI Express devices)

+   and having NT32 talk to a device located at bus 0, device 1, function 0:

+   Example : EFI_WIN_NT_PASS_THROUGH=E000000;0;1;0

+

+---*/

+

+#ifndef __NT_BUS_DRIVER_H__

+#define __NT_BUS_DRIVER_H__

+

+

+//

+// The package level header files this module uses

+//

+#include <Uefi.h>

+#include <WinNtDxe.h>

+//

+// The protocols, PPI and GUID defintions for this module

+//

+#include <Protocol/WinNtIo.h>

+#include <Protocol/ComponentName.h>

+#include <Protocol/WinNtThunk.h>

+#include <Protocol/DriverBinding.h>

+#include <Protocol/DevicePath.h>

+//

+// The Library classes this module consumes

+//

+#include <Library/DebugLib.h>

+#include <Library/BaseLib.h>

+#include <Library/UefiDriverEntryPoint.h>

+#include <Library/UefiLib.h>

+#include <Library/PcdLib.h>

+#include <Library/BaseMemoryLib.h>

+#include <Library/UefiBootServicesTableLib.h>

+#include <Library/DevicePathLib.h>

+#include <Library/MemoryAllocationLib.h>

+

+//

+// WinNt Bus Driver Global Variables

+//

+extern EFI_DRIVER_BINDING_PROTOCOL   gWinNtBusDriverBinding;

+extern EFI_COMPONENT_NAME_PROTOCOL   gWinNtBusDriverComponentName;

+extern EFI_COMPONENT_NAME2_PROTOCOL  gWinNtBusDriverComponentName2;

+

+//

+// WinNt Bus Controller Structure

+//

+#define WIN_NT_BUS_DEVICE_SIGNATURE SIGNATURE_32 ('N', 'T', 'B', 'D')

+

+typedef struct {

+  UINT64                    Signature;

+  EFI_UNICODE_STRING_TABLE  *ControllerNameTable;

+} WIN_NT_BUS_DEVICE;

+

+//

+// WinNt Child Device Controller Structure

+//

+#define WIN_NT_IO_DEVICE_SIGNATURE  SIGNATURE_32 ('N', 'T', 'V', 'D')

+

+typedef struct {

+  UINT64                    Signature;

+  EFI_HANDLE                Handle;

+  EFI_WIN_NT_IO_PROTOCOL    WinNtIo;

+  EFI_DEVICE_PATH_PROTOCOL  *DevicePath;

+

+  //

+  // Private data about the parent

+  //

+  EFI_HANDLE                ControllerHandle;

+  EFI_DEVICE_PATH_PROTOCOL  *ParentDevicePath;

+

+  EFI_UNICODE_STRING_TABLE  *ControllerNameTable;

+

+} WIN_NT_IO_DEVICE;

+

+#define WIN_NT_IO_DEVICE_FROM_THIS(a) \

+  CR(a, WIN_NT_IO_DEVICE, WinNtIo, WIN_NT_IO_DEVICE_SIGNATURE)

+

+//

+// This is the largest env variable we can parse

+//

+#define MAX_NT_ENVIRNMENT_VARIABLE_LENGTH 512

+

+typedef struct {

+  UINTN               Token;

+  EFI_GUID            *DevicePathGuid;

+} NT_PCD_ENTRY;

+

+typedef struct {

+  VENDOR_DEVICE_PATH  VendorDevicePath;

+  UINT32              Instance;

+} WIN_NT_VENDOR_DEVICE_PATH_NODE;

+

+EFI_STATUS

+EFIAPI

+CpuIoInitialize (

+  IN EFI_HANDLE                            ImageHandle,

+  IN EFI_SYSTEM_TABLE                      *SystemTable

+  )

+/*++

+

+Routine Description:

+

+  TODO: Add function description

+

+Arguments:

+

+  ImageHandle - TODO: add argument description

+  SystemTable - TODO: add argument description

+

+Returns:

+

+  TODO: add return values

+

+**/

+;

+

+//

+// Driver Binding Protocol function prototypes

+//

+EFI_STATUS

+EFIAPI

+WinNtBusDriverBindingSupported (

+  IN EFI_DRIVER_BINDING_PROTOCOL    *This,

+  IN EFI_HANDLE                     Handle,

+  IN EFI_DEVICE_PATH_PROTOCOL       *RemainingDevicePath

+  )

+/*++

+

+Routine Description:

+

+  TODO: Add function description

+

+Arguments:

+

+  This                - TODO: add argument description

+  Handle              - TODO: add argument description

+  RemainingDevicePath - TODO: add argument description

+

+Returns:

+

+  TODO: add return values

+

+--*/

+;

+

+EFI_STATUS

+EFIAPI

+WinNtBusDriverBindingStart (

+  IN EFI_DRIVER_BINDING_PROTOCOL    *This,

+  IN EFI_HANDLE                     ParentHandle,

+  IN EFI_DEVICE_PATH_PROTOCOL       *RemainingDevicePath

+  )

+/*++

+

+Routine Description:

+

+  TODO: Add function description

+

+Arguments:

+

+  This                - TODO: add argument description

+  ParentHandle        - TODO: add argument description

+  RemainingDevicePath - TODO: add argument description

+

+Returns:

+

+  TODO: add return values

+

+--*/

+;

+

+EFI_STATUS

+EFIAPI

+WinNtBusDriverBindingStop (

+  IN  EFI_DRIVER_BINDING_PROTOCOL  *This,

+  IN  EFI_HANDLE                   Handle,

+  IN  UINTN                        NumberOfChildren,

+  IN  EFI_HANDLE                   *ChildHandleBuffer

+  )

+/*++

+

+Routine Description:

+

+  TODO: Add function description

+

+Arguments:

+

+  This              - TODO: add argument description

+  Handle            - TODO: add argument description

+  NumberOfChildren  - TODO: add argument description

+  ChildHandleBuffer - TODO: add argument description

+

+Returns:

+

+  TODO: add return values

+

+--*/

+;

+

+//

+// WinNt Bus Driver private worker functions

+//

+EFI_DEVICE_PATH_PROTOCOL  *

+WinNtBusCreateDevicePath (

+  IN  EFI_DEVICE_PATH_PROTOCOL  *RootDevicePath,

+  IN  EFI_GUID                  *Guid,

+  IN  UINT16                    InstanceNumber

+  )

+/*++

+

+Routine Description:

+

+  TODO: Add function description

+

+Arguments:

+

+  RootDevicePath  - TODO: add argument description

+  Guid            - TODO: add argument description

+  InstanceNumber  - TODO: add argument description

+

+Returns:

+

+  TODO: add return values

+

+--*/

+;

+

+

+#endif