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/StdLib/BsdSocketLib/SocketInternals.h b/uefi/linaro-edk2/StdLib/BsdSocketLib/SocketInternals.h
new file mode 100644
index 0000000..c30f7fb
--- /dev/null
+++ b/uefi/linaro-edk2/StdLib/BsdSocketLib/SocketInternals.h
@@ -0,0 +1,205 @@
+/** @file

+  Definitions for the socket library.

+

+  Copyright (c) 2011, Intel Corporation

+  All rights reserved. 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 _SOCKET_INTERNALS_H_

+#define _SOCKET_INTERNALS_H_

+

+#include <Uefi.h>

+

+//----------------------------------------------------------------------

+//

+//  The following private files are required to support file descriptors

+//

+

+#include <kfile.h>

+#include <MainData.h>

+

+#include <Efi/SysEfi.h>

+

+//

+//  End of private files

+//

+//----------------------------------------------------------------------

+

+#include <Library/DebugLib.h>

+#include <Library/UefiBootServicesTableLib.h>

+#include <Library/UefiLib.h>

+

+#include <Protocol/EfiSocket.h>

+#include <Protocol/ServiceBinding.h>

+

+#include <sys/errno.h>

+#include <sys/poll.h>

+#include <sys/EfiSysCall.h>

+#include <sys/socket.h>

+

+//------------------------------------------------------------------------------

+//  Support Routines

+//------------------------------------------------------------------------------

+

+/**

+  Translate from the socket file descriptor to the socket protocol.

+

+  @param [in] s             Socket file descriptor returned from ::socket.

+

+  @param [in] ppDescriptor  Address to receive the descriptor structure

+                            address for the file

+  @param [in] pErrno        Address of the errno variable

+

+  @return   A pointer to the EFI_SOCKET_PROTOCOL structure or NULL if

+            an invalid file descriptor was passed in.

+

+ **/

+EFI_SOCKET_PROTOCOL *

+BslFdToSocketProtocol (

+  int s,

+  struct __filedes ** ppDescriptor,

+  int * pErrno

+  );

+

+/**

+  Close the socket

+

+  The BslSocketClose routine is called indirectly from the close file

+  system routine.  This routine closes the socket and returns the

+  status to the caller.

+

+  @param[in] pDescriptor Descriptor address for the file

+

+  @return   This routine returns 0 upon success and -1 upon failure.

+            In the case of failure, ::errno contains more information.

+

+**/

+int

+EFIAPI

+BslSocketClose (

+  struct __filedes * pDescriptor

+  );

+

+/**

+  Worker routine to close the socket.

+

+  @param[in] pSocketProtocol   Socket protocol structure address

+

+  @param[in] pErrno            Address of the ::errno variable

+

+  @retval EFI_SUCCESS   Successfully closed the socket

+

+**/

+EFI_STATUS

+BslSocketCloseWork (

+  IN EFI_SOCKET_PROTOCOL * pSocketProtocol,

+  IN int * pErrno

+  );

+

+/**

+  Poll the socket for activity

+

+  @param [in] pDescriptor Descriptor address for the file

+

+  @param [in] Events      Mask of events to detect

+

+  @return     Detected events for the socket

+

+ **/

+short

+EFIAPI

+BslSocketPoll (

+  IN struct __filedes * pDescriptor,

+  IN short Events

+  );

+

+/**

+  Build a file descriptor for a socket.

+

+  @param [in] pSocketProtocol   Socket protocol structure address

+

+  @param [in] pErrno            Address of the errno variable

+

+  @return  The file descriptor for the socket or -1 if an error occurs.

+

+ **/

+int

+BslSocketProtocolToFd (

+  IN EFI_SOCKET_PROTOCOL * pSocketProtocol,

+  IN int * pErrno

+  );

+

+/**

+  Read support routine for sockets

+

+  The BslSocketRead routine is called indirectly by the read file

+  system routine.  This routine is typically used for SOCK_STREAM

+  because it waits for receive data from the target system specified

+  in the ::connect call.

+

+  @param [in] pDescriptor   Descriptor address for the file

+  @param [in] pOffset       File offset

+  @param [in] LengthInBytes Number of bytes to read

+  @param [in] pBuffer       Address of the buffer to receive the data

+

+  @return   The number of bytes read or -1 if an error occurs.

+            In the case of an error, ::errno contains more details.

+

+**/

+ssize_t

+EFIAPI

+BslSocketRead (

+  struct __filedes *pDescriptor,

+  off_t * pOffset,

+  size_t LengthInBytes,

+  void * pBuffer

+  );

+

+/**

+  Write support routine for sockets

+

+  @param [in] pDescriptor   Descriptor address for the file

+  @param [in] pOffset       File offset

+  @param [in] LengthInBytes Number of bytes to write

+  @param [in] pBuffer       Address of the data

+

+  @return   The number of bytes written or -1 if an error occurs.

+            In the case of an error, ::errno contains more details.

+

+**/

+ssize_t

+EFIAPI

+BslSocketWrite (

+  struct __filedes *pDescriptor,

+  off_t * pOffset,

+  size_t LengthInBytes,

+  const void * pBuffer

+  );

+

+/**

+  Validate the socket's file descriptor

+

+  @param [in] pDescriptor Descriptor for the file

+

+  @param [in] pErrno      Address of the errno variable

+

+  @return   A pointer to the EFI_SOCKET_PROTOCOL structure or NULL if

+            an invalid file descriptor was passed in.

+

+ **/

+EFI_SOCKET_PROTOCOL *

+BslValidateSocketFd (

+  struct __filedes * pDescriptor,

+  int * pErrno

+  );

+

+//------------------------------------------------------------------------------

+

+#endif  //  _SOCKET_INTERNALS_H_