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/MdePkg/Include/Library/UefiDecompressLib.h b/uefi/linaro-edk2/MdePkg/Include/Library/UefiDecompressLib.h
new file mode 100644
index 0000000..de4e888
--- /dev/null
+++ b/uefi/linaro-edk2/MdePkg/Include/Library/UefiDecompressLib.h
@@ -0,0 +1,108 @@
+/** @file

+  Provides services to decompress a buffer using the UEFI Decompress algorithm.

+

+  The UEFI Decompress Library enables the decompression of objects that 

+  were compressed using the UEFI compression scheme. The UEFI Decompress 

+  Library is independent of environment and requires the caller to allocate 

+  all required memory buffers.

+

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

+#define __UEFI_DECPOMPRESS_LIB_H__

+

+/**

+  Given a compressed source buffer, this function retrieves the size of 

+  the uncompressed buffer and the size of the scratch buffer required 

+  to decompress the compressed source buffer.

+

+  Retrieves the size of the uncompressed buffer and the temporary scratch buffer 

+  required to decompress the buffer specified by Source and SourceSize.

+  If the size of the uncompressed buffer or the size of the scratch buffer cannot

+  be determined from the compressed data specified by Source and SourceData, 

+  then RETURN_INVALID_PARAMETER is returned.  Otherwise, the size of the uncompressed

+  buffer is returned in DestinationSize, the size of the scratch buffer is returned

+  in ScratchSize, and RETURN_SUCCESS is returned.

+  This function does not have scratch buffer available to perform a thorough 

+  checking of the validity of the source data.  It just retrieves the "Original Size"

+  field from the beginning bytes of the source data and output it as DestinationSize.

+  And ScratchSize is specific to the decompression implementation.

+

+  If Source is NULL, then ASSERT().

+  If DestinationSize is NULL, then ASSERT().

+  If ScratchSize is NULL, then ASSERT().

+

+  @param  Source          The source buffer containing the compressed data.

+  @param  SourceSize      The size, in bytes, of the source buffer.

+  @param  DestinationSize A pointer to the size, in bytes, of the uncompressed buffer

+                          that will be generated when the compressed buffer specified

+                          by Source and SourceSize is decompressed.

+  @param  ScratchSize     A pointer to the size, in bytes, of the scratch buffer that

+                          is required to decompress the compressed buffer specified 

+                          by Source and SourceSize.

+

+  @retval  RETURN_SUCCESS The size of the uncompressed data was returned 

+                          in DestinationSize and the size of the scratch 

+                          buffer was returned in ScratchSize.

+  @retval  RETURN_INVALID_PARAMETER 

+                          The size of the uncompressed data or the size of 

+                          the scratch buffer cannot be determined from 

+                          the compressed data specified by Source 

+                          and SourceSize.

+**/

+RETURN_STATUS

+EFIAPI

+UefiDecompressGetInfo (

+  IN  CONST VOID  *Source,

+  IN  UINT32      SourceSize,

+  OUT UINT32      *DestinationSize,

+  OUT UINT32      *ScratchSize

+  );

+

+/**

+  Decompresses a compressed source buffer.

+

+  Extracts decompressed data to its original form.

+  This function is designed so that the decompression algorithm can be implemented

+  without using any memory services.  As a result, this function is not allowed to

+  call any memory allocation services in its implementation.  It is the caller's 

+  responsibility to allocate and free the Destination and Scratch buffers.

+  If the compressed source data specified by Source is successfully decompressed 

+  into Destination, then RETURN_SUCCESS is returned.  If the compressed source data 

+  specified by Source is not in a valid compressed data format,

+  then RETURN_INVALID_PARAMETER is returned.

+

+  If Source is NULL, then ASSERT().

+  If Destination is NULL, then ASSERT().

+  If the required scratch buffer size > 0 and Scratch is NULL, then ASSERT().

+

+  @param  Source      The source buffer containing the compressed data.

+  @param  Destination The destination buffer to store the decompressed data

+  @param  Scratch     A temporary scratch buffer that is used to perform the decompression.

+                      This is an optional parameter that may be NULL if the 

+                      required scratch buffer size is 0.

+                     

+  @retval  RETURN_SUCCESS Decompression completed successfully, and 

+                          the uncompressed buffer is returned in Destination.

+  @retval  RETURN_INVALID_PARAMETER 

+                          The source buffer specified by Source is corrupted 

+                          (not in a valid compressed format).

+**/

+RETURN_STATUS

+EFIAPI

+UefiDecompress (

+  IN CONST VOID  *Source,

+  IN OUT VOID    *Destination,

+  IN OUT VOID    *Scratch  OPTIONAL

+  );

+

+#endif