gralloc: make register framebuffer no-op
am: b9bdb01b92
Change-Id: I134877121c9b64e447ea98993f335c70a34eb4c7
diff --git a/AndroidProducts.mk b/AndroidProducts.mk
index 0df5afe..4ae9e53 100644
--- a/AndroidProducts.mk
+++ b/AndroidProducts.mk
@@ -10,4 +10,5 @@
#
PRODUCT_MAKEFILES := \
-$(LOCAL_DIR)/hikey.mk
+$(LOCAL_DIR)/hikey.mk \
+$(LOCAL_DIR)/hikey960.mk
diff --git a/BoardConfigCommon.mk b/BoardConfigCommon.mk
index 3b744b3..ab7680a 100644
--- a/BoardConfigCommon.mk
+++ b/BoardConfigCommon.mk
@@ -1,15 +1,15 @@
# Primary Arch
TARGET_ARCH := arm64
TARGET_ARCH_VARIANT := armv8-a
-TARGET_CPU_VARIANT := generic
TARGET_CPU_ABI := arm64-v8a
+TARGET_CPU_VARIANT := cortex-a53
# Secondary Arch
TARGET_2ND_ARCH := arm
TARGET_2ND_ARCH_VARIANT := armv7-a-neon
-TARGET_2ND_CPU_VARIANT := cortex-a15
TARGET_2ND_CPU_ABI := armeabi-v7a
TARGET_2ND_CPU_ABI2 := armeabi
+TARGET_2ND_CPU_VARIANT := cortex-a53
TARGET_USES_64_BIT_BINDER := true
TARGET_SUPPORTS_32_BIT_APPS := true
@@ -25,7 +25,6 @@
WPA_SUPPLICANT_VERSION := VER_0_8_X
BOARD_WPA_SUPPLICANT_DRIVER := NL80211
BOARD_HOSTAPD_DRIVER := NL80211
-CONFIG_DRIVER_NL80211 := y
TARGET_NO_BOOTLOADER := true
TARGET_NO_KERNEL := false
diff --git a/audio/Android.mk b/audio/Android.mk
index e909f2f..fe091a8 100644
--- a/audio/Android.mk
+++ b/audio/Android.mk
@@ -22,7 +22,7 @@
# required type is 'primary'. Other possibilites are 'a2dp', 'usb', etc.
include $(CLEAR_VARS)
-LOCAL_MODULE := audio.primary.hikey
+LOCAL_MODULE := audio.primary.$(TARGET_BOARD_PLATFORM)
LOCAL_MODULE_RELATIVE_PATH := hw
LOCAL_SRC_FILES := audio_hw.c
LOCAL_SHARED_LIBRARIES := liblog libcutils libtinyalsa
diff --git a/bootloader/EFI/BOOT/grub.cfg b/bootloader/EFI/BOOT/grub.cfg
index d5b166d..096a147 100644
--- a/bootloader/EFI/BOOT/grub.cfg
+++ b/bootloader/EFI/BOOT/grub.cfg
@@ -3,35 +3,35 @@
menuentry 'AOSP' {
search.fs_label boot root
set root=($root)
- linux /kernel console=ttyFIQ0 androidboot.console=ttyFIQ0 androidboot.hardware=hikey firmware_class.path=/system/etc/firmware efi=noruntime
+ linux /kernel console=ttyFIQ0 androidboot.console=ttyFIQ0 androidboot.hardware=hikey firmware_class.path=/system/etc/firmware efi=noruntime printk.devkmsg=on
initrd /ramdisk.img
devicetree /hi6220-hikey.dtb
}
menuentry 'AOSP-DEBUG' {
search.fs_label boot root
set root=($root)
- linux /kernel earlycon=pl011,0xf7113000 no_console_suspend=1 console=ttyFIQ0 androidboot.console=ttyFIQ0 sysrq_always_enabled androidboot.hardware=hikey firmware_class.path=/system/etc/firmware efi=noruntime
+ linux /kernel earlycon=pl011,0xf7113000 no_console_suspend=1 console=ttyFIQ0 androidboot.console=ttyFIQ0 sysrq_always_enabled androidboot.hardware=hikey firmware_class.path=/system/etc/firmware efi=noruntime printk.devkmsg=on
initrd /ramdisk.img
devicetree /hi6220-hikey.dtb
}
menuentry 'AOSP-CONSOLE' {
search.fs_label boot root
set root=($root)
- linux /kernel console=ttyAMA3,115200 androidboot.console=ttyAMA3 fiq_debugger.disable=Y androidboot.hardware=hikey firmware_class.path=/system/etc/firmware efi=noruntime
+ linux /kernel console=ttyAMA3,115200 androidboot.console=ttyAMA3 fiq_debugger.disable=Y androidboot.hardware=hikey firmware_class.path=/system/etc/firmware efi=noruntime printk.devkmsg=on
initrd /ramdisk.img
devicetree /hi6220-hikey.dtb
}
menuentry 'AOSP@720P' {
search.fs_label boot root
set root=($root)
- linux /kernel console=ttyFIQ0 androidboot.console=ttyFIQ0 androidboot.hardware=hikey firmware_class.path=/system/etc/firmware efi=noruntime video=HDMI-A-1:1280x720@60
+ linux /kernel console=ttyFIQ0 androidboot.console=ttyFIQ0 androidboot.hardware=hikey firmware_class.path=/system/etc/firmware efi=noruntime video=HDMI-A-1:1280x720@60 printk.devkmsg=on
initrd /ramdisk.img
devicetree /hi6220-hikey.dtb
}
menuentry 'AOSP@SVGA' {
search.fs_label boot root
set root=($root)
- linux /kernel console=ttyFIQ0 androidboot.console=ttyFIQ0 androidboot.hardware=hikey firmware_class.path=/system/etc/firmware efi=noruntime video=HDMI-A-1:800x600@60
+ linux /kernel console=ttyFIQ0 androidboot.console=ttyFIQ0 androidboot.hardware=hikey firmware_class.path=/system/etc/firmware efi=noruntime video=HDMI-A-1:800x600@60 printk.devkmsg=on
initrd /ramdisk.img
devicetree /hi6220-hikey.dtb
}
diff --git a/bt-wifi-firmware-util/Android.mk b/bt-wifi-firmware-util/Android.mk
index 525d903..cdfefe4 100644
--- a/bt-wifi-firmware-util/Android.mk
+++ b/bt-wifi-firmware-util/Android.mk
@@ -18,7 +18,11 @@
include $(CLEAR_VARS)
LOCAL_MODULE := TIInit_11.8.32.bts
-LOCAL_SRC_FILES := $(FW_WLAN_FULL_PATH)/TIInit_11.8.32.bts
+ifeq ($(TARGET_PRODUCT),hikey960)
+LOCAL_SRC_FILES := TIInit_11.8.32-pcm-960.bts
+else
+LOCAL_SRC_FILES := TIInit_11.8.32.bts
+endif
LOCAL_MODULE_CLASS := FIRMWARE
LOCAL_MODULE_PATH := $(TI_WILINK_FW_PATH)
LOCAL_MODULE_TAGS := optional
@@ -27,7 +31,7 @@
include $(CLEAR_VARS)
LOCAL_MODULE := wl18xx-fw-4.bin
-LOCAL_SRC_FILES := $(FW_WLAN_FULL_PATH)/wl18xx-fw-4.bin
+LOCAL_SRC_FILES := wl18xx-fw-4.bin
LOCAL_MODULE_CLASS := FIRMWARE
LOCAL_MODULE_PATH := $(TI_WILINK_FW_PATH)
LOCAL_MODULE_TAGS := optional
@@ -36,7 +40,11 @@
include $(CLEAR_VARS)
LOCAL_MODULE := wl18xx-conf.bin
-LOCAL_SRC_FILES := $(FW_WLAN_FULL_PATH)/wl18xx-conf.bin
+ifeq ($(TARGET_PRODUCT),hikey960)
+LOCAL_SRC_FILES := wl18xx-conf-wl1837mod.bin
+else
+LOCAL_SRC_FILES := wl18xx-conf.bin
+endif
LOCAL_MODULE_CLASS := FIRMWARE
LOCAL_MODULE_PATH := $(TI_WILINK_FW_PATH)
LOCAL_MODULE_TAGS := optional
diff --git a/bt-wifi-firmware-util/TIInit_11.8.32-pcm-960.bts b/bt-wifi-firmware-util/TIInit_11.8.32-pcm-960.bts
new file mode 100644
index 0000000..ff56d1c
--- /dev/null
+++ b/bt-wifi-firmware-util/TIInit_11.8.32-pcm-960.bts
Binary files differ
diff --git a/bt-wifi-firmware-util/wl18xx-conf-wl1837mod.bin b/bt-wifi-firmware-util/wl18xx-conf-wl1837mod.bin
new file mode 100644
index 0000000..5dd913c
--- /dev/null
+++ b/bt-wifi-firmware-util/wl18xx-conf-wl1837mod.bin
Binary files differ
diff --git a/bt-wifi-firmware-util/wl18xx-fw-4.bin b/bt-wifi-firmware-util/wl18xx-fw-4.bin
index 5e65dbc..71c160a 100755
--- a/bt-wifi-firmware-util/wl18xx-fw-4.bin
+++ b/bt-wifi-firmware-util/wl18xx-fw-4.bin
Binary files differ
diff --git a/build/tasks/dtimage.mk b/build/tasks/dtimage.mk
new file mode 100644
index 0000000..9dc6668
--- /dev/null
+++ b/build/tasks/dtimage.mk
@@ -0,0 +1,12 @@
+ifneq ($(filter hikey%, $(TARGET_DEVICE)),)
+ifneq ($(TARGET_NO_DTIMAGE), true)
+
+MKDTIMG := device/linaro/hikey/installer/hikey960/mkdtimg
+DTB := $(PRODUCT_OUT)/hi3660-hikey960.dtb
+
+$(PRODUCT_OUT)/dt.img: $(DTB)
+ $(MKDTIMG) -c -d $(DTB) -o $@
+
+droidcore: $(PRODUCT_OUT)/dt.img
+endif
+endif
diff --git a/factory-images/generate-factory-images-hikey960.sh b/factory-images/generate-factory-images-hikey960.sh
new file mode 100755
index 0000000..9d2b02b
--- /dev/null
+++ b/factory-images/generate-factory-images-hikey960.sh
@@ -0,0 +1,98 @@
+# Copyright 2011, 2016 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.
+
+
+DEVICE_DIR=device/linaro/hikey/
+DEVICE=hikey960
+PRODUCT=hikey960
+
+BUILD=eng.`whoami`
+BUILDNAME=`ls ${ANDROID_BUILD_TOP}/${PRODUCT}-img-${BUILD}.zip 2> /dev/null`
+if [ $? -ne 0 ]; then
+ VERSION=linaro-`date +"%Y.%m.%d"`
+else
+ BUILDNAME=`ls ${ANDROID_BUILD_TOP}/${PRODUCT}-img-*.zip 2> /dev/null`
+ BUILD=`basename ${BUILDNAME} | cut -f3 -d'-' | cut -f1 -d'.'`
+ VERSION=$BUILD
+fi
+
+# Prepare the staging directory
+rm -rf tmp
+mkdir -p tmp/$PRODUCT-$VERSION
+
+# copy over bootloader binaries
+cp $ANDROID_BUILD_TOP/$DEVICE_DIR/installer/hikey960/bl31.bin tmp/$PRODUCT-$VERSION/
+cp $ANDROID_BUILD_TOP/$DEVICE_DIR/installer/hikey960/fastboot.img tmp/$PRODUCT-$VERSION/
+cp $ANDROID_BUILD_TOP/$DEVICE_DIR/installer/hikey960/lpm3.img tmp/$PRODUCT-$VERSION/
+cp $ANDROID_BUILD_TOP/$DEVICE_DIR/installer/hikey960/nvme.img tmp/$PRODUCT-$VERSION/
+cp $ANDROID_BUILD_TOP/$DEVICE_DIR/installer/hikey960/ptable.img tmp/$PRODUCT-$VERSION/
+cp $ANDROID_BUILD_TOP/$DEVICE_DIR/installer/hikey960/README tmp/$PRODUCT-$VERSION/
+cp $ANDROID_BUILD_TOP/$DEVICE_DIR/installer/hikey960/sec_xloader.img tmp/$PRODUCT-$VERSION/
+
+# copy over dts.img
+cp $ANDROID_BUILD_TOP/out/target/product/hikey960/dt.img tmp/$PRODUCT-$VERSION/
+
+# copy over the update image
+cp ${SRCPREFIX}$PRODUCT-img-$BUILD.zip tmp/$PRODUCT-$VERSION/image-$PRODUCT-$VERSION.zip
+
+# XXX hikey960's fastboot update currently doesn't format cache/userdata, so do it manually
+# XXX Remove this when the bug is fixed.
+cp $ANDROID_BUILD_TOP/out/target/product/hikey960/cache.img tmp/$PRODUCT-$VERSION/
+cp $ANDROID_BUILD_TOP/out/target/product/hikey960/userdata.img tmp/$PRODUCT-$VERSION/
+
+
+# Write flash-all.sh
+cat > tmp/$PRODUCT-$VERSION/flash-all.sh << EOF
+#!/bin/bash
+
+# Copyright 2012, 2016 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.
+
+
+
+fastboot flash ptable ptable.img
+fastboot flash xloader sec_xloader.img
+fastboot flash fastboot fastboot.img
+fastboot flash nvme nvme.img
+fastboot flash fw_lpm3 lpm3.img
+fastboot flash trustfirmware bl31.bin
+fastboot flash dts dt.img
+
+# XXX fastboot update doesn't format cache and userdata
+# XXX so flash those manually. Remove this later.
+fastboot flash cache cache.img
+fastboot flash userdata userdata.img
+
+fastboot update image-$PRODUCT-$VERSION.zip
+EOF
+
+chmod a+x tmp/$PRODUCT-$VERSION/flash-all.sh
+
+# Create the distributable package
+(cd tmp ; zip -r ../$PRODUCT-$VERSION-factory.zip $PRODUCT-$VERSION)
+mv $PRODUCT-$VERSION-factory.zip $PRODUCT-$VERSION-factory-$(sha256sum < $PRODUCT-$VERSION-factory.zip | cut -b -8).zip
+
+# Clean up
+rm -rf tmp
diff --git a/factory-images/generate-factory-images-package.sh b/factory-images/generate-factory-images-package.sh
index 67715ee..7a51f7f 100755
--- a/factory-images/generate-factory-images-package.sh
+++ b/factory-images/generate-factory-images-package.sh
@@ -16,4 +16,4 @@
source $ANDROID_BUILD_TOP/device/common/clear-factory-images-variables.sh
# HiKey unfortunately can't use the ./generate-factory-images-common.sh script
-source $ANDROID_BUILD_TOP/device/linaro/hikey/factory-images/generate-factory-images-hikey.sh
+source $ANDROID_BUILD_TOP/device/linaro/hikey/factory-images/generate-factory-images-$TARGET_PRODUCT.sh
diff --git a/gralloc/Android.mk b/gralloc/Android.mk
index 82c6f8f..d843436 100644
--- a/gralloc/Android.mk
+++ b/gralloc/Android.mk
@@ -13,7 +13,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-
+ifeq ($(TARGET_PRODUCT),hikey)
LOCAL_PATH := $(call my-dir)
# HAL module implemenation, not prelinked and stored in
@@ -34,3 +34,4 @@
LOCAL_MODULE_RELATIVE_PATH := hw
include $(BUILD_SHARED_LIBRARY)
+endif
diff --git a/gralloc/alloc_device.cpp b/gralloc/alloc_device.cpp
index 3c4531b..cef5851 100644
--- a/gralloc/alloc_device.cpp
+++ b/gralloc/alloc_device.cpp
@@ -128,17 +128,19 @@
return -1;
}
+ // we do not need ion_hnd once we have shared_fd
+ if (0 != ion_free(m->ion_client, ion_hnd))
+ {
+ AWAR("ion_free( %d ) failed", m->ion_client);
+ }
+ ion_hnd = ION_INVALID_HANDLE;
+
cpu_ptr = (unsigned char *)mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_SHARED, shared_fd, 0);
if (MAP_FAILED == cpu_ptr)
{
AERR("ion_map( %d ) failed", m->ion_client);
- if (0 != ion_free(m->ion_client, ion_hnd))
- {
- AERR("ion_free( %d ) failed", m->ion_client);
- }
-
close(shared_fd);
return -1;
}
@@ -148,7 +150,6 @@
if (NULL != hnd)
{
hnd->share_fd = shared_fd;
- hnd->ion_hnd = ion_hnd;
*pHandle = hnd;
return 0;
}
@@ -165,13 +166,6 @@
AERR("munmap failed for base:%p size: %lu", cpu_ptr, (unsigned long)size);
}
- ret = ion_free(m->ion_client, ion_hnd);
-
- if (0 != ret)
- {
- AERR("ion_free( %d ) failed", m->ion_client);
- }
-
return -1;
}
#endif
@@ -339,6 +333,12 @@
#endif
}
+
+ // correct numFds/numInts when there is no dmabuf fd
+ if (hnd->share_fd < 0) {
+ hnd->numFds--;
+ hnd->numInts++;
+ }
#endif
*pHandle = hnd;
@@ -560,11 +560,6 @@
close(hnd->share_fd);
- if (0 != ion_free(m->ion_client, hnd->ion_hnd))
- {
- AERR("Failed to ion_free( ion_client: %d ion_hnd: %p )", m->ion_client, (void *)(uintptr_t)hnd->ion_hnd);
- }
-
memset((void *)hnd, 0, sizeof(*hnd));
#else
AERR("Can't free dma_buf memory for handle:0x%x. Not supported.", (unsigned int)hnd);
diff --git a/gralloc/framebuffer_device.cpp b/gralloc/framebuffer_device.cpp
index 3f74e8d..bacefee 100644
--- a/gralloc/framebuffer_device.cpp
+++ b/gralloc/framebuffer_device.cpp
@@ -471,6 +471,12 @@
/* initialize our state here */
framebuffer_device_t *dev = (framebuffer_device_t *)malloc(sizeof(framebuffer_device_t));
+ if (dev == NULL)
+ {
+ AERR("Error to malloc the framebuffer (%s)", strerror(errno));
+ gralloc_close(gralloc_device);
+ return -ENOMEM;
+ }
memset(dev, 0, sizeof(*dev));
/* initialize the procs */
diff --git a/gralloc/gralloc_priv.h b/gralloc/gralloc_priv.h
index b931ac2..3615960 100644
--- a/gralloc/gralloc_priv.h
+++ b/gralloc/gralloc_priv.h
@@ -186,7 +186,7 @@
int offset;
#if GRALLOC_ARM_DMA_BUF_MODULE
- ion_user_handle_t ion_hnd;
+ ion_user_handle_t ion_hnd_UNUSED;
#endif
#if GRALLOC_ARM_DMA_BUF_MODULE
@@ -223,7 +223,7 @@
offset(0)
#if GRALLOC_ARM_DMA_BUF_MODULE
,
- ion_hnd(ION_INVALID_HANDLE)
+ ion_hnd_UNUSED(ION_INVALID_HANDLE)
#endif
{
@@ -255,7 +255,7 @@
#endif
shallow_fbdev_fd(0),
offset(0),
- ion_hnd(ION_INVALID_HANDLE)
+ ion_hnd_UNUSED(ION_INVALID_HANDLE)
{
version = sizeof(native_handle);
@@ -290,7 +290,7 @@
offset(fb_offset)
#if GRALLOC_ARM_DMA_BUF_MODULE
,
- ion_hnd(ION_INVALID_HANDLE)
+ ion_hnd_UNUSED(ION_INVALID_HANDLE)
#endif
{
@@ -313,9 +313,21 @@
{
const private_handle_t *hnd = (const private_handle_t *)h;
- if (!h || h->version != sizeof(native_handle) || h->numFds != sNumFds ||
- h->numInts != (sizeof(private_handle_t) - sizeof(native_handle)) / sizeof(int) - sNumFds ||
- hnd->magic != sMagic)
+ if (!h || h->version != sizeof(native_handle) || hnd->magic != sMagic)
+ {
+ return -EINVAL;
+ }
+
+ int numFds = sNumFds;
+ int numInts = (sizeof(private_handle_t) - sizeof(native_handle)) / sizeof(int) - sNumFds;
+#if GRALLOC_ARM_DMA_BUF_MODULE
+ if (hnd->share_fd < 0) {
+ numFds--;
+ numInts++;
+ }
+#endif
+
+ if (h->numFds != numFds || h->numInts != numInts)
{
return -EINVAL;
}
diff --git a/hikey.mk b/hikey.mk
index 40e1f8b..3174ba4 100644
--- a/hikey.mk
+++ b/hikey.mk
@@ -3,7 +3,7 @@
endif
TARGET_PREBUILT_KERNEL := device/linaro/hikey-kernel/Image-dtb-$(TARGET_KERNEL_USE)
TARGET_PREBUILT_DTB := device/linaro/hikey-kernel/hi6220-hikey.dtb-$(TARGET_KERNEL_USE)
-ifeq ($(TARGET_KERNEL_USE), 4.1)
+ifeq ($(TARGET_KERNEL_USE), 3.18)
TARGET_FSTAB := fstab.hikey-$(TARGET_KERNEL_USE)
else
TARGET_FSTAB := fstab.hikey
diff --git a/hikey/BoardConfig.mk b/hikey/BoardConfig.mk
index d10a51c..df97048 100644
--- a/hikey/BoardConfig.mk
+++ b/hikey/BoardConfig.mk
@@ -1,12 +1,18 @@
include device/linaro/hikey/BoardConfigCommon.mk
TARGET_BOARD_PLATFORM := hikey
-ifeq ($(TARGET_KERNEL_USE), 4.1)
+ifeq ($(TARGET_KERNEL_USE), 3.18)
BOARD_KERNEL_CMDLINE := console=ttyAMA3,115200 androidboot.console=ttyAMA3 androidboot.hardware=hikey firmware_class.path=/system/etc/firmware efi=noruntime
else
BOARD_KERNEL_CMDLINE := console=ttyFIQ0 androidboot.console=ttyFIQ0 androidboot.hardware=hikey firmware_class.path=/system/etc/firmware efi=noruntime
endif
+## printk.devkmsg only has meaning for kernel 4.9 and later
+## it would be ignored by kernel 3.18 and kernel 4.4
+BOARD_KERNEL_CMDLINE += printk.devkmsg=on
+
+TARGET_NO_DTIMAGE := true
+
BOARD_SYSTEMIMAGE_PARTITION_SIZE := 1610612736
ifeq ($(TARGET_USERDATAIMAGE_4GB), true)
BOARD_USERDATAIMAGE_PARTITION_SIZE := 1595915776
diff --git a/hikey/README b/hikey/README
index 4995736..9652e20 100644
--- a/hikey/README
+++ b/hikey/README
@@ -5,8 +5,8 @@
$ repo init -u https://android.googlesource.com/platform/manifest -b master & repo sync -j24
Download and extract HDMI binaries:
-$ wget https://dl.google.com/dl/android/aosp/linaro-hikey-20160226-67c37b1a.tgz
-$ tar xzf linaro-hikey-20160226-67c37b1a.tgz
+$ wget https://dl.google.com/dl/android/aosp/linaro-hikey-20170523-4b9ebaff.tgz
+$ tar xzf linaro-hikey-20170523-4b9ebaff.tgz
$ ./extract-linaro-hikey.sh
Install mcopy utility:
diff --git a/hikey/fstab.hikey-4.1 b/hikey/fstab.hikey-3.18
similarity index 100%
rename from hikey/fstab.hikey-4.1
rename to hikey/fstab.hikey-3.18
diff --git a/hikey960.mk b/hikey960.mk
new file mode 100644
index 0000000..90d8784
--- /dev/null
+++ b/hikey960.mk
@@ -0,0 +1,12 @@
+#
+# Inherit the full_base and device configurations
+$(call inherit-product, device/linaro/hikey/hikey960/device-hikey960.mk)
+$(call inherit-product, device/linaro/hikey/device-common.mk)
+$(call inherit-product, $(SRC_TARGET_DIR)/product/full_base.mk)
+
+#
+# Overrides
+PRODUCT_NAME := hikey960
+PRODUCT_DEVICE := hikey960
+PRODUCT_BRAND := Android
+PRODUCT_MODEL := AOSP on hikey960
diff --git a/hikey960/BoardConfig.mk b/hikey960/BoardConfig.mk
new file mode 100644
index 0000000..94631c2
--- /dev/null
+++ b/hikey960/BoardConfig.mk
@@ -0,0 +1,14 @@
+include device/linaro/hikey/BoardConfigCommon.mk
+
+TARGET_BOARD_PLATFORM := hikey960
+
+TARGET_NO_DTIMAGE := false
+
+BOARD_KERNEL_CMDLINE := androidboot.hardware=hikey960 androidboot.selinux=permissive
+BOARD_KERNEL_CMDLINE += firmware_class.path=/system/etc/firmware loglevel=15
+BOARD_MKBOOTIMG_ARGS := --base 0x0 --tags_offset 0x07a00000 --kernel_offset 0x00080000 --ramdisk_offset 0x07c00000
+
+BOARD_SYSTEMIMAGE_PARTITION_SIZE := 2768240640 # 2640MB
+BOARD_USERDATAIMAGE_PARTITION_SIZE := 25769803776 # 24GB
+BOARD_CACHEIMAGE_PARTITION_SIZE := 8388608 # 8MB
+BOARD_FLASH_BLOCK_SIZE := 512
diff --git a/hikey960/board-info.txt b/hikey960/board-info.txt
new file mode 100644
index 0000000..3bd6c04
--- /dev/null
+++ b/hikey960/board-info.txt
@@ -0,0 +1 @@
+require board=hikey960
diff --git a/hikey960/device-hikey960.mk b/hikey960/device-hikey960.mk
new file mode 100644
index 0000000..95d8750
--- /dev/null
+++ b/hikey960/device-hikey960.mk
@@ -0,0 +1,32 @@
+#
+# Copyright (C) 2011 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.
+#
+
+PRODUCT_COPY_FILES += device/linaro/hikey-kernel/Image.gz-hikey960:kernel \
+ device/linaro/hikey-kernel/hi3660-hikey960.dtb:hi3660-hikey960.dtb
+
+PRODUCT_COPY_FILES += $(LOCAL_PATH)/fstab.hikey960:root/fstab.hikey960 \
+ device/linaro/hikey/init.common.rc:root/init.hikey960.rc \
+ device/linaro/hikey/init.common.usb.rc:root/init.hikey960.usb.rc \
+ device/linaro/hikey/ueventd.common.rc:root/ueventd.hikey960.rc \
+ device/linaro/hikey/common.kl:system/usr/keylayout/hikey960.kl
+
+# Build HiKey960 HDMI audio HAL. Experimental only may not work. FIXME
+PRODUCT_PACKAGES += audio.primary.hikey960
+
+PRODUCT_PACKAGES += power.hikey960
+
+# Include vendor binaries
+$(call inherit-product-if-exists, vendor/linaro/hikey960/device-vendor.mk)
diff --git a/hikey960/fstab.hikey960 b/hikey960/fstab.hikey960
new file mode 100644
index 0000000..bb78c3e
--- /dev/null
+++ b/hikey960/fstab.hikey960
@@ -0,0 +1,13 @@
+# Android fstab file.
+#<src> <mnt_point> <type> <mnt_flags and options> <fs_mgr_flags>
+# The filesystem that contains the filesystem checker binary (typically /system) cannot
+# specify MF_CHECK, and must come before any filesystems that do specify MF_CHECK
+
+#/dev/block/platform/soc/ff3b0000.ufs/by-name/system_a /system ext4 ro wait
+/dev/block/sdd10 /system ext4 ro wait
+#/dev/block/platform/soc/ff3b0000.ufs/by-name/cache /cache ext4 discard,noauto_da_alloc,data=ordered,user_xattr,discard,barrier=1 wait
+/dev/block/sdd5 /cache ext4 discard,noauto_da_alloc,data=ordered,user_xattr,discard,barrier=1 wait
+#/dev/block/platform/soc/ff3b0000.ufs/by-name/userdata /data ext4 discard,noauto_da_alloc,data=ordered,user_xattr,discard,barrier=1 wait
+/dev/block/sdd13 /data ext4 discard,noauto_da_alloc,data=ordered,user_xattr,discard,barrier=1 wait
+/devices/platform/soc/ff37f000.dwmmc1/mmc_host/mmc* auto auto defaults voldmanaged=sdcard1:auto,encryptable=userdata
+/devices/platform/soc/ff200000.hisi_usb/ff100000.dwc3/xhci-hcd.1.auto/usb* auto auto defaults voldmanaged=usbdisk:auto,encryptable=userdata
diff --git a/init.common.rc b/init.common.rc
index 11bc675..8d7a35d 100644
--- a/init.common.rc
+++ b/init.common.rc
@@ -15,12 +15,6 @@
mount_all /fstab.${ro.hardware}
setprop ro.crypto.fuse_sdcard false
-on post-fs-data
- mkdir /data/media 0770 media_rw media_rw
- mkdir /data/misc/gatord 0700 root root
- # Set SELinux security contexts for files used by lava.
- restorecon_recursive /data/local/tmp/lava
-
on post-fs
# For legacy support
@@ -47,22 +41,6 @@
# Set supported opengles version
setprop ro.opengles.version 196608
- # update cpuset now that processors are up
- # Foreground should contain most cores (7 is reserved for top-app)
- write /dev/cpuset/foreground/cpus 0-6
-
- # top-app gets all cpus (including reserved #7)
- write /dev/cpuset/top-app/cpus 0-7
-
- #background contains a small subset (generally one little core)
- write /dev/cpuset/background/cpus 0
-
- # add system-background cpuset, a new cpuset for system services
- # that should not run on larger cores
- # system-background is for system tasks that should only run on
- # little cores, not on bigs to be used only by init
- write /dev/cpuset/system-background/cpus 0-3
-
#
# EAS stune boosting interfaces
#
@@ -86,6 +64,29 @@
# enable test harness
setprop ro.test_harness true
+on post-fs-data
+ mkdir /data/media 0770 media_rw media_rw
+ mkdir /data/misc/gatord 0700 root root
+ # Set SELinux security contexts for files used by lava.
+ restorecon_recursive /data/local/tmp/lava
+
+on property:sys.boot_completed=1
+ # update cpuset now that processors are up
+ # Foreground should contain most cores (7 is reserved for top-app)
+ write /dev/cpuset/foreground/cpus 0-6
+
+ # top-app gets all cpus (including reserved #7)
+ write /dev/cpuset/top-app/cpus 0-7
+
+ #background contains a small subset (generally one little core)
+ write /dev/cpuset/background/cpus 0
+
+ # add system-background cpuset, a new cpuset for system services
+ # that should not run on larger cores
+ # system-background is for system tasks that should only run on
+ # little cores, not on bigs to be used only by init
+ write /dev/cpuset/system-background/cpus 0-3
+
on property:usb_speed.switch=high
write /sys/kernel/debug/f72c0000.usb/config "0"
diff --git a/init.common.usb.rc b/init.common.usb.rc
index de54dbd..ff3d807 100644
--- a/init.common.usb.rc
+++ b/init.common.usb.rc
@@ -24,7 +24,6 @@
symlink /config/usb_gadget/g1/configs/b.1 /config/usb_gadget/g1/os_desc/b.1
mount functionfs adb /dev/usb-ffs/adb uid=2000,gid=2000
setprop sys.usb.configfs 1
- setprop sys.usb.controller "f72c0000.usb"
on property:sys.usb.config=none && property:sys.usb.configfs=1
write /config/usb_gadget/g1/os_desc/use 0
diff --git a/installer/hikey960/README b/installer/hikey960/README
new file mode 100644
index 0000000..6ef3074
--- /dev/null
+++ b/installer/hikey960/README
@@ -0,0 +1,41 @@
+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.
+
+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/installer/hikey960/bl31.bin b/installer/hikey960/bl31.bin
new file mode 100644
index 0000000..abebea6
--- /dev/null
+++ b/installer/hikey960/bl31.bin
Binary files differ
diff --git a/installer/hikey960/fastboot.img b/installer/hikey960/fastboot.img
new file mode 100644
index 0000000..3dcbc2a
--- /dev/null
+++ b/installer/hikey960/fastboot.img
Binary files differ
diff --git a/installer/hikey960/flash-all.sh b/installer/hikey960/flash-all.sh
new file mode 100755
index 0000000..7b7db51
--- /dev/null
+++ b/installer/hikey960/flash-all.sh
@@ -0,0 +1,28 @@
+#!/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 ptable "${INSTALLER_DIR}"/ptable.img
+fastboot flash xloader "${INSTALLER_DIR}"/sec_xloader.img
+fastboot flash fastboot "${INSTALLER_DIR}"/fastboot.img
+fastboot flash nvme "${INSTALLER_DIR}"/nvme.img
+fastboot flash fw_lpm3 "${INSTALLER_DIR}"/lpm3.img
+fastboot flash trustfirmware "${INSTALLER_DIR}"/bl31.bin
+fastboot flash boot "${ANDROID_PRODUCT_OUT}"/boot.img
+fastboot flash dts "${ANDROID_PRODUCT_OUT}"/dt.img
+fastboot flash system "${ANDROID_PRODUCT_OUT}"/system.img
+fastboot flash cache "${ANDROID_PRODUCT_OUT}"/cache.img
+fastboot flash userdata "${ANDROID_PRODUCT_OUT}"/userdata.img
diff --git a/installer/hikey960/lpm3.img b/installer/hikey960/lpm3.img
new file mode 100644
index 0000000..c35a193
--- /dev/null
+++ b/installer/hikey960/lpm3.img
Binary files differ
diff --git a/installer/hikey960/mkdtimg b/installer/hikey960/mkdtimg
new file mode 100755
index 0000000..6572204
--- /dev/null
+++ b/installer/hikey960/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/installer/hikey960/nvme.img b/installer/hikey960/nvme.img
new file mode 100644
index 0000000..ca5bc7c
--- /dev/null
+++ b/installer/hikey960/nvme.img
Binary files differ
diff --git a/installer/hikey960/ptable.img b/installer/hikey960/ptable.img
new file mode 100644
index 0000000..7c9e36e
--- /dev/null
+++ b/installer/hikey960/ptable.img
Binary files differ
diff --git a/installer/hikey960/sec_xloader.img b/installer/hikey960/sec_xloader.img
new file mode 100644
index 0000000..84fa624
--- /dev/null
+++ b/installer/hikey960/sec_xloader.img
Binary files differ
diff --git a/self-extractors_hikey960/Android.mk b/self-extractors_hikey960/Android.mk
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/self-extractors_hikey960/Android.mk
diff --git a/self-extractors_hikey960/PART1 b/self-extractors_hikey960/PART1
new file mode 100644
index 0000000..935267e
--- /dev/null
+++ b/self-extractors_hikey960/PART1
@@ -0,0 +1,12 @@
+#
+# Usage is subject to the enclosed license agreement
+
+echo
+echo The license for this software will now be displayed.
+echo You must agree to this license before using this software.
+echo
+echo -n Press Enter to view the license
+read dummy
+echo
+
+more << __EOF__
diff --git a/self-extractors_hikey960/PART2 b/self-extractors_hikey960/PART2
new file mode 100644
index 0000000..30e8d43
--- /dev/null
+++ b/self-extractors_hikey960/PART2
@@ -0,0 +1,22 @@
+__EOF__
+
+if test $? != 0
+then
+ echo ERROR: Couldn\'t display license file 1>&2
+ exit 1
+fi
+
+echo
+
+echo -n Type \"I ACCEPT\" if you agree to the terms of the license:\
+read typed
+
+if test "$typed" != I\ ACCEPT
+then
+ echo
+ echo You didn\'t accept the license. Extraction aborted.
+ exit 2
+fi
+
+echo
+
diff --git a/self-extractors_hikey960/PART3 b/self-extractors_hikey960/PART3
new file mode 100644
index 0000000..6847be5
--- /dev/null
+++ b/self-extractors_hikey960/PART3
@@ -0,0 +1,12 @@
+
+if test $? != 0
+then
+ echo
+ echo ERROR: Couldn\'t extract files. 1>&2
+ exit 3
+else
+ echo
+ echo Files extracted successfully.
+fi
+exit 0
+
diff --git a/self-extractors_hikey960/PROLOGUE b/self-extractors_hikey960/PROLOGUE
new file mode 100644
index 0000000..c856ef1
--- /dev/null
+++ b/self-extractors_hikey960/PROLOGUE
@@ -0,0 +1,2 @@
+#!/bin/bash
+#
diff --git a/self-extractors_hikey960/arm/COPYRIGHT b/self-extractors_hikey960/arm/COPYRIGHT
new file mode 100644
index 0000000..4e017c2
--- /dev/null
+++ b/self-extractors_hikey960/arm/COPYRIGHT
@@ -0,0 +1 @@
+# (C) HiSilicon Co. Ltd.
diff --git a/self-extractors_hikey960/arm/LICENSE b/self-extractors_hikey960/arm/LICENSE
new file mode 100644
index 0000000..4a8cdd5
--- /dev/null
+++ b/self-extractors_hikey960/arm/LICENSE
@@ -0,0 +1,177 @@
+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
+CLICKING "I AGREE" OR 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.
+
+"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 GPU 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 the Software or certain components or optional
+ functionality in the Software, as applicable, solely for the purposes
+ of designing or developing applications for use in conjunction with
+ MALI GPU based products manufactured under licence from ARM; and (ii)
+ modify the Software or certain components or optional functionality in
+ the Software for the purposes of porting the Software to your target;
+
+ 2. RESTRICTIONS ON USE OF THE SOFTWARE.
+
+ COPYING: You shall not use or copy the Software except as expressly
+ authorised in this Licence. You may make one additional copy of the
+ delivered Software for backup or archival purposes.
+
+ BENCHMARKING: This Licence does not prevent you from using the
+ Software for internal benchmarking purposes. However, you shall treat
+ 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, as confidential
+ information and you shall not disclose such information to any third
+ party without the express written permission 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.
+
+ 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 and not any modifications thereto.
+
+ 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 SOFTWARE APPLICATIONS, INCLUDING WITHOUT LIMITATION, SOFTWARE
+ 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. CONFIDENTIALITY.
+
+ You acknowledge that the Software and any benchmarking data and
+ related information mentioned in Clause 2 may contain trade secrets
+ and confidential material and you agree to maintain all such
+ information in confidence and apply security measures no less
+ stringent than the measures which you apply to protect your own like
+ information, but not less than a reasonable degree of care, to prevent
+ their unauthorised disclosure and use. Subject to any restrictions
+ imposed by applicable law, the period of confidentiality shall be
+ indefinite. You agree not to use any such information other than in
+ normal use of the Software under the licences granted in this Licence.
+
+ 7. 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.
+
+ 8. 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 confidential
+ information and destroy all copies of the Software and confidential
+ information in your possession, together with all documentation and
+ related materials. The provisions of clauses 4, 5, 6, 7, 8 and 9 shall
+ survive termination of this Licence.
+
+ 9. 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 Licence is subject to U.S. export
+ control laws, including the U.S. Export Administration Act and its
+ associated regulations, and may be subject to export or import
+ regulations in other countries. You agree to comply fully with all
+ laws and regulations of the United States and other countries ("Export
+ Laws") to assure that the Software, is not (1) exported, directly or
+ indirectly, in violation of Export Laws, either to any countries that
+ are subject to U.S.A. export restrictions or to any end user who has
+ been prohibited from participating in the U.S.A. export transactions
+ by any federal agency of the U.S.A. government; or (2) intended to be
+ used for any purpose prohibited by Export Laws, including, without
+ limitation, nuclear, chemical, or biological weapons proliferation.
+
+Mali GPU Userspace LES-PRE-20376
diff --git a/self-extractors_hikey960/arm/staging/BoardConfigPartial.mk b/self-extractors_hikey960/arm/staging/BoardConfigPartial.mk
new file mode 100644
index 0000000..c0aab8b
--- /dev/null
+++ b/self-extractors_hikey960/arm/staging/BoardConfigPartial.mk
@@ -0,0 +1,13 @@
+# Copyright 2016 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.
diff --git a/self-extractors_hikey960/arm/staging/device-partial.mk b/self-extractors_hikey960/arm/staging/device-partial.mk
new file mode 100644
index 0000000..8e667d7
--- /dev/null
+++ b/self-extractors_hikey960/arm/staging/device-partial.mk
@@ -0,0 +1,18 @@
+# Copyright 2016 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.
+
+# Linaro blob(s) necessary for Hikey hardware
+PRODUCT_COPY_FILES := \
+ vendor/linaro/hikey960/arm/proprietary/lib64/libGLES_mali.so:system/lib64/egl/libGLES_mali.so:linaro \
+ vendor/linaro/hikey960/arm/proprietary/libGLES_mali.so:system/lib/egl/libGLES_mali.so:linaro
diff --git a/self-extractors_hikey960/extract-lists.txt b/self-extractors_hikey960/extract-lists.txt
new file mode 100644
index 0000000..745d295
--- /dev/null
+++ b/self-extractors_hikey960/extract-lists.txt
@@ -0,0 +1,20 @@
+ arm)
+ TO_EXTRACT="\
+ SYSTEM/lib/egl/libGLES_mali.so \
+ SYSTEM/lib64/egl/libGLES_mali.so \
+ "
+ ;;
+ hisilicon)
+ TO_EXTRACT="\
+ SYSTEM/lib/libhilog.so \
+ SYSTEM/lib64/libhilog.so \
+ SYSTEM/lib/libion.so \
+ SYSTEM/lib64/libion.so \
+ SYSTEM/lib/hw/gralloc.hikey960.so \
+ SYSTEM/lib64/hw/gralloc.hikey960.so \
+ SYSTEM/vendor/lib/hwcomposer.hikey960.so \
+ SYSTEM/vendor/lib64/hwcomposer.hikey960.so \
+ SYSTEM/vendor/lib/libhiion.so \
+ SYSTEM/vendor/lib64/libhiion.so \
+ "
+ ;;
diff --git a/self-extractors_hikey960/hisilicon/COPYRIGHT b/self-extractors_hikey960/hisilicon/COPYRIGHT
new file mode 100644
index 0000000..4e017c2
--- /dev/null
+++ b/self-extractors_hikey960/hisilicon/COPYRIGHT
@@ -0,0 +1 @@
+# (C) HiSilicon Co. Ltd.
diff --git a/self-extractors_hikey960/hisilicon/LICENSE b/self-extractors_hikey960/hisilicon/LICENSE
new file mode 100644
index 0000000..5d0590b
--- /dev/null
+++ b/self-extractors_hikey960/hisilicon/LICENSE
@@ -0,0 +1,193 @@
+End User License Agreement for Software related to Hisilicon HiKey960 Board
+
+THIS END USER LICENSE AGREEMENT (“AGREEMENT”) IS A LEGAL AGREEMENT
+BETWEEN YOU (EITHER A SINGLE INDIVIDUAL, OR SINGLE LEGAL ENTITY) AND
+HISILICON TECHNOLOGIES CO., LTD. ("HISILICON") FOR THE USE OF THE
+SOFTWARE ACCOMPANYING THIS AGREEMENT. HISILICON IS ONLY WILLING TO
+LICENSE THE SOFTWARE TO YOU ON CONDITION THAT YOU ACCEPT ALL OF THE
+TERMS IN THIS AGREEMENT. BY CLICKING “I AGREE” OR BY INSTALLING OR
+OTHERWISE USING OR COPYING THE SOFTWARE YOU INDICATE THAT YOU AGREE TO
+BE BOUND BY ALL OF THE TERMS OF THIS AGREEMENT. IF YOU DO NOT AGREE TO
+THE TERMS OF THIS AGREEMENT, HISILICON IS UNWILLING TO LICENSE THE
+SOFTWARE TO YOU AND YOU MAY NOT INSTALL, USE OR COPY THE SOFTWARE, AND
+YOU SHALL PROMPTLY DESTROY, DELETE, OR RETURN THE SOFTWARE TO YOUR
+SUPPLIER.
+
+
+“SOFTWARE” means the software in object code provided under the terms
+of this Agreement related to Hisilicon HiKey960 Board.
+
+
+1. GRANT OF LICENSE
+
+In consideration of your agreement to abide by the following terms,
+and subject to the terms and conditions of this Agreement, HISILICON
+hereby grants YOU, a non-transferable, non-exclusive, royalty-free,
+revocable, worldwide copyright license (without the right to
+sublicense) to use and copy the SOFTWARE solely for the purpose of
+designing or developing applications for use in conjunction with
+Hisilicon HiKey960 Board.
+
+All rights to the SOFTWARE and all intellectual property rights
+contained therein shall remain the sole and exclusive property of
+HISILICON. The SOFTWARE is licensed not sold. Except as expressly
+licensed in Clause 1, in no event shall the license granted in this
+Clause 1 be construed as granting YOU expressly or by implication,
+estoppels or otherwise, licenses to any intellectual property rights,
+including but not limited to patent rights, copyrights, trademark or
+trade secret in the SOFTWARE.
+
+No right is granted to YOU under this Agreement to manufacture, have
+manufactured, or sell, supply or distribute any products which have
+taken into use or which embody any of the SOFTWARE or any of the
+intellectual property rights embodied therein.
+
+
+2. RESTRICTIONS
+
+This Agreement does not prevent YOU from using the SOFTWARE for
+internal benchmarking purposes. However, YOU shall treat 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, as confidential
+information and YOU shall not disclose such information to any third
+party without the express written permission of HISILICON.
+
+YOU shall reproduce and not remove or obscure any notice incorporated
+by HISILICON in the SOFTWARE to protect HISILICON’s intellectual
+property rights embodied therein.
+
+YOU shall not decompile, disassemble, or reverse engineer the SOFTWARE.
+
+
+3. FEEDBACK
+
+YOU may choose to provide suggestions, comments, feedback, ideas,
+modifications or know-how (whether in oral or written form) relating
+to the use of the SOFTWARE ("Feedback") to HISILICON under the terms
+of this Agreement. YOU hereby grants to HISILICON and its affiliates,
+under all of your and your affiliates’ (as applicable) intellectual
+property rights, a perpetual, irrevocable, royalty free,
+non-exclusive, worldwide license to (i) use, copy and modify the
+Feedback; (ii) sell, supply, or otherwise distribute the Feedback;
+(iii) design, have designed, manufacture, have manufactured, use,
+import, sell, and otherwise distribute and dispose of products that
+incorporate the Feedback; and (iv) sublicense (together with the
+rights to further sublicense) the rights granted in this paragraph to
+any third party.
+
+
+4. NO WARRANTY
+
+YOU AGREE THAT THE SOFTWARE IS PROVIDED BY HISILICON ON AN "AS IS"
+BASIS. HISILICON MAKES NO WARRANTY, EXPRESSED OR IMPLIED OR STATUTORY,
+WITH RESPECT TO ANY OF THE SOFTWARE, INCLUDING WITHOUT LIMITATION, ANY
+IMPLIED WARRANTIES OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS
+FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT.
+
+YOU EXPRESSLY ASSUME ALL LIABILITIES AND RISKS, FOR USE OR OPERATION
+OF THE SOFTWARE, INCLUDING WITHOUT LIMITATION, SOFTWARE 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. NO LIABILITY
+
+PLEASE READ THE INSTRUCTIONS COMPLETELY, AND PLEASE NOTE THAT YOU
+SHOULD USE THE SOFTWARE AT YOUR OWN RISK.
+
+IN NO EVENT SHALL HISILICON BE LIABLE FOR ANY DIRECT OR INDIRECT,
+SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT
+LIMITATION, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ARISING IN ANY WAY OUT OF
+THE USE OF OR INABILITY TO USE THE SOFTWARE, HOWEVER CAUSED AND
+WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), STRICT
+LIABILITY OR OTHER LEGAL THEORY, EVEN IF HISILICON HAS BEEN ADVISED OF
+THE POSSIBILITY OF SUCH DAMAGE. EVEN IF THE SOFTWARE HAS ANY MATERIAL,
+VERIFIABLE, AND REPRODUCIBLE PROGRAM ERRORS, HISILICON SHALL HAVE NO
+LIABILITY TO MODIFY SUCH ERRORS.
+
+NOTWITHSTANDING ANYTHING TO THE CONTRARY CONTAINED IN THIS AGREEMENT,
+THE MAXIMUM LIABILITY OF HISILICON TO YOU IN AGGREGATE FOR ALL CLAIMS
+MADE AGAINST HISILICON IN CONTRACT TORT OR OTHERWISE UNDER OR IN
+CONNECTION WITH THE SUBJECT MATTER OF THIS AGREEMENT SHALL NOT EXCEED
+THE TOTAL OF SUMS RECEIVED BY HISILICON FROM YOU FOR THIS AGREEMENT.
+THE EXISTENCE OF MORE THAN ONE CLAIM WILL NOT ENLARGE OR EXTEND THE
+LIMIT.
+
+
+6. CONFIDENTIALITY
+
+YOU acknowledge and agree that the SOFTWARE and any benchmarking data
+and related information provided under this Agreement contain trade
+secrets and confidential material of HISILICON and YOU agree to
+maintain all such information in confidence and apply security
+measures no less stringent than the measures which YOU apply to
+protect your own like information, but not less than a reasonable
+degree of care, to prevent their unauthorized disclosure and use. The
+period of confidentiality shall be indefinite. YOU agree not to use
+any such information other than in normal use of the SOFTWARE under
+the license granted in this Agreement.
+
+
+7. TERM AND TERMINATION
+
+This Agreement shall remain in force until terminated. HISILICON may
+terminate this Agreement at any time with or without any cause. Upon
+termination of this Agreement, YOU shall immediately stop using the
+SOFTWARE and confidential information and destroy all copies of the
+SOFTWARE and confidential information in your possession, together
+with all documentation and related materials. The provisions of
+clauses 3, 4, 5, 6, 7 and 8 shall survive termination of this
+Agreement.
+
+
+8. GENERAL
+
+Any provision of this Agreement which is prohibited or unenforceable
+in any jurisdiction shall be ineffective to the extent of such
+prohibition or unenforceability without affecting, impairing or
+invalidating the remaining provisions hereof.
+
+The failure by HISILICON to enforce any of the provisions of this
+Agreement, unless waived in writing, shall not constitute a waiver of
+HISILICON's rights to enforce such provision or any other provision of
+this Agreement in the future.
+
+At HISILICON’s request, YOU agree to check your computers for
+installations of the SOFTWARE and any other information requested by
+HISILICON relating to SOFTWARE installation and to provide this
+information to HISILICON. YOU agree that employees or auditors
+nominated by HISILICON may also perform such checking and reporting on
+behalf of HISILICON by prior appointment during your normal business
+hours on seven (7) days’ notice. HISILICON shall bear the auditors’
+costs for that audit unless it reveals unlicensed usage in which case
+YOU shall promptly reimburse HISILICON for all reasonable costs and
+expenses, including professional fees, relating to such audit.
+
+The SOFTWARE provided under this Agreement is subject to U.S. export
+control laws, including the U.S. Export Administration Act and its
+associated regulations, and may be subject to export or import
+regulations in other countries. YOU agree to comply fully with all
+laws and regulations of the United States and other countries ("Export
+Laws") to assure that the SOFTWARE, is not (1) exported, directly or
+indirectly, in violation of Export Laws, either to any countries that
+are subject to U.S.A. export restrictions or to any end user who has
+been prohibited from participating in the U.S.A. export transactions
+by any federal agency of the U.S.A. government; or (2) intended to be
+used for any purpose prohibited by Export Laws, including, without
+limitation, nuclear, chemical, or biological weapons proliferation.
+
+This Agreement shall be governed by and construed in accordance with
+the laws of People’s Republic of China, without reference to the
+principles of conflicts of laws. Any dispute arising out of or
+relating to this Agreement shall be submitted to Shenzhen Longgang
+District People’s court and parties waive all objections to that
+jurisdiction and venue.
+
+
+---------------------------------------------------------------------
+
+Copyright (C) 2017 Hisilicon Technologies Co., Ltd. All rights reserved.
diff --git a/self-extractors_hikey960/hisilicon/staging/BoardConfigPartial.mk b/self-extractors_hikey960/hisilicon/staging/BoardConfigPartial.mk
new file mode 100644
index 0000000..c0aab8b
--- /dev/null
+++ b/self-extractors_hikey960/hisilicon/staging/BoardConfigPartial.mk
@@ -0,0 +1,13 @@
+# Copyright 2016 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.
diff --git a/self-extractors_hikey960/hisilicon/staging/device-partial.mk b/self-extractors_hikey960/hisilicon/staging/device-partial.mk
new file mode 100644
index 0000000..9bea222
--- /dev/null
+++ b/self-extractors_hikey960/hisilicon/staging/device-partial.mk
@@ -0,0 +1,26 @@
+# Copyright 2016 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.
+
+# Linaro blob(s) necessary for Hikey hardware
+PRODUCT_COPY_FILES := \
+ vendor/linaro/hikey960/hisilicon/proprietary/lib64/libhilog.so:system/lib64/libhilog.so \
+ vendor/linaro/hikey960/hisilicon/proprietary/libhilog.so:system/lib/libhilog.so \
+ vendor/linaro/hikey960/hisilicon/proprietary/lib64/libion.so:system/lib64/libion.so \
+ vendor/linaro/hikey960/hisilicon/proprietary/libion.so:system/lib/libion.so \
+ vendor/linaro/hikey960/hisilicon/proprietary/lib64/gralloc.hikey960.so:system/lib64/hw/gralloc.hikey960.so \
+ vendor/linaro/hikey960/hisilicon/proprietary/gralloc.hikey960.so:system/lib/hw/gralloc.hikey960.so \
+ vendor/linaro/hikey960/hisilicon/proprietary/lib64/hwcomposer.hikey960.so:system/vendor/lib64/hwcomposer.hikey960.so \
+ vendor/linaro/hikey960/hisilicon/proprietary/hwcomposer.hikey960.so:system/vendor/lib/hwcomposer.hikey960.so \
+ vendor/linaro/hikey960/hisilicon/proprietary/lib64/libhiion.so:system/vendor/lib64/libhiion.so \
+ vendor/linaro/hikey960/hisilicon/proprietary/libhiion.so:system/vendor/lib/libhiion.so
diff --git a/self-extractors_hikey960/root/BoardConfigVendor.mk b/self-extractors_hikey960/root/BoardConfigVendor.mk
new file mode 100644
index 0000000..1517386
--- /dev/null
+++ b/self-extractors_hikey960/root/BoardConfigVendor.mk
@@ -0,0 +1,17 @@
+# Copyright 2016 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.
+
+LOCAL_STEM := hikey960/BoardConfigPartial.mk
+
+-include vendor/linaro/$(LOCAL_STEM)
diff --git a/self-extractors_hikey960/root/device-vendor.mk b/self-extractors_hikey960/root/device-vendor.mk
new file mode 100644
index 0000000..35494e6
--- /dev/null
+++ b/self-extractors_hikey960/root/device-vendor.mk
@@ -0,0 +1,20 @@
+#
+# Copyright 2016 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.
+#
+
+LOCAL_STEM := device-partial.mk
+
+$(call inherit-product-if-exists, vendor/linaro/hikey960/hisilicon/$(LOCAL_STEM))
+$(call inherit-product-if-exists, vendor/linaro/hikey960/arm/$(LOCAL_STEM))
diff --git a/sepolicy/file_contexts b/sepolicy/file_contexts
index 7b692d1..6d91f79 100644
--- a/sepolicy/file_contexts
+++ b/sepolicy/file_contexts
@@ -1,9 +1,11 @@
/dev/ttyAMA0 u:object_r:console_device:s0
/dev/ttyAMA3 u:object_r:console_device:s0
+/dev/ttyAMA5 u:object_r:console_device:s0
/dev/ttyFIQ0 u:object_r:console_device:s0
/dev/mali u:object_r:gpu_device:s0
/dev/dri/card0 u:object_r:gpu_device:s0
/dev/hci_tty u:object_r:hci_attach_dev:s0
/dev/ttyAMA1 u:object_r:hci_attach_dev:s0
+/dev/ttyAMA4 u:object_r:hci_attach_dev:s0
/system/vendor/bin/uim u:object_r:hci_attach_exec:s0
/system/vendor/bin/hw/android\.hardware\.bluetooth@1\.0-service\.hikey u:object_r:hal_bluetooth_hikey_exec:s0
diff --git a/ueventd.common.rc b/ueventd.common.rc
index 6a21eea..c96300f 100644
--- a/ueventd.common.rc
+++ b/ueventd.common.rc
@@ -1,3 +1,5 @@
/dev/hci_tty 0666 root root
/dev/ttyAMA1 0660 bluetooth bluetooth
+/dev/ttyAMA4 0660 bluetooth bluetooth
/dev/mali 0666 system graphics
+/dev/mali0 0666 system graphics
diff --git a/vendorsetup.sh b/vendorsetup.sh
index dedfea3..6797c3a 100755
--- a/vendorsetup.sh
+++ b/vendorsetup.sh
@@ -21,3 +21,4 @@
# function: add_lunch_combo generic-eng
add_lunch_combo hikey-userdebug
+add_lunch_combo hikey960-userdebug
diff --git a/wpan/uim/uim.c b/wpan/uim/uim.c
index a9dde00..7f78f0c 100644
--- a/wpan/uim/uim.c
+++ b/wpan/uim/uim.c
@@ -42,6 +42,12 @@
char uim_bd_address[BD_ADDR_LEN];
bdaddr_t *bd_addr;
+/* kim Sysfs path */
+static char *sysfs_install_entry = INSTALL_SYSFS_ENTRY;
+static char *sysfs_dev_name = DEV_NAME_SYSFS;
+static char *sysfs_baud_rate = BAUD_RATE_SYSFS;
+static char *sysfs_flow_ctrl = FLOW_CTRL_SYSFS;
+
/*****************************************************************************/
#ifdef UIM_DEBUG
/* Function to Read the firmware version
@@ -65,6 +71,14 @@
}
#endif
+void sysfs_entry_fallback(void)
+{
+ sysfs_install_entry = INSTALL_SYSFS_ENTRY_OLD;
+ sysfs_dev_name = DEV_NAME_SYSFS_OLD;
+ sysfs_baud_rate = BAUD_RATE_SYSFS_OLD;
+ sysfs_flow_ctrl = FLOW_CTRL_SYSFS_OLD;
+}
+
/*****************************************************************************/
/* Function to read the HCI event from the given file descriptor
*
@@ -283,9 +297,9 @@
if (install == '1') {
memset(buf, 0, UART_DEV_NAME_LEN);
- fd = open(DEV_NAME_SYSFS, O_RDONLY);
+ fd = open(sysfs_dev_name, O_RDONLY);
if (fd < 0) {
- UIM_ERR("Can't open %s", DEV_NAME_SYSFS);
+ UIM_ERR("Can't open %s", sysfs_dev_name);
return -1;
}
len = read(fd, buf, UART_DEV_NAME_LEN);
@@ -298,9 +312,9 @@
close(fd);
memset(buf, 0, UART_DEV_NAME_LEN);
- fd = open(BAUD_RATE_SYSFS, O_RDONLY);
+ fd = open(sysfs_baud_rate, O_RDONLY);
if (fd < 0) {
- UIM_ERR("Can't open %s", BAUD_RATE_SYSFS);
+ UIM_ERR("Can't open %s", sysfs_baud_rate);
return -1;
}
len = read(fd, buf, UART_DEV_NAME_LEN);
@@ -313,9 +327,9 @@
sscanf((const char*)buf, "%d", &cust_baud_rate);
memset(buf, 0, UART_DEV_NAME_LEN);
- fd = open(FLOW_CTRL_SYSFS, O_RDONLY);
+ fd = open(sysfs_flow_ctrl, O_RDONLY);
if (fd < 0) {
- UIM_ERR("Can't open %s", FLOW_CTRL_SYSFS);
+ UIM_ERR("Can't open %s", sysfs_flow_ctrl);
close(fd);
return -1;
}
@@ -486,14 +500,17 @@
/* sysfs entry may get populated after service is started so we retry if it fails*/
while (trials > 0) {
- st_fd = open(INSTALL_SYSFS_ENTRY, O_RDONLY);
+ st_fd = open(sysfs_install_entry, O_RDONLY);
if(st_fd > 0)
break;
- usleep(500000);
+ if (trials == 3)
+ sysfs_entry_fallback();
+ else
+ usleep(500000);
--trials;
}
if (st_fd < 0) {
- UIM_DBG("unable to open %s(%s)", INSTALL_SYSFS_ENTRY, strerror(errno));
+ UIM_DBG("unable to open %s(%s)", sysfs_install_entry, strerror(errno));
return -1;
}
@@ -525,9 +542,9 @@
}
close(st_fd);
- st_fd = open(INSTALL_SYSFS_ENTRY, O_RDONLY);
+ st_fd = open(sysfs_install_entry, O_RDONLY);
if (st_fd < 0) {
- UIM_DBG("unable to open %s (%s)", INSTALL_SYSFS_ENTRY, strerror(errno));
+ UIM_DBG("unable to open %s (%s)", sysfs_install_entry, strerror(errno));
return -1;
}
diff --git a/wpan/uim/uim.h b/wpan/uim/uim.h
index c88d9cc..dc9c5b1 100644
--- a/wpan/uim/uim.h
+++ b/wpan/uim/uim.h
@@ -69,6 +69,10 @@
#define BAUD_RATE_SYSFS "/sys/devices/platform/kim/baud_rate"
#define FLOW_CTRL_SYSFS "/sys/devices/platform/kim/flow_cntrl"
+#define INSTALL_SYSFS_ENTRY_OLD "/sys/devices/kim/install"
+#define DEV_NAME_SYSFS_OLD "/sys/devices/kim/dev_name"
+#define BAUD_RATE_SYSFS_OLD "/sys/devices/kim/baud_rate"
+#define FLOW_CTRL_SYSFS_OLD "/sys/devices/kim/flow_cntrl"
#define VERBOSE
/*Debug logs*/