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/getsockname.c b/uefi/linaro-edk2/StdLib/BsdSocketLib/getsockname.c
new file mode 100644
index 0000000..1161449
--- /dev/null
+++ b/uefi/linaro-edk2/StdLib/BsdSocketLib/getsockname.c
@@ -0,0 +1,74 @@
+/** @file

+  Implement the getsockname API.

+

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

+

+**/

+

+#include <SocketInternals.h>

+

+

+/**

+  Get the local socket address.

+

+  The getsockname routine retrieves the local system address from the socket.

+

+  The

+  <a href="http://pubs.opengroup.org/onlinepubs/9699919799/functions/getsockname.html#">POSIX</a>

+  documentation is available online.

+

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

+

+  @param [out] address  Network address to receive the local system address

+

+  @param [in] address_len Length of the local network address structure

+

+  @return     This routine returns zero (0) if successful or -1 when an error occurs.

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

+

+ **/

+int

+getsockname (

+  int s,

+  struct sockaddr * address,

+  socklen_t * address_len

+  )

+{

+  int RetVal;

+  EFI_SOCKET_PROTOCOL * pSocketProtocol;

+  EFI_STATUS Status;

+

+  //

+  //  Assume failure

+  //

+  RetVal = -1;

+

+  //

+  //  Locate the context for this socket

+  //

+  pSocketProtocol = BslFdToSocketProtocol ( s, NULL, &errno );

+  if ( NULL != pSocketProtocol ) {

+    //

+    //  Get the local socket address

+    //

+    Status = pSocketProtocol->pfnGetLocal ( pSocketProtocol,

+                                            address,

+                                            address_len,

+                                            &errno );

+    if ( !EFI_ERROR ( Status )) {

+      RetVal = 0;

+    }

+  }

+

+  //

+  //  Return the operation status

+  //

+  return RetVal;

+}