linaro-vendor-package: Add hikey960/hikey binary objects
Add bootloader objects and mali libraries and TI firmware
for both hikey and hikey960 to the linaro-vendor-package.
Signed-off-by: John Stultz <john.stultz@linaro.org>
diff --git a/generate_vendor_package.sh b/generate_vendor_package.sh
index 7cad923..6cc9266 100755
--- a/generate_vendor_package.sh
+++ b/generate_vendor_package.sh
@@ -11,7 +11,7 @@
TARGET_DIR=out/vendor/linaro/
-DEV_TARGETS="db845c rb5 linux-firmware"
+DEV_TARGETS="db845c rb5 linux-firmware hikey960"
for DEV in $DEV_TARGETS; do
DEV_TARGET_DIR=$TARGET_DIR/$DEV/$VER
diff --git a/src/hikey960/bootloader/README b/src/hikey960/bootloader/README
new file mode 100644
index 0000000..22dea18
--- /dev/null
+++ b/src/hikey960/bootloader/README
@@ -0,0 +1,53 @@
+These instructions will help you in flashing the prebuilt bootloader
+images and AOSP images (built from sources) on hikey960.
+
+There are two versions of HiKey960: v1 and v2.
+* v1 is using Jumper (J2001)
+* v2 is using DIP switch (SW2201).
+Both are located at the bottom side of the board.
+
+Jumper Pin 1-2 = DIP switch 1 (AutoBoot)
+Jumper Pin 3-4 = DIP switch 2 (Recovery Mode)
+JUmper Pin 5-6 = DIP switch 3 (Fastboot Mode)
+
+* Always power off the board before changing the switches or
+ jumpers.
+* To boot into fastboot mode set switch 1 & 3 to ON state and
+ switch 2 to OFF state.
+* To boot into normal mode set switch 1 to ON and switch 2 & 3 to
+ OFF state.
+
+To flash the OS to the board, set the jumpers to fastboot mode, and
+power on the device. Connect a USB-C cable to the OTG port and your
+host device.
+
+On your host device, run the flash-all.sh script to update boot files
+using fastboot. It assumes that you have already build hikey960 AOSP
+images locally, or are flashing a factory image.
+$ ./flash-all.sh
+
+After that completes, power the board off, and set the switches back
+to normal mode and boot the device.
+
+Known Issues:
+-------------
+When flashing ontop of the HiSi bootloader, you may see the following
+failure:
+ sending 'xloader' (151 KB)...
+ OKAY [ 0.006s]
+ writing 'xloader'...
+ FAILED (remote: flash write back vrl failure)
+
+This is a transient error and can be ignored.
+
+
+Trouble shooting:
+-----------------
+If you have any trouble booting the device after running ./flash-all.sh
+you may need to do a board recovery. This is hopefully uncommon, but
+may be necessary in some cases (like if your board has pre-release
+firmware on it). In this case clone the git project here:
+ https://github.com/96boards-hikey/tools-images-hikey960/
+
+And follow the instructions in the README.md
+ https://github.com/96boards-hikey/tools-images-hikey960/blob/master/README.md
diff --git a/src/hikey960/bootloader/fip.bin b/src/hikey960/bootloader/fip.bin
new file mode 100644
index 0000000..dcf61e2
--- /dev/null
+++ b/src/hikey960/bootloader/fip.bin
Binary files differ
diff --git a/src/hikey960/bootloader/flash-all.sh b/src/hikey960/bootloader/flash-all.sh
new file mode 100755
index 0000000..70bb432
--- /dev/null
+++ b/src/hikey960/bootloader/flash-all.sh
@@ -0,0 +1,75 @@
+#!/bin/bash
+
+INSTALLER_DIR="`dirname ${0}`"
+ECHO_PREFIX="=== "
+
+# for cases that don't run "lunch hikey960-userdebug"
+if [ -z "${ANDROID_BUILD_TOP}" ]; then
+ ANDROID_BUILD_TOP=${INSTALLER_DIR}/../../../../../
+ ANDROID_PRODUCT_OUT="${ANDROID_BUILD_TOP}/out/target/product/hikey960"
+fi
+
+if [ ! -d "${ANDROID_PRODUCT_OUT}" ]; then
+ echo ${ECHO_PREFIX}"error in locating out directory, check if it exist"
+ exit
+fi
+
+echo ${ECHO_PREFIX}"android out dir:${ANDROID_PRODUCT_OUT}"
+
+function check_partition_table_version () {
+ fastboot erase reserved
+ if [ $? -eq 0 ]
+ then
+ IS_PTABLE_1MB_ALIGNED=true
+ else
+ IS_PTABLE_1MB_ALIGNED=false
+ fi
+}
+
+function flashing_atf_uefi () {
+ fastboot flash ptable "${INSTALLER_DIR}"/prm_ptable.img
+ fastboot flash xloader "${INSTALLER_DIR}"/hisi-sec_xloader.img
+ fastboot reboot-bootloader
+
+ fastboot flash fastboot "${INSTALLER_DIR}"/l-loader.bin
+ fastboot flash fip "${INSTALLER_DIR}"/fip.bin
+ fastboot flash nvme "${INSTALLER_DIR}"/hisi-nvme.img
+ fastboot flash fw_lpm3 "${INSTALLER_DIR}"/hisi-lpm3.img
+ fastboot flash trustfirmware "${INSTALLER_DIR}"/hisi-bl31.bin
+ fastboot reboot-bootloader
+
+ fastboot flash ptable "${INSTALLER_DIR}"/prm_ptable.img
+ fastboot flash xloader "${INSTALLER_DIR}"/hisi-sec_xloader.img
+ fastboot flash fastboot "${INSTALLER_DIR}"/l-loader.bin
+ fastboot flash fip "${INSTALLER_DIR}"/fip.bin
+
+ fastboot flash boot "${ANDROID_PRODUCT_OUT}"/boot.img
+ fastboot flash super "${ANDROID_PRODUCT_OUT}"/super.img
+ fastboot flash userdata "${ANDROID_PRODUCT_OUT}"/userdata.img
+ fastboot format cache
+}
+
+function upgrading_ptable_1mb_aligned () {
+ fastboot flash xloader "${INSTALLER_DIR}"/hisi-sec_xloader.img
+ fastboot flash ptable "${INSTALLER_DIR}"/hisi-ptable.img
+ fastboot flash fastboot "${INSTALLER_DIR}"/hisi-fastboot.img
+ fastboot reboot-bootloader
+}
+
+echo ${ECHO_PREFIX}"Checking partition table version..."
+check_partition_table_version
+
+if [ "${IS_PTABLE_1MB_ALIGNED}" == "true" ]
+then
+ echo ${ECHO_PREFIX}"Partition table is 1MB aligned. Flashing ATF/UEFI..."
+ flashing_atf_uefi
+else
+ echo ${ECHO_PREFIX}"Partition table is 512KB aligned."
+ echo ${ECHO_PREFIX}"Upgrading to 1MB aligned version..."
+ upgrading_ptable_1mb_aligned
+ echo ${ECHO_PREFIX}"Flashing ATF/UEFI..."
+ flashing_atf_uefi
+ echo ${ECHO_PREFIX}"Done"
+fi
+
+fastboot reboot
diff --git a/src/hikey960/bootloader/hisi-bl31.bin b/src/hikey960/bootloader/hisi-bl31.bin
new file mode 100644
index 0000000..abebea6
--- /dev/null
+++ b/src/hikey960/bootloader/hisi-bl31.bin
Binary files differ
diff --git a/src/hikey960/bootloader/hisi-fastboot.img b/src/hikey960/bootloader/hisi-fastboot.img
new file mode 100644
index 0000000..72cbf90
--- /dev/null
+++ b/src/hikey960/bootloader/hisi-fastboot.img
Binary files differ
diff --git a/src/hikey960/bootloader/hisi-lpm3.img b/src/hikey960/bootloader/hisi-lpm3.img
new file mode 100644
index 0000000..bd0243b
--- /dev/null
+++ b/src/hikey960/bootloader/hisi-lpm3.img
Binary files differ
diff --git a/src/hikey960/bootloader/hisi-nvme.img b/src/hikey960/bootloader/hisi-nvme.img
new file mode 100644
index 0000000..ca5bc7c
--- /dev/null
+++ b/src/hikey960/bootloader/hisi-nvme.img
Binary files differ
diff --git a/src/hikey960/bootloader/hisi-ptable.img b/src/hikey960/bootloader/hisi-ptable.img
new file mode 100644
index 0000000..269aa63
--- /dev/null
+++ b/src/hikey960/bootloader/hisi-ptable.img
Binary files differ
diff --git a/src/hikey960/bootloader/hisi-sec_xloader.img b/src/hikey960/bootloader/hisi-sec_xloader.img
new file mode 100644
index 0000000..47c353b
--- /dev/null
+++ b/src/hikey960/bootloader/hisi-sec_xloader.img
Binary files differ
diff --git a/src/hikey960/bootloader/l-loader.bin b/src/hikey960/bootloader/l-loader.bin
new file mode 100644
index 0000000..e0c3726
--- /dev/null
+++ b/src/hikey960/bootloader/l-loader.bin
Binary files differ
diff --git a/src/hikey960/bootloader/legacy-flash-all.sh b/src/hikey960/bootloader/legacy-flash-all.sh
new file mode 100755
index 0000000..3f8bf9b
--- /dev/null
+++ b/src/hikey960/bootloader/legacy-flash-all.sh
@@ -0,0 +1,30 @@
+#!/bin/bash
+
+INSTALLER_DIR="`dirname ${0}`"
+
+# for cases that don't run "lunch hikey960-userdebug"
+if [ -z "${ANDROID_BUILD_TOP}" ]; then
+ ANDROID_BUILD_TOP=${INSTALLER_DIR}/../../../../../
+ ANDROID_PRODUCT_OUT="${ANDROID_BUILD_TOP}/out/target/product/hikey960"
+fi
+
+if [ ! -d "${ANDROID_PRODUCT_OUT}" ]; then
+ echo "error in locating out directory, check if it exist"
+ exit
+fi
+
+echo "android out dir:${ANDROID_PRODUCT_OUT}"
+
+fastboot flash xloader "${INSTALLER_DIR}"/hisi-sec_xloader.img
+fastboot flash ptable "${INSTALLER_DIR}"/hisi-ptable.img
+fastboot flash fastboot "${INSTALLER_DIR}"/hisi-fastboot.img
+fastboot reboot-bootloader
+fastboot flash nvme "${INSTALLER_DIR}"/hisi-nvme.img
+fastboot flash fw_lpm3 "${INSTALLER_DIR}"/hisi-lpm3.img
+fastboot flash trustfirmware "${INSTALLER_DIR}"/hisi-bl31.bin
+fastboot flash boot "${ANDROID_PRODUCT_OUT}"/boot.img
+fastboot flash dts "${ANDROID_PRODUCT_OUT}"/dt.img
+fastboot flash super "${ANDROID_PRODUCT_OUT}"/super.img
+fastboot flash userdata "${ANDROID_PRODUCT_OUT}"/userdata.img
+fastboot format:ext4:10000000 cache
+fastboot reboot
diff --git a/src/hikey960/bootloader/mkdtimg b/src/hikey960/bootloader/mkdtimg
new file mode 100755
index 0000000..6572204
--- /dev/null
+++ b/src/hikey960/bootloader/mkdtimg
@@ -0,0 +1,159 @@
+#!/usr/bin/env python
+# Copyright 2017, The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+from __future__ import print_function
+try:
+ from os import fstat, stat, remove
+ from sys import exit
+ from argparse import ArgumentParser, FileType
+ from ctypes import sizeof, Structure, c_char, c_int
+ from struct import pack, calcsize
+ import zlib
+except Exception as e:
+ print("some module is needed:" + str(e))
+ exit(-1)
+
+dt_head_info_fmt = '4sII'
+dt_entry_fmt = 'Q4I2Q'
+dtimg_version = 1
+dtb_count = 1
+
+def write32(output, value):
+ output.write(chr(value & 255)) ; value=value // 256
+ output.write(chr(value & 255)) ; value=value // 256
+ output.write(chr(value & 255)) ; value=value // 256
+ output.write(chr(value & 255))
+
+def compress(filename, input, output):
+ output.write('\037\213\010')
+ output.write(chr(0))
+
+ statval = stat(filename)
+ write32(output, 0)
+ output.write('\002')
+ output.write('\003')
+
+ crcval = zlib.crc32("")
+ compobj = zlib.compressobj(9, zlib.DEFLATED, -zlib.MAX_WBITS,
+ zlib.DEF_MEM_LEVEL, 0)
+ while True:
+ data = input.read(1024)
+ if data == "":
+ break
+ crcval = zlib.crc32(data, crcval)
+ output.write(compobj.compress(data))
+ output.write(compobj.flush())
+ write32(output, crcval)
+ write32(output, statval.st_size)
+
+def dtb_compress(dtb_file):
+ try:
+ outputname = dtb_file + '.gz'
+ input = open(dtb_file, 'rb')
+ output = open(outputname, 'wb')
+ compress(dtb_file, input, output)
+ input.close()
+ output.close()
+ except Exception as e:
+ print('dtb_compress error:' + str(e))
+ exit(-1)
+ return outputname
+
+class dt_head_info(Structure):
+ _fields_ = [('magic', c_char * 4),
+ ('version', c_int),
+ ('dt_count', c_int)]
+
+class dt_entry_t(Structure):
+ _fields_ = [('dtb_size', c_int),
+ ('dtb_offset', c_int)]
+
+def align_page_size(offset, pagesize):
+ return (pagesize - (offset % pagesize))
+
+def write_head_info(head_info, args):
+ args.output.write(pack(dt_head_info_fmt,
+ head_info.magic,
+ head_info.version,
+ head_info.dt_count))
+
+def write_dtb_entry_t(dt_entry, args):
+ args.output.write(pack(dt_entry_fmt,
+ 0, # reserved
+ dt_entry.dtb_size,
+ 0, # reserved
+ dt_entry.dtb_offset,
+ 0, # reserved
+ 0, # reserved
+ 0)) # reserved
+
+def write_padding(args, padding):
+ for i in range(0, padding):
+ args.output.write('\x00')
+
+def write_dtb(args):
+ dtb_file = args.dtb
+ out_dtb = dtb_file
+ if args.compress == True:
+ out_dtb = dtb_compress(dtb_file)
+ try:
+ dtb_offset = calcsize(dt_head_info_fmt) + \
+ calcsize(dt_entry_fmt) + \
+ 4
+ padding = align_page_size(dtb_offset, args.pagesize)
+ dtb_size = stat(out_dtb).st_size
+ dtb_size_padding = align_page_size(dtb_size, args.pagesize)
+ dt_entry = dt_entry_t(dtb_size + dtb_size_padding,
+ dtb_offset + padding)
+ write_dtb_entry_t(dt_entry, args)
+ args.output.write(pack('I', 0)) # SUCCESS code number
+ write_padding(args, padding)
+ with open(out_dtb, 'rb') as dtb_fd:
+ args.output.write(dtb_fd.read(dtb_size))
+ write_padding(args, dtb_size_padding)
+ except Exception as e:
+ print('write dtb error:' + str(e))
+ exit(-1)
+
+def clean_gz_file(args):
+ try:
+ if args.compress != True:
+ return
+ remove(args.dtb + '.gz')
+ except Exception as e:
+ print('clean gz file error:' + str(e))
+ exit(-1)
+
+def parse_cmdline():
+ parser = ArgumentParser()
+ parser.add_argument('-c', '--compress', help='compress dtb or not',
+ action='store_true')
+ parser.add_argument('-d', '--dtb', help='path to the dtb', type=str,
+ required=True)
+ parser.add_argument('-s', '--pagesize', help='align page size',
+ type=int, choices=[2**i for i in range(11,15)],
+ default=2048)
+ parser.add_argument('-o', '--output', help='output file name',
+ type=FileType('wb'), required=True)
+ return parser.parse_args()
+
+def main():
+ args = parse_cmdline()
+ dtimg_head_info = dt_head_info('HSDT', dtimg_version, dtb_count)
+ write_head_info(dtimg_head_info, args)
+ write_dtb(args)
+ clean_gz_file(args)
+
+if __name__ == '__main__':
+ main()
diff --git a/src/hikey960/bootloader/prm_ptable.img b/src/hikey960/bootloader/prm_ptable.img
new file mode 100644
index 0000000..e7b9b03
--- /dev/null
+++ b/src/hikey960/bootloader/prm_ptable.img
Binary files differ
diff --git a/src/hikey960/bootloader/uefi-flash-all.sh b/src/hikey960/bootloader/uefi-flash-all.sh
new file mode 100755
index 0000000..347b5b2
--- /dev/null
+++ b/src/hikey960/bootloader/uefi-flash-all.sh
@@ -0,0 +1,3 @@
+#!/bin/bash
+INSTALLER_DIR="`dirname ${0}`"
+${INSTALLER_DIR}/flash-all.sh
diff --git a/src/hikey960/bt-wifi-firmware-util/NOTICE b/src/hikey960/bt-wifi-firmware-util/NOTICE
new file mode 100644
index 0000000..e5bdc11
--- /dev/null
+++ b/src/hikey960/bt-wifi-firmware-util/NOTICE
@@ -0,0 +1,72 @@
+TEXAS INSTRUMENTS TEXT FILE LICENSE
+
+
+Copyright (c) 2008 - 2013 Texas Instruments Incorporated
+
+All rights reserved not granted herein.
+
+Limited License.
+
+If you download and use any version of this software from www.github.com, you
+acknowledge and agree that the terms and conditions of this license control and any
+previous licenses under which this software may have been provided on www.github.com
+are superseded and replaced by the terms and conditions of this license.
+
+Texas Instruments Incorporated grants a world-wide, royalty-free, non-exclusive
+license under copyrights and patents it now or hereafter owns or controls to make,
+have made, use, import, offer to sell and sell ("Utilize") this software subject
+to the terms herein. With respect to the foregoing patent license, such license
+is granted solely to the extent that any such patent is necessary to Utilize the
+software alone. The patent license shall not apply to any combinations which
+include this software, other than combinations with devices manufactured by or
+for TI ("TI Devices"). No hardware patent is licensed hereunder.
+
+Redistributions must preserve existing copyright notices and reproduce this license
+(including the above copyright notice and the disclaimer and (if applicable) source
+code license limitations below) in the documentation and/or other materials provided
+with the distribution
+
+Redistribution and use in binary form, without modification, are permitted provided
+that the following conditions are met:
+
+* No reverse engineering, decompilation, or disassembly of this software is permitted
+ with respect to any software provided in binary form.
+
+* any redistribution and use are licensed by TI for use only with TI Devices.
+
+* Nothing shall obligate TI to provide you with source code for the software
+ licensed and provided to you in object code.
+
+If software source code is provided to you, modification and redistribution of the
+source code are permitted provided that the following conditions are met:
+
+* any redistribution and use of the source code, including any resulting
+ derivative works, are licensed by TI for use only with TI Devices.
+
+* any redistribution and use of any object code compiled from the source
+ code and any resulting derivative works, are licensed by TI for use only
+ with TI Devices.
+
+Neither the name of Texas Instruments Incorporated nor the names of its suppliers
+may be used to endorse or promote products derived from this software without specific
+prior written permission.
+
+DISCLAIMER.
+
+THIS SOFTWARE IS PROVIDED BY TI AND TI'S LICENSORS "AS IS" AND ANY EXPRESS
+OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
+NO EVENT SHALL TI AND TI'S LICENSORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+BY UTILIZING THIS SOFTWARE TO ENABLE ANT CODE EMBEDDED ON TI DEVICES, YOU
+AGREE THAT NOTHING IN THIS LICENSE GIVES RISE TO ANY WARRANTY OR OTHER
+OBLIGATIONS BY TI OR ITS LICENSORS WITH RESPECT TO THE ANT CODE EMBEDDED
+ON TI DEVICES AND ENABLED BY THE SOFTWARE UNDER THIS LICENSE. FURTHER, YOU
+AGREE THAT NOTHING IN THIS LICENSE GIVES RISE TO ANY RIGHT TO REVERSE ENGINEER,
+DECOMPILE OR DISASSEMBLE THE ANT CODE EMBEDDED ON THE TI DEVICES.
diff --git a/src/hikey960/bt-wifi-firmware-util/TIInit_11.8.32-pcm-960.bts b/src/hikey960/bt-wifi-firmware-util/TIInit_11.8.32-pcm-960.bts
new file mode 100644
index 0000000..ff56d1c
--- /dev/null
+++ b/src/hikey960/bt-wifi-firmware-util/TIInit_11.8.32-pcm-960.bts
Binary files differ
diff --git a/src/hikey960/bt-wifi-firmware-util/TIInit_11.8.32.bts b/src/hikey960/bt-wifi-firmware-util/TIInit_11.8.32.bts
new file mode 100755
index 0000000..824ca0f
--- /dev/null
+++ b/src/hikey960/bt-wifi-firmware-util/TIInit_11.8.32.bts
Binary files differ
diff --git a/src/hikey960/bt-wifi-firmware-util/wl18xx-conf-wl1837mod.bin b/src/hikey960/bt-wifi-firmware-util/wl18xx-conf-wl1837mod.bin
new file mode 100644
index 0000000..5dd913c
--- /dev/null
+++ b/src/hikey960/bt-wifi-firmware-util/wl18xx-conf-wl1837mod.bin
Binary files differ
diff --git a/src/hikey960/bt-wifi-firmware-util/wl18xx-conf.bin b/src/hikey960/bt-wifi-firmware-util/wl18xx-conf.bin
new file mode 100644
index 0000000..2bd0f4d
--- /dev/null
+++ b/src/hikey960/bt-wifi-firmware-util/wl18xx-conf.bin
Binary files differ
diff --git a/src/hikey960/bt-wifi-firmware-util/wl18xx-fw-4.bin b/src/hikey960/bt-wifi-firmware-util/wl18xx-fw-4.bin
new file mode 100755
index 0000000..71c160a
--- /dev/null
+++ b/src/hikey960/bt-wifi-firmware-util/wl18xx-fw-4.bin
Binary files differ
diff --git a/src/hikey960/hikey.mk b/src/hikey960/hikey.mk
new file mode 100644
index 0000000..cffd3fd
--- /dev/null
+++ b/src/hikey960/hikey.mk
@@ -0,0 +1,10 @@
+FIRMWARE_VENDOR_PATH := $(LINARO_VENDOR_PATH)/hikey960/$(EXPECTED_LINARO_VENDOR_VERSION)
+
+# Copy BT firmware
+PRODUCT_COPY_FILES += \
+ $(FIRMWARE_VENDOR_PATH)/bt-wifi-firmware-util/TIInit_11.8.32.bts:$(TARGET_COPY_OUT_VENDOR)/firmware/ti-connectivity/TIInit_11.8.32.bts
+
+# Copy wlan firmware
+PRODUCT_COPY_FILES += \
+ $(FIRMWARE_VENDOR_PATH)/bt-wifi-firmware-util/wl18xx-fw-4.bin:$(TARGET_COPY_OUT_VENDOR)/firmware/ti-connectivity/wl18xx-fw-4.bin \
+ $(FIRMWARE_VENDOR_PATH)/bt-wifi-firmware-util/wl18xx-conf.bin:$(TARGET_COPY_OUT_VENDOR)/firmware/ti-connectivity/wl18xx-conf.bin
diff --git a/src/hikey960/hikey960.mk b/src/hikey960/hikey960.mk
new file mode 100644
index 0000000..d370aa5
--- /dev/null
+++ b/src/hikey960/hikey960.mk
@@ -0,0 +1,13 @@
+FIRMWARE_VENDOR_PATH := $(LINARO_VENDOR_PATH)/hikey960/$(EXPECTED_LINARO_VENDOR_VERSION)
+
+
+# Copy BT firmware
+PRODUCT_COPY_FILES += \
+ $(FIRMWARE_VENDOR_PATH)/bt-wifi-firmware-util/TIInit_11.8.32-pcm-960.bts:$(TARGET_COPY_OUT_VENDOR)/firmware/ti-connectivity/TIInit_11.8.32.bts
+
+# Copy wlan firmware
+PRODUCT_COPY_FILES += \
+ $(FIRMWARE_VENDOR_PATH)/bt-wifi-firmware-util/wl18xx-fw-4.bin:$(TARGET_COPY_OUT_VENDOR)/firmware/ti-connectivity/wl18xx-fw-4.bin \
+ $(FIRMWARE_VENDOR_PATH)/bt-wifi-firmware-util/wl18xx-conf-wl1837mod.bin:$(TARGET_COPY_OUT_VENDOR)/firmware/ti-connectivity/wl18xx-conf.bin
+
+
diff --git a/src/hikey960/mali/Android.mk b/src/hikey960/mali/Android.mk
new file mode 100644
index 0000000..4060483
--- /dev/null
+++ b/src/hikey960/mali/Android.mk
@@ -0,0 +1,31 @@
+#
+# Copyright (C) 2015 The Android Open-Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+# WARNING: Everything listed here will be built on ALL platforms,
+# including x86, the emulator, and the SDK. Modules must be uniquely
+# named (liblights.panda), and must build everywhere, or limit themselves
+# to only building on ARM if they include assembly. Individual makefiles
+# are responsible for having their own logic, for fine-grained control.
+
+ifneq ($(filter hikey%, $(TARGET_DEVICE)),)
+
+LOCAL_PATH := $(call my-dir)
+
+# if some modules are built directly from this directory (not subdirectories),
+# their rules should be written here.
+
+include $(call all-makefiles-under,$(LOCAL_PATH))
+endif
diff --git a/src/hikey960/mali/bifrost/Android.bp b/src/hikey960/mali/bifrost/Android.bp
new file mode 100644
index 0000000..b66541e
--- /dev/null
+++ b/src/hikey960/mali/bifrost/Android.bp
@@ -0,0 +1,136 @@
+// ANDROIDMK TRANSLATION ERROR: unsupported conditional
+// ifneq ($(filter hikey960, $(TARGET_DEVICE)),)
+
+soong_namespace {}
+
+cc_prebuilt_library_shared {
+ name: "libGLES_mali",
+ notice: "END_USER_LICENCE_AGREEMENT.txt",
+ strip: {
+ none: true,
+ },
+ arch: {
+ arm: {
+ srcs: ["lib/egl/libGLES_mali.so"],
+ },
+ arm64: {
+ srcs: ["lib64/egl/libGLES_mali.so"],
+ },
+ },
+ vendor: true,
+ relative_install_path: "egl",
+
+ compile_multilib: "both",
+ shared_libs: [
+ "android.hardware.graphics.common@1.0",
+ "libz",
+ "libnativewindow",
+ "libc++",
+ "liblog",
+ "libm",
+ "libc",
+ "libdl",
+ ],
+}
+
+cc_prebuilt_library_shared {
+ name: "libbccArm",
+ notice: "END_USER_LICENCE_AGREEMENT.txt",
+ strip: {
+ none: true,
+ },
+ arch: {
+ arm64: {
+ srcs: ["lib64/libbccArm.so"],
+ },
+ },
+ vendor: true,
+ compile_multilib: "64",
+ // Bypass prebuilt ELF check because libLLVM is not a module (it is copied by
+ // PRODUCT_COPY_FILES instead).
+ check_elf_files: false,
+}
+
+cc_prebuilt_library_shared {
+ name: "libRSDriverArm",
+ notice: "END_USER_LICENCE_AGREEMENT.txt",
+ strip: {
+ none: true,
+ },
+ arch: {
+ arm: {
+ srcs: ["lib/libRSDriverArm.so"],
+ },
+ arm64: {
+ srcs: ["lib64/libRSDriverArm.so"],
+ },
+ },
+ vendor: true,
+ compile_multilib: "both",
+ shared_libs: [
+ "libRS_internal",
+ "libRSCpuRef",
+ "liblog",
+ "libnativewindow",
+ "libbcinfo",
+ "libdl",
+ "libc++",
+ "libc",
+ "libm",
+ ],
+}
+
+cc_prebuilt_library_shared {
+ name: "libmalicore.bc",
+ notice: "END_USER_LICENCE_AGREEMENT.txt",
+
+ strip: {
+ none: true,
+ },
+ arch: {
+ arm: {
+ srcs: ["lib/libmalicore.bc"],
+ },
+ arm64: {
+ srcs: ["lib64/libmalicore.bc"],
+ },
+ },
+ vendor: true,
+ compile_multilib: "both",
+}
+
+cc_prebuilt_library_shared {
+ name: "vulkan.hikey960",
+ notice: "END_USER_LICENCE_AGREEMENT.txt",
+
+ strip: {
+ none: true,
+ },
+ arch: {
+ arm: {
+ srcs: ["lib/hw/vulkan.hikey960.so"],
+ },
+ arm64: {
+ srcs: ["lib64/hw/vulkan.hikey960.so"],
+ },
+ },
+ vendor: true,
+ relative_install_path: "hw",
+ compile_multilib: "both",
+ shared_libs: [
+ "android.hardware.graphics.common@1.0",
+ "libz",
+ "libnativewindow",
+ "libc++",
+ "liblog",
+ "libm",
+ "libc",
+ "libdl",
+ ],
+ // Bypass prebuilt ELF check because the DT_SONAME "libGLES_mali.so" is
+ // different from LOCAL_MODULE "vulkan.hikey960.so".
+ check_elf_files: false,
+}
+
+// ANDROIDMK TRANSLATION ERROR: endif from unsupported conditional
+// endif
diff --git a/src/hikey960/mali/bifrost/END_USER_LICENCE_AGREEMENT.txt b/src/hikey960/mali/bifrost/END_USER_LICENCE_AGREEMENT.txt
new file mode 100644
index 0000000..34da5f8
--- /dev/null
+++ b/src/hikey960/mali/bifrost/END_USER_LICENCE_AGREEMENT.txt
@@ -0,0 +1,194 @@
+LES-PRE-20769
+SP-Version: 1.0
+25 November 2015
+
+END USER LICENCE AGREEMENT FOR THE MALI USERSPACE DRIVER ("Mali DRIVER")
+
+THIS END USER LICENCE AGREEMENT ("LICENCE") IS A LEGAL AGREEMENT
+BETWEEN YOU (EITHER A SINGLE INDIVIDUAL, OR SINGLE LEGAL ENTITY) AND
+ARM LIMITED ("ARM") FOR THE USE OF THE SOFTWARE ACCOMPANYING THIS
+LICENCE. ARM IS ONLY WILLING TO LICENSE THE SOFTWARE TO YOU ON
+CONDITION THAT YOU ACCEPT ALL OF THE TERMS IN THIS LICENCE. BY
+INSTALLING OR OTHERWISE USING OR COPYING THE SOFTWARE YOU INDICATE
+THAT YOU AGREE TO BE BOUND BY ALL OF THE TERMS OF THIS LICENCE. IF YOU
+DO NOT AGREE TO THE TERMS OF THIS LICENCE, ARM IS UNWILLING TO LICENSE
+THE SOFTWARE TO YOU AND YOU MAY NOT INSTALL, USE OR COPY THE SOFTWARE,
+AND YOU SHOULD PROMPTLY RETURN THE SOFTWARE TO YOUR SUPPLIER.
+
+"Applications" means applications for use solely in conjunction with
+Mali-based products manufactured under licence from ARM.
+
+"Output" means data resulting from your use of the Software and all
+direct and indirect derivatives thereof.
+
+"Software" means any software, firmware and data accompanying this
+Licence, any printed, electronic or online documentation supplied with
+it under the terms of this Licence for the Mali Driver.
+
+1. LICENCE GRANTS TO YOU.
+
+1.1 ARM hereby grants to you, subject to the terms and conditions of
+this Licence, a non-exclusive, non-transferable, revocable, worldwide
+licence to:
+
+(i) use and copy the Software or certain components or optional
+ functionality in the Software, as applicable, solely for the
+ purposes of running, designing or developing Applications; and
+
+(ii) subject to Clause 1.2, distribute the whole of the Software;
+ and/or (b) the whole or any part of the Software together
+ with, or as incorporated into, Applications; and
+
+1.2 If you choose to redistribute the whole or any part of the
+Software pursuant to the licences granted in Clause 1.1(ii), you
+agree: (i) not to use ARM's or any of its licensors names, logos or
+trademarks to market Applications; (ii) to retain any and all
+copyright notices and other notices (whether ARM's or its licensor's)
+which are included with the Software; and (iii) include a copy of this
+Licence with such redistribution.
+
+2. RESTRICTIONS ON USE OF THE SOFTWARE.
+
+BENCHMARKING: This Licence does not prevent you from using the
+Software for benchmarking purposes. However, you shall ensure that any
+and all benchmarking data relating to the Software, and any other
+results of your use or testing of the Software which are indicative of
+its performance, efficacy, reliability or quality, shall not be used
+to disparage ARM, its products or services, or in a manner that, in
+ARM's reasonable judgment, may diminish or otherwise damage the
+reputation of ARM.
+
+COPYRIGHT AND RESERVATION OF RIGHTS: The Software is owned by ARM or
+its licensors and is protected by copyright and other intellectual
+property laws and international treaties. The Software is licensed not
+sold. You acquire no rights to the Software other than as expressly
+provided by this Licence. You shall not remove from the Software any
+copyright notice or other notice and shall ensure that any such notice
+is reproduced in any copies of the whole or any part of the Software
+made by you or other permitted users.
+
+REVERSE ENGINEERING: Except to the extent that such activity is
+permitted by applicable law you shall not reverse engineer, decompile
+or disassemble any of the Software. If the Software was provided to
+you in Europe you shall not reverse engineer, decompile or disassemble
+any of the Software for the purposes of error correction.
+
+RESTRICTED USE: You agree that you shall not use the Software or the
+Output other than pursuant to and in accordance with the exercise of
+any of the licences granted under this Licence. Without limiting the
+generality of the foregoing, you shall not use the Software or any
+Output: (a) for determining if any features, functions or processes
+provided by the Software are covered by any patents or patent
+applications owned by you or a third party; or (b) for developing
+technology, applications or products which avoid any of ARM's
+intellectual property in the Software licensed hereunder; or (c) as a
+reference for modifying existing patents or patent applications or
+creating any continuation, continuation in part, or extension of
+existing patents or patent applications.
+
+3. SUPPORT.
+
+ARM is not under an obligation to provide support, but it may do so at
+its own discretion, and if it does, it will only be in respect of the
+Software as delivered.
+
+4. NO WARRANTIES.
+
+YOU AGREE THAT THE SOFTWARE IS LICENSED "AS IS", AND THAT ARM
+EXPRESSLY DISCLAIMS ALL REPRESENTATIONS, WARRANTIES, CONDITIONS OR
+OTHER TERMS, EXPRESS OR IMPLIED OR STATUTORY, INCLUDING WITHOUT
+LIMITATION THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, SATISFACTORY
+QUALITY, AND FITNESS FOR A PARTICULAR PURPOSE.
+
+YOU EXPRESSLY ASSUME ALL LIABILITIES AND RISKS, FOR USE OR OPERATION
+OF APPLICATIONS, INCLUDING WITHOUT LIMITATION, APPLICATIONS DESIGNED
+OR INTENDED FOR MISSION CRITICAL APPLICATIONS, SUCH AS PACEMAKERS,
+WEAPONRY, AIRCRAFT NAVIGATION, FACTORY CONTROL SYSTEMS, ETC. SHOULD
+THE SOFTWARE PROVE DEFECTIVE, YOU ASSUME THE ENTIRE COST OF ALL
+NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+5. LIMITATION OF LIABILITY.
+
+TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, IN NO EVENT SHALL
+ARM BE LIABLE FOR ANY INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL
+DAMAGES (INCLUDING LOSS OF PROFITS) ARISING OUT OF THE USE OR
+INABILITY TO USE THE SOFTWARE WHETHER BASED ON A CLAIM UNDER CONTRACT,
+TORT OR OTHER LEGAL THEORY, EVEN IF ARM WAS ADVISED OF THE POSSIBILITY
+OF SUCH DAMAGES.
+
+ARM does not seek to limit or exclude liability for death or personal
+injury arising from ARM's negligence or ARM's fraud and because some
+jurisdictions do not permit the exclusion or limitation of liability
+for consequential or incidental damages the above limitation relating
+to liability for consequential damages may not apply to you.
+
+NOTWITHSTANDING ANYTHING TO THE CONTRARY CONTAINED IN THIS LICENCE,
+THE MAXIMUM LIABILITY OF ARM TO YOU IN AGGREGATE FOR ALL CLAIMS MADE
+AGAINST ARM IN CONTRACT TORT OR OTHERWISE UNDER OR IN CONNECTION WITH
+THE SUBJECT MATTER OF THIS LICENCE SHALL NOT EXCEED THE GREATER OF:
+(I) THE TOTAL OF SUMS PAID BY YOU TO ARM (IF ANY) FOR THIS LICENCE;
+AND (II) $10.00 USD. THE EXISTENCE OF MORE THAN ONE CLAIM WILL NOT
+ENLARGE OR EXTEND THE LIMIT.
+
+6. U.S. GOVERNMENT END USERS.
+
+US Government Restrictions: Use, duplication, reproduction, release,
+modification, disclosure or transfer of the Software is restricted in
+accordance with the terms of this Licence.
+
+7. TERM AND TERMINATION.
+
+This Licence shall remain in force until terminated by you or by ARM.
+Without prejudice to any of its other rights if you are in breach of
+any of the terms and conditions of this Licence then ARM may terminate
+this Licence immediately upon giving written notice to you or on
+thirty (30) days written notice without cause. You may terminate this
+Licence at any time. Upon termination of this Licence by you or by ARM
+, you shall stop using the Software and destroy all copies of the
+Software in your possession, together with all documentation and
+related materials. The provisions of clauses 2, 3, 4, 5, 6, 7, and 8
+shall survive termination of this Licence.
+
+8. GENERAL.
+
+This Licence is governed by English Law. Except where ARM agrees
+otherwise in: (i) a written contract signed by you and ARM; or (ii) a
+written contract provided by ARM and accepted by you, this is the only
+agreement between you and ARM relating to the Software and it may only
+be modified by written agreement between you and ARM. Except as
+expressly agreed in writing, this Licence may not be modified by
+purchase orders, advertising or other representation by any person. If
+any clause or sentence in this Licence is held by a court of law to be
+illegal or unenforceable the remaining provisions of this Licence
+shall not be affected thereby. The failure by ARM to enforce any of
+the provisions of this Licence, unless waived in writing, shall not
+constitute a waiver of ARM's rights to enforce such provision or any
+other provision of this Licence in the future.
+
+At ARM's request, you agree to check your computers for installations
+of the Software and any other information requested by ARM relating to
+Software installation and to provide this information to ARM. You
+agree that auditors nominated by ARM may also perform such checking
+and reporting on behalf of ARM by prior appointment during your normal
+business hours on seven (7) days' notice. ARM shall bear the auditors'
+costs for that audit unless it reveals unlicensed usage in which case
+you shall promptly reimburse ARM for all reasonable costs and
+expenses, including professional fees, relating to such audit. Any
+information which is disclosed to ARM or such auditors during checking
+or audit shall be treated as your confidential information and shall
+only be used by ARM for licence management, compliance and enforcement
+purposes.
+
+The Software provided under this Agreement is subject to U.K.,
+European Union, and U.S. export control laws and regulations,
+including the U.S. Export Administration Act and its associated
+regulations (hereafter collectively referred to as "Export
+Regulations"). LICENSEE agrees to comply fully with all such Export
+Regulations and LICENSEE agrees that it shall not, either directly or
+indirectly, export in breach of the Export Regulations, any Software
+received under this Agreement, nor any direct products thereof; (i) to
+any country, company or person subject to export restrictions or
+sanctions under the Export Regulations; or (ii) for any prohibited end
+use, which at the time of export requires an export license or other
+governmental approval, without first obtaining such license or
+approval.
diff --git a/src/hikey960/mali/bifrost/bin/bcc b/src/hikey960/mali/bifrost/bin/bcc
new file mode 100755
index 0000000..c828bca
--- /dev/null
+++ b/src/hikey960/mali/bifrost/bin/bcc
Binary files differ
diff --git a/src/hikey960/mali/bifrost/lib/egl/libGLES_mali.so b/src/hikey960/mali/bifrost/lib/egl/libGLES_mali.so
new file mode 100755
index 0000000..092d472
--- /dev/null
+++ b/src/hikey960/mali/bifrost/lib/egl/libGLES_mali.so
Binary files differ
diff --git a/src/hikey960/mali/bifrost/lib/hw/vulkan.hikey960.so b/src/hikey960/mali/bifrost/lib/hw/vulkan.hikey960.so
new file mode 120000
index 0000000..57c186c
--- /dev/null
+++ b/src/hikey960/mali/bifrost/lib/hw/vulkan.hikey960.so
@@ -0,0 +1 @@
+../egl/libGLES_mali.so
\ No newline at end of file
diff --git a/src/hikey960/mali/bifrost/lib/libRSDriverArm.so b/src/hikey960/mali/bifrost/lib/libRSDriverArm.so
new file mode 100755
index 0000000..721e324
--- /dev/null
+++ b/src/hikey960/mali/bifrost/lib/libRSDriverArm.so
Binary files differ
diff --git a/src/hikey960/mali/bifrost/lib/libclcore.bc b/src/hikey960/mali/bifrost/lib/libclcore.bc
new file mode 100644
index 0000000..ee0429a
--- /dev/null
+++ b/src/hikey960/mali/bifrost/lib/libclcore.bc
Binary files differ
diff --git a/src/hikey960/mali/bifrost/lib/libclcore_neon.bc b/src/hikey960/mali/bifrost/lib/libclcore_neon.bc
new file mode 100644
index 0000000..ce3da69
--- /dev/null
+++ b/src/hikey960/mali/bifrost/lib/libclcore_neon.bc
Binary files differ
diff --git a/src/hikey960/mali/bifrost/lib/libmalicore.bc b/src/hikey960/mali/bifrost/lib/libmalicore.bc
new file mode 100644
index 0000000..5901017
--- /dev/null
+++ b/src/hikey960/mali/bifrost/lib/libmalicore.bc
Binary files differ
diff --git a/src/hikey960/mali/bifrost/lib64/egl/libGLES_mali.so b/src/hikey960/mali/bifrost/lib64/egl/libGLES_mali.so
new file mode 100755
index 0000000..19c41f1
--- /dev/null
+++ b/src/hikey960/mali/bifrost/lib64/egl/libGLES_mali.so
Binary files differ
diff --git a/src/hikey960/mali/bifrost/lib64/hw/vulkan.hikey960.so b/src/hikey960/mali/bifrost/lib64/hw/vulkan.hikey960.so
new file mode 120000
index 0000000..57c186c
--- /dev/null
+++ b/src/hikey960/mali/bifrost/lib64/hw/vulkan.hikey960.so
@@ -0,0 +1 @@
+../egl/libGLES_mali.so
\ No newline at end of file
diff --git a/src/hikey960/mali/bifrost/lib64/libLLVM.so b/src/hikey960/mali/bifrost/lib64/libLLVM.so
new file mode 100755
index 0000000..894b1d1
--- /dev/null
+++ b/src/hikey960/mali/bifrost/lib64/libLLVM.so
Binary files differ
diff --git a/src/hikey960/mali/bifrost/lib64/libRSDriverArm.so b/src/hikey960/mali/bifrost/lib64/libRSDriverArm.so
new file mode 100755
index 0000000..0a10776
--- /dev/null
+++ b/src/hikey960/mali/bifrost/lib64/libRSDriverArm.so
Binary files differ
diff --git a/src/hikey960/mali/bifrost/lib64/libbcc.so b/src/hikey960/mali/bifrost/lib64/libbcc.so
new file mode 100755
index 0000000..b95b141
--- /dev/null
+++ b/src/hikey960/mali/bifrost/lib64/libbcc.so
Binary files differ
diff --git a/src/hikey960/mali/bifrost/lib64/libbccArm.so b/src/hikey960/mali/bifrost/lib64/libbccArm.so
new file mode 100755
index 0000000..7fe1dfd
--- /dev/null
+++ b/src/hikey960/mali/bifrost/lib64/libbccArm.so
Binary files differ
diff --git a/src/hikey960/mali/bifrost/lib64/libclcore.bc b/src/hikey960/mali/bifrost/lib64/libclcore.bc
new file mode 100644
index 0000000..ca3d10b
--- /dev/null
+++ b/src/hikey960/mali/bifrost/lib64/libclcore.bc
Binary files differ
diff --git a/src/hikey960/mali/bifrost/lib64/libmalicore.bc b/src/hikey960/mali/bifrost/lib64/libmalicore.bc
new file mode 100644
index 0000000..f8c6d71
--- /dev/null
+++ b/src/hikey960/mali/bifrost/lib64/libmalicore.bc
Binary files differ
diff --git a/src/hikey960/mali/utgard/Android.bp b/src/hikey960/mali/utgard/Android.bp
new file mode 100644
index 0000000..d9d7092
--- /dev/null
+++ b/src/hikey960/mali/utgard/Android.bp
@@ -0,0 +1,28 @@
+soong_namespace {}
+
+cc_prebuilt_library_shared {
+ name: "libGLES_mali",
+ notice: "END_USER_LICENCE_AGREEMENT.txt",
+ strip: {
+ none: true,
+ },
+ arch: {
+ arm: {
+ srcs: ["lib/egl/libGLES_mali.so"],
+ },
+ arm64: {
+ srcs: ["lib64/egl/libGLES_mali.so"],
+ },
+ },
+ vendor: true,
+ relative_install_path: "egl",
+
+ compile_multilib: "both",
+ shared_libs: [
+ "libc++",
+ "libc",
+ "libdl",
+ "liblog",
+ "libm",
+ ],
+}
diff --git a/src/hikey960/mali/utgard/Android.mk.old b/src/hikey960/mali/utgard/Android.mk.old
new file mode 100644
index 0000000..c7afa7b
--- /dev/null
+++ b/src/hikey960/mali/utgard/Android.mk.old
@@ -0,0 +1,30 @@
+ifneq ($(filter hikey hikey64 hikey32, $(TARGET_DEVICE)),)
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := END_USER_LICENCE_AGREEMENT.txt
+LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0
+LOCAL_LICENSE_CONDITIONS := notice
+LOCAL_MODULE_CLASS := SHARED_LIBRARIES
+LOCAL_STRIP_MODULE := false
+LOCAL_SRC_FILES_arm := $(LOCAL_MODULE)
+LOCAL_MODULE_PATH_32 := $(TARGET_OUT_VENDOR)
+LOCAL_MULTILIB := 32
+LOCAL_SHARED_LIBRARIES := libc++ libc libdl liblog libm
+include $(BUILD_PREBUILT)
+
+include $(CLEAR_VARS)
+LOCAL_MODULE := libGLES_mali.so
+LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0
+LOCAL_LICENSE_CONDITIONS := notice
+LOCAL_MODULE_CLASS := SHARED_LIBRARIES
+LOCAL_STRIP_MODULE := false
+LOCAL_SRC_FILES_arm := lib/egl/$(LOCAL_MODULE)
+LOCAL_SRC_FILES_arm64 := lib64/egl/$(LOCAL_MODULE)
+LOCAL_MODULE_PATH_32 := $(TARGET_OUT_VENDOR)/lib/egl/
+LOCAL_MODULE_PATH_64 := $(TARGET_OUT_VENDOR)/lib64/egl/
+LOCAL_MULTILIB := both
+LOCAL_SHARED_LIBRARIES := libc++ libc libdl liblog libm
+include $(BUILD_PREBUILT)
+
+endif
diff --git a/src/hikey960/mali/utgard/END_USER_LICENCE_AGREEMENT.txt b/src/hikey960/mali/utgard/END_USER_LICENCE_AGREEMENT.txt
new file mode 100644
index 0000000..34da5f8
--- /dev/null
+++ b/src/hikey960/mali/utgard/END_USER_LICENCE_AGREEMENT.txt
@@ -0,0 +1,194 @@
+LES-PRE-20769
+SP-Version: 1.0
+25 November 2015
+
+END USER LICENCE AGREEMENT FOR THE MALI USERSPACE DRIVER ("Mali DRIVER")
+
+THIS END USER LICENCE AGREEMENT ("LICENCE") IS A LEGAL AGREEMENT
+BETWEEN YOU (EITHER A SINGLE INDIVIDUAL, OR SINGLE LEGAL ENTITY) AND
+ARM LIMITED ("ARM") FOR THE USE OF THE SOFTWARE ACCOMPANYING THIS
+LICENCE. ARM IS ONLY WILLING TO LICENSE THE SOFTWARE TO YOU ON
+CONDITION THAT YOU ACCEPT ALL OF THE TERMS IN THIS LICENCE. BY
+INSTALLING OR OTHERWISE USING OR COPYING THE SOFTWARE YOU INDICATE
+THAT YOU AGREE TO BE BOUND BY ALL OF THE TERMS OF THIS LICENCE. IF YOU
+DO NOT AGREE TO THE TERMS OF THIS LICENCE, ARM IS UNWILLING TO LICENSE
+THE SOFTWARE TO YOU AND YOU MAY NOT INSTALL, USE OR COPY THE SOFTWARE,
+AND YOU SHOULD PROMPTLY RETURN THE SOFTWARE TO YOUR SUPPLIER.
+
+"Applications" means applications for use solely in conjunction with
+Mali-based products manufactured under licence from ARM.
+
+"Output" means data resulting from your use of the Software and all
+direct and indirect derivatives thereof.
+
+"Software" means any software, firmware and data accompanying this
+Licence, any printed, electronic or online documentation supplied with
+it under the terms of this Licence for the Mali Driver.
+
+1. LICENCE GRANTS TO YOU.
+
+1.1 ARM hereby grants to you, subject to the terms and conditions of
+this Licence, a non-exclusive, non-transferable, revocable, worldwide
+licence to:
+
+(i) use and copy the Software or certain components or optional
+ functionality in the Software, as applicable, solely for the
+ purposes of running, designing or developing Applications; and
+
+(ii) subject to Clause 1.2, distribute the whole of the Software;
+ and/or (b) the whole or any part of the Software together
+ with, or as incorporated into, Applications; and
+
+1.2 If you choose to redistribute the whole or any part of the
+Software pursuant to the licences granted in Clause 1.1(ii), you
+agree: (i) not to use ARM's or any of its licensors names, logos or
+trademarks to market Applications; (ii) to retain any and all
+copyright notices and other notices (whether ARM's or its licensor's)
+which are included with the Software; and (iii) include a copy of this
+Licence with such redistribution.
+
+2. RESTRICTIONS ON USE OF THE SOFTWARE.
+
+BENCHMARKING: This Licence does not prevent you from using the
+Software for benchmarking purposes. However, you shall ensure that any
+and all benchmarking data relating to the Software, and any other
+results of your use or testing of the Software which are indicative of
+its performance, efficacy, reliability or quality, shall not be used
+to disparage ARM, its products or services, or in a manner that, in
+ARM's reasonable judgment, may diminish or otherwise damage the
+reputation of ARM.
+
+COPYRIGHT AND RESERVATION OF RIGHTS: The Software is owned by ARM or
+its licensors and is protected by copyright and other intellectual
+property laws and international treaties. The Software is licensed not
+sold. You acquire no rights to the Software other than as expressly
+provided by this Licence. You shall not remove from the Software any
+copyright notice or other notice and shall ensure that any such notice
+is reproduced in any copies of the whole or any part of the Software
+made by you or other permitted users.
+
+REVERSE ENGINEERING: Except to the extent that such activity is
+permitted by applicable law you shall not reverse engineer, decompile
+or disassemble any of the Software. If the Software was provided to
+you in Europe you shall not reverse engineer, decompile or disassemble
+any of the Software for the purposes of error correction.
+
+RESTRICTED USE: You agree that you shall not use the Software or the
+Output other than pursuant to and in accordance with the exercise of
+any of the licences granted under this Licence. Without limiting the
+generality of the foregoing, you shall not use the Software or any
+Output: (a) for determining if any features, functions or processes
+provided by the Software are covered by any patents or patent
+applications owned by you or a third party; or (b) for developing
+technology, applications or products which avoid any of ARM's
+intellectual property in the Software licensed hereunder; or (c) as a
+reference for modifying existing patents or patent applications or
+creating any continuation, continuation in part, or extension of
+existing patents or patent applications.
+
+3. SUPPORT.
+
+ARM is not under an obligation to provide support, but it may do so at
+its own discretion, and if it does, it will only be in respect of the
+Software as delivered.
+
+4. NO WARRANTIES.
+
+YOU AGREE THAT THE SOFTWARE IS LICENSED "AS IS", AND THAT ARM
+EXPRESSLY DISCLAIMS ALL REPRESENTATIONS, WARRANTIES, CONDITIONS OR
+OTHER TERMS, EXPRESS OR IMPLIED OR STATUTORY, INCLUDING WITHOUT
+LIMITATION THE IMPLIED WARRANTIES OF NON-INFRINGEMENT, SATISFACTORY
+QUALITY, AND FITNESS FOR A PARTICULAR PURPOSE.
+
+YOU EXPRESSLY ASSUME ALL LIABILITIES AND RISKS, FOR USE OR OPERATION
+OF APPLICATIONS, INCLUDING WITHOUT LIMITATION, APPLICATIONS DESIGNED
+OR INTENDED FOR MISSION CRITICAL APPLICATIONS, SUCH AS PACEMAKERS,
+WEAPONRY, AIRCRAFT NAVIGATION, FACTORY CONTROL SYSTEMS, ETC. SHOULD
+THE SOFTWARE PROVE DEFECTIVE, YOU ASSUME THE ENTIRE COST OF ALL
+NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+5. LIMITATION OF LIABILITY.
+
+TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, IN NO EVENT SHALL
+ARM BE LIABLE FOR ANY INDIRECT, SPECIAL, INCIDENTAL OR CONSEQUENTIAL
+DAMAGES (INCLUDING LOSS OF PROFITS) ARISING OUT OF THE USE OR
+INABILITY TO USE THE SOFTWARE WHETHER BASED ON A CLAIM UNDER CONTRACT,
+TORT OR OTHER LEGAL THEORY, EVEN IF ARM WAS ADVISED OF THE POSSIBILITY
+OF SUCH DAMAGES.
+
+ARM does not seek to limit or exclude liability for death or personal
+injury arising from ARM's negligence or ARM's fraud and because some
+jurisdictions do not permit the exclusion or limitation of liability
+for consequential or incidental damages the above limitation relating
+to liability for consequential damages may not apply to you.
+
+NOTWITHSTANDING ANYTHING TO THE CONTRARY CONTAINED IN THIS LICENCE,
+THE MAXIMUM LIABILITY OF ARM TO YOU IN AGGREGATE FOR ALL CLAIMS MADE
+AGAINST ARM IN CONTRACT TORT OR OTHERWISE UNDER OR IN CONNECTION WITH
+THE SUBJECT MATTER OF THIS LICENCE SHALL NOT EXCEED THE GREATER OF:
+(I) THE TOTAL OF SUMS PAID BY YOU TO ARM (IF ANY) FOR THIS LICENCE;
+AND (II) $10.00 USD. THE EXISTENCE OF MORE THAN ONE CLAIM WILL NOT
+ENLARGE OR EXTEND THE LIMIT.
+
+6. U.S. GOVERNMENT END USERS.
+
+US Government Restrictions: Use, duplication, reproduction, release,
+modification, disclosure or transfer of the Software is restricted in
+accordance with the terms of this Licence.
+
+7. TERM AND TERMINATION.
+
+This Licence shall remain in force until terminated by you or by ARM.
+Without prejudice to any of its other rights if you are in breach of
+any of the terms and conditions of this Licence then ARM may terminate
+this Licence immediately upon giving written notice to you or on
+thirty (30) days written notice without cause. You may terminate this
+Licence at any time. Upon termination of this Licence by you or by ARM
+, you shall stop using the Software and destroy all copies of the
+Software in your possession, together with all documentation and
+related materials. The provisions of clauses 2, 3, 4, 5, 6, 7, and 8
+shall survive termination of this Licence.
+
+8. GENERAL.
+
+This Licence is governed by English Law. Except where ARM agrees
+otherwise in: (i) a written contract signed by you and ARM; or (ii) a
+written contract provided by ARM and accepted by you, this is the only
+agreement between you and ARM relating to the Software and it may only
+be modified by written agreement between you and ARM. Except as
+expressly agreed in writing, this Licence may not be modified by
+purchase orders, advertising or other representation by any person. If
+any clause or sentence in this Licence is held by a court of law to be
+illegal or unenforceable the remaining provisions of this Licence
+shall not be affected thereby. The failure by ARM to enforce any of
+the provisions of this Licence, unless waived in writing, shall not
+constitute a waiver of ARM's rights to enforce such provision or any
+other provision of this Licence in the future.
+
+At ARM's request, you agree to check your computers for installations
+of the Software and any other information requested by ARM relating to
+Software installation and to provide this information to ARM. You
+agree that auditors nominated by ARM may also perform such checking
+and reporting on behalf of ARM by prior appointment during your normal
+business hours on seven (7) days' notice. ARM shall bear the auditors'
+costs for that audit unless it reveals unlicensed usage in which case
+you shall promptly reimburse ARM for all reasonable costs and
+expenses, including professional fees, relating to such audit. Any
+information which is disclosed to ARM or such auditors during checking
+or audit shall be treated as your confidential information and shall
+only be used by ARM for licence management, compliance and enforcement
+purposes.
+
+The Software provided under this Agreement is subject to U.K.,
+European Union, and U.S. export control laws and regulations,
+including the U.S. Export Administration Act and its associated
+regulations (hereafter collectively referred to as "Export
+Regulations"). LICENSEE agrees to comply fully with all such Export
+Regulations and LICENSEE agrees that it shall not, either directly or
+indirectly, export in breach of the Export Regulations, any Software
+received under this Agreement, nor any direct products thereof; (i) to
+any country, company or person subject to export restrictions or
+sanctions under the Export Regulations; or (ii) for any prohibited end
+use, which at the time of export requires an export license or other
+governmental approval, without first obtaining such license or
+approval.
diff --git a/src/hikey960/mali/utgard/lib/egl/libGLES_mali.so b/src/hikey960/mali/utgard/lib/egl/libGLES_mali.so
new file mode 100755
index 0000000..f86da7e
--- /dev/null
+++ b/src/hikey960/mali/utgard/lib/egl/libGLES_mali.so
Binary files differ
diff --git a/src/hikey960/mali/utgard/lib64/egl/libGLES_mali.so b/src/hikey960/mali/utgard/lib64/egl/libGLES_mali.so
new file mode 100755
index 0000000..5c0af47
--- /dev/null
+++ b/src/hikey960/mali/utgard/lib64/egl/libGLES_mali.so
Binary files differ