Ver código fonte

PL2: Inital commit

Aayush Gupta 8 anos atrás
pai
commit
55f4637188
63 arquivos alterados com 1149 adições e 0 exclusões
  1. 22 0
      AndroidBoard.mk
  2. 19 0
      AndroidProducts.mk
  3. 100 0
      BoardConfig.mk
  4. BIN
      Image.gz-dtb
  5. 52 0
      omni_PL2.mk
  6. 45 0
      recovery/root/etc/recovery.fstab
  7. 10 0
      recovery/root/etc/recovery.wipe
  8. 21 0
      recovery/root/etc/twrp.fstab
  9. 9 0
      recovery/root/etc/update_engine/update-payload-key.pub.pem
  10. 120 0
      recovery/root/init.recovery.qcom.rc
  11. 113 0
      recovery/root/init.recovery.usb.rc
  12. BIN
      recovery/root/sbin/android.hardware.boot@1.0-service
  13. BIN
      recovery/root/sbin/android.hardware.boot@1.0.so
  14. BIN
      recovery/root/sbin/android.hardware.gatekeeper@1.0-service-qti
  15. BIN
      recovery/root/sbin/android.hardware.gatekeeper@1.0.so
  16. BIN
      recovery/root/sbin/android.hardware.keymaster@3.0-service-qti
  17. BIN
      recovery/root/sbin/android.hardware.keymaster@3.0.so
  18. BIN
      recovery/root/sbin/android.hardware.weaver@1.0.so
  19. BIN
      recovery/root/sbin/android.hidl.base@1.0.so
  20. BIN
      recovery/root/sbin/android.hidl.token@1.0.so
  21. BIN
      recovery/root/sbin/android.system.wifi.keystore@1.0.so
  22. BIN
      recovery/root/sbin/libQSEEComAPI.so
  23. BIN
      recovery/root/sbin/libicuuc.so
  24. BIN
      recovery/root/sbin/librecovery_updater_msm.so
  25. BIN
      recovery/root/sbin/libxml2.so
  26. 103 0
      recovery/root/sbin/prepdecrypt.sh
  27. BIN
      recovery/root/sbin/qseecomd
  28. BIN
      recovery/root/sbin/update_engine_sideload
  29. BIN
      recovery/root/sbin/vendor.qti.hardware.qteeconnector@1.0-service
  30. BIN
      recovery/root/sbin/vendor.qti.hardware.tui_comm@1.0-service-qti
  31. 136 0
      recovery/root/ueventd.qcom.rc
  32. 65 0
      recovery/root/vendor/compatibility_matrix.xml
  33. BIN
      recovery/root/vendor/lib64/hw/android.hardware.boot@1.0-impl.so
  34. BIN
      recovery/root/vendor/lib64/hw/android.hardware.gatekeeper@1.0-impl-qti.so
  35. BIN
      recovery/root/vendor/lib64/hw/android.hardware.keymaster@3.0-impl-qti.so
  36. BIN
      recovery/root/vendor/lib64/hw/bootctrl.sdm660.so
  37. BIN
      recovery/root/vendor/lib64/hw/gatekeeper.sdm660.so
  38. BIN
      recovery/root/vendor/lib64/hw/keystore.sdm660.so
  39. BIN
      recovery/root/vendor/lib64/libGPreqcancel.so
  40. BIN
      recovery/root/vendor/lib64/libGPreqcancel_svc.so
  41. BIN
      recovery/root/vendor/lib64/libQSEEComAPI.so
  42. BIN
      recovery/root/vendor/lib64/libSecureUILib.so
  43. BIN
      recovery/root/vendor/lib64/libStDrvInt.so
  44. BIN
      recovery/root/vendor/lib64/libdiag.so
  45. BIN
      recovery/root/vendor/lib64/libdrmfs.so
  46. BIN
      recovery/root/vendor/lib64/libdrmtime.so
  47. BIN
      recovery/root/vendor/lib64/libgptutils.so
  48. BIN
      recovery/root/vendor/lib64/libicuuc.so
  49. BIN
      recovery/root/vendor/lib64/libkeymasterdeviceutils.so
  50. BIN
      recovery/root/vendor/lib64/libkeymasterprovision.so
  51. BIN
      recovery/root/vendor/lib64/libkeymasterutils.so
  52. BIN
      recovery/root/vendor/lib64/libqdutils.so
  53. BIN
      recovery/root/vendor/lib64/libqisl.so
  54. BIN
      recovery/root/vendor/lib64/libqservice.so
  55. BIN
      recovery/root/vendor/lib64/librecovery_updater_msm.so
  56. BIN
      recovery/root/vendor/lib64/librpmb.so
  57. BIN
      recovery/root/vendor/lib64/libsecureui.so
  58. BIN
      recovery/root/vendor/lib64/libsecureui_svcsock.so
  59. BIN
      recovery/root/vendor/lib64/libssd.so
  60. BIN
      recovery/root/vendor/lib64/libtime_genoff.so
  61. BIN
      recovery/root/vendor/lib64/libxml2.so
  62. BIN
      recovery/root/vendor/lib64/vendor.qti.hardware.tui_comm@1.0_vendor.so
  63. 334 0
      recovery/root/vendor/manifest.xml

+ 22 - 0
AndroidBoard.mk

@@ -0,0 +1,22 @@
+#
+#    Copyright (C) 2018 The Android Open Source Project
+#
+#    This program is free software: you can redistribute it and/or modify
+#    it under the terms of the GNU General Public License as published by
+#    the Free Software Foundation, either version 3 of the License, or
+#    (at your option) any later version.
+#
+#    This program is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#    GNU General Public License for more details.
+#
+#    You should have received a copy of the GNU General Public License
+#    along with this program.  If not, see <https://www.gnu.org/licenses/>.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+ifneq ($(filter PL2,$(TARGET_DEVICE)),)
+include $(call all-makefiles-under,$(LOCAL_PATH))
+endif

+ 19 - 0
AndroidProducts.mk

@@ -0,0 +1,19 @@
+#
+#    Copyright (C) 2018 The Android Open Source Project
+#
+#    This program is free software: you can redistribute it and/or modify
+#    it under the terms of the GNU General Public License as published by
+#    the Free Software Foundation, either version 3 of the License, or
+#    (at your option) any later version.
+#
+#    This program is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#    GNU General Public License for more details.
+#
+#    You should have received a copy of the GNU General Public License
+#    along with this program.  If not, see <https://www.gnu.org/licenses/>.
+#
+
+PRODUCT_MAKEFILES := \
+    $(LOCAL_DIR)/omni_PL2.mk

+ 100 - 0
BoardConfig.mk

@@ -0,0 +1,100 @@
+#
+#    Copyright (C) 2018 The Android Open Source Project
+#
+#    This program is free software: you can redistribute it and/or modify
+#    it under the terms of the GNU General Public License as published by
+#    the Free Software Foundation, either version 3 of the License, or
+#    (at your option) any later version.
+#
+#    This program is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#    GNU General Public License for more details.
+#
+#    You should have received a copy of the GNU General Public License
+#    along with this program.  If not, see <https://www.gnu.org/licenses/>.
+#
+
+LOCAL_PATH := device/nokia/PL2
+
+# Architecture
+TARGET_ARCH := arm64
+TARGET_ARCH_VARIANT := armv8-a
+TARGET_CPU_ABI := arm64-v8a
+TARGET_CPU_ABI2 :=
+TARGET_CPU_VARIANT := kryo
+
+TARGET_2ND_ARCH := arm
+TARGET_2ND_ARCH_VARIANT := armv7-a-neon
+TARGET_2ND_CPU_ABI := armeabi-v7a
+TARGET_2ND_CPU_ABI2 := armeabi
+TARGET_2ND_CPU_VARIANT := cortex-a53
+
+# Platform
+TARGET_BOARD_PLATFORM := sdm660
+TARGET_BOARD_PLATFORM_GPU := qcom-adreno512
+
+# Bootloader
+TARGET_BOOTLOADER_BOARD_NAME := sdm660
+TARGET_NO_BOOTLOADER := true
+TARGET_USES_UEFI := true
+
+# Crypto
+TARGET_HW_DISK_ENCRYPTION := true
+
+# Enable CPUSets
+ENABLE_CPUSETS := true
+ENABLE_SCHEDBOOST := true
+
+# Kernel
+BOARD_KERNEL_CMDLINE := console=ttyMSM0,115200,n8 androidboot.console=ttyMSM0 earlycon=msm_serial_dm,0xc170000 androidboot.hardware=qcom msm_rtb.filter=0x37 ehci-hcd.park=3 lpm_levels.sleep_disabled=1 sched_enable_hmp=1 sched_enable_power_aware=1 service_locator.enable=1 swiotlb=1 androidboot.configfs=true androidboot.usbcontroller=a800000.dwc3 buildvariant=eng androidboot.fastboot=1
+BOARD_KERNEL_CMDLINE += androidboot.selinux=permissive
+BOARD_KERNEL_BASE        := 0x00000000
+BOARD_KERNEL_OFFSET := 0x00008000
+BOARD_KERNEL_PAGESIZE    := 4096
+BOARD_KERNEL_TAGS_OFFSET := 0x00000100
+BOARD_RAMDISK_OFFSET     := 0x01000000
+BOARD_SECOND_OFFSET := 0x00f00000
+TARGET_PREBUILT_KERNEL := $(LOCAL_PATH)/Image.gz-dtb
+
+# Partitions
+BOARD_RECOVERYIMAGE_PARTITION_SIZE := 67108864
+BOARD_FLASH_BLOCK_SIZE := 131072
+
+BOARD_VOLD_EMMC_SHARES_DEV_MAJOR := true
+BOARD_BUILD_SYSTEM_ROOT_IMAGE := true
+BOARD_ROOT_EXTRA_FOLDERS := bt_firmware dsp firmware persist
+BOARD_USES_RECOVERY_AS_BOOT := true
+BOARD_HAS_REMOVABLE_STORAGE := true
+
+BOARD_SUPPRESS_SECURE_ERASE := true
+
+TARGET_USERIMAGES_USE_EXT4 := true
+BOARD_VENDORIMAGE_FILE_SYSTEM_TYPE := ext4
+
+# Recovery
+TARGET_RECOVERY_WIPE := $(LOCAL_PATH)/recovery/root/etc/recovery.wipe
+
+BOARD_HAS_LARGE_FILESYSTEM := true
+BOARD_HAS_NO_SELECT_BUTTON := true
+
+# Vendor
+TARGET_COPY_OUT_VENDOR := vendor
+
+# TWRP Configuration
+AB_OTA_UPDATER := true
+TW_THEME := portrait_hdpi
+TW_INCLUDE_CRYPTO := true
+TW_MAX_BRIGHTNESS := 100
+TW_BRIGHTNESS_PATH := "/sys/class/leds/lcd-backlight/brightness"
+TW_EXCLUDE_SUPERSU := true
+TW_EXTRA_LANGUAGES := true
+TW_NO_SCREEN_BLANK := true
+TW_INPUT_BLACKLIST := "hbtp_vm"
+TARGET_RECOVERY_QCOM_RTC_FIX := true
+TARGET_RECOVERY_PIXEL_FORMAT := "RGBX_8888"
+RECOVERY_SDCARD_ON_DATA := true
+RECOVERY_GRAPHICS_USE_LINELENGTH := true
+
+TARGET_RECOVERY_DEVICE_MODULES += android.hardware.boot@1.0
+TW_RECOVERY_ADDITIONAL_RELINK_FILES := ${OUT}/system/lib64/android.hardware.boot@1.0.so

BIN
Image.gz-dtb


+ 52 - 0
omni_PL2.mk

@@ -0,0 +1,52 @@
+#
+#    Copyright (C) 2018 The Android Open Source Project
+#
+#    This program is free software: you can redistribute it and/or modify
+#    it under the terms of the GNU General Public License as published by
+#    the Free Software Foundation, either version 3 of the License, or
+#    (at your option) any later version.
+#
+#    This program is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#    GNU General Public License for more details.
+#
+#    You should have received a copy of the GNU General Public License
+#    along with this program.  If not, see <https://www.gnu.org/licenses/>.
+#
+
+# Release name
+PRODUCT_RELEASE_NAME := PL2
+
+$(call inherit-product, build/target/product/embedded.mk)
+
+# Inherit from our custom product configuration
+$(call inherit-product, vendor/omni/config/common.mk)
+
+# Inherit language packages
+$(call inherit-product, $(SRC_TARGET_DIR)/product/languages_full.mk)
+
+# Charger
+PRODUCT_PACKAGES += \
+    charger_res_images \
+    charger
+
+# Define time zone data path
+ifneq ($(wildcard bionic/libc/zoneinfo),)
+    TZDATAPATH := bionic/libc/zoneinfo
+else ifneq ($(wildcard system/timezone),)
+    TZDATAPATH := system/timezone/output_data/iana
+endif
+
+# Time Zone data for Recovery
+ifdef TZDATAPATH
+PRODUCT_COPY_FILES += \
+    $(TZDATAPATH)/tzdata:recovery/root/system/usr/share/zoneinfo/tzdata
+endif
+
+## Device identifier. This must come after all inclusions
+PRODUCT_NAME := omni_PL2
+PRODUCT_DEVICE := PL2
+PRODUCT_BRAND := Nokia
+PRODUCT_MODEL := 6.1
+PRODUCT_MANUFACTURER := Nokia

+ 45 - 0
recovery/root/etc/recovery.fstab

@@ -0,0 +1,45 @@
+# Copyright (c) 2017, The Linux Foundation. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#     * Redistributions of source code must retain the above copyright
+#       notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above
+#       copyright notice, this list of conditions and the following
+#       disclaimer in the documentation and/or other materials provided
+#       with the distribution.
+#     * Neither the name of The Linux Foundation nor the names of its
+#       contributors may be used to endorse or promote products derived
+#       from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
+# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
+# ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
+# 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.
+
+# This is stock variant of fstab
+
+#device         mount point      fstype        [device2] [length=]
+
+/dev/block/bootdevice/by-name/system         /               ext4    ro,barrier=1                                                    wait,slotselect
+/dev/block/bootdevice/by-name/userdata       /data           ext4    noatime,nosuid,nodev,barrier=1,data=ordered,noauto_da_alloc     wait,check,fileencryption=ice
+/dev/block/mmcblk1p1                         /sdcard         vfat    nosuid,nodev                                                    wait
+/dev/block/bootdevice/by-name/boot           /boot           emmc    defaults                                                        defaults
+/dev/block/bootdevice/by-name/recovery       /recovery       emmc    defaults                                                        defaults
+/dev/block/bootdevice/by-name/misc           /misc           emmc    defaults                                                        defaults
+/dev/block/bootdevice/by-name/vendor         /vendor         ext4    ro,barrier=1                                                    wait,slotselect
+/dev/block/bootdevice/by-name/modem          /modem          vfat   defaults                                         wait,slotselect
+/dev/block/bootdevice/by-name/persist        /persist        ext4   defaults                                         defaults
+/dev/block/bootdevice/by-name/bluetooth      /bt_firmware    vfat   defaults                                         wait,slotselect
+
+# USB-OTG
+/devices/platform/soc/a800000.ssusb/a800000.dwc3/xhci-hcd.*.auto*    /storage/usbotg    vfat    nosuid,nodev    wait,voldmanaged=usbotg:auto
+/devices/*/xhci-hcd.0.auto/usb*                         auto                vfat    defaults                    voldmanaged=usb:auto

+ 10 - 0
recovery/root/etc/recovery.wipe

@@ -0,0 +1,10 @@
+# All the partitions to be wiped (in order) under recovery.
+/dev/block/bootdevice/by-name/system_a
+/dev/block/bootdevice/by-name/system_b
+/dev/block/bootdevice/by-name/vendor_a
+/dev/block/bootdevice/by-name/vendor_b
+/dev/block/bootdevice/by-name/userdata
+# Wipe the boot partitions last so that all partitions will be wiped
+# correctly even if the wiping process gets interrupted by a force boot.
+/dev/block/bootdevice/by-name/boot_a
+/dev/block/bootdevice/by-name/boot_b

+ 21 - 0
recovery/root/etc/twrp.fstab

@@ -0,0 +1,21 @@
+# Android fstab file.
+# 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
+
+# mount point    fstype     device                 device2                        flags
+
+/boot            emmc              /dev/block/bootdevice/by-name/boot       flags=slotselect;backup=1;flashimg=1
+/system          ext4              /dev/block/bootdevice/by-name/system     flags=slotselect;backup=1;flashimg=1
+/system_image    emmc              /dev/block/bootdevice/by-name/system     flags=slotselect;backup=1
+/vendor          ext4              /dev/block/bootdevice/by-name/vendor     flags=slotselect;display="Vendor";backup=1;flashimg=1
+/vendor_image    emmc              /dev/block/bootdevice/by-name/vendor     flags=slotselect;backup=1
+/data            ext4              /dev/block/bootdevice/by-name/userdata   flags=encryptable=footer;backup=1;flashimg=1
+/persist         ext4              /dev/block/bootdevice/by-name/persist    flags=display="Persist";backup=1;flashimg=1
+/bt_firmware     vfat              /dev/block/bootdevice/by-name/bluetooth  flags=display="Bluetooth";backup=1;slotselect;flashimg=1
+/modem		 emmc              /dev/block/bootdevice/by-name/modem      flags=slotselect;backup=1;display="Modem";flashimg=1
+/firmware        vfat              /dev/block/bootdevice/by-name/modem      flags=display="Firmware";slotselect;backup=1;mounttodecrypt;fsflags=context=u:object_r:firmware_file:s0
+/efs1            emmc              /dev/block/bootdevice/by-name/modemst1   flags=backup=1;display=EFS;flashimg=1
+/efs2            emmc              /dev/block/bootdevice/by-name/modemst2   flags=backup=1;subpartitionof=/efs1;flashimg=1
+
+# Removable storage
+/usb-otg         auto              /dev/block/sda1         /dev/block/sda   flags=removable;storage;display="USB OTG"

+ 9 - 0
recovery/root/etc/update_engine/update-payload-key.pub.pem

@@ -0,0 +1,9 @@
+-----BEGIN PUBLIC KEY-----
+MIIBIDANBgkqhkiG9w0BAQEFAAOCAQ0AMIIBCAKCAQEAz7IB8CeSZXlwZ423rlR2
+1gUFNL4MDzCDcPCw+PCO2PYqOfgErE6d1iYnWfJUWrzHqgT6AibQApusq0KpcIBg
+I710DHP60wxWsoYDfrFmPnn2xBlu0E1BySwSXRMMKdgBodtoGvLYneLUbnryGDhV
+gBhur3to14lXToJswXYhkNcKrFZblM94EtepC30EXz2pUqnFhc9DfO1IV2dchZ04
+CKiC/slAHcbOBRQOlMkY44EiOqafffLe2QdnUFy/scCoNx6YhrVuhZJfr8zzEq7q
+aokuVf2maVfw3SReZUHhiL0DiNiAR4VXWR8WouL98BuDxtdSmPLie/PrDBKrfMrG
+iwIBAw==
+-----END PUBLIC KEY-----

+ 120 - 0
recovery/root/init.recovery.qcom.rc

@@ -0,0 +1,120 @@
+# Copyright (c) 2009-2012, 2014-2015, The Linux Foundation. All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+#     * Redistributions of source code must retain the above copyright
+#       notice, this list of conditions and the following disclaimer.
+#     * Redistributions in binary form must reproduce the above copyright
+#       notice, this list of conditions and the following disclaimer in the
+#       documentation and/or other materials provided with the distribution.
+#     * Neither the name of The Linux Foundation nor
+#       the names of its contributors may be used to endorse or promote
+#       products derived from this software without specific prior written
+#       permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+# IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+# NON-INFRINGEMENT ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+# CONTRIBUTORS 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.
+#
+
+on fs
+    wait /dev/block/platform/soc/${ro.boot.bootdevice}
+    symlink /dev/block/platform/soc/${ro.boot.bootdevice} /dev/block/bootdevice
+    chmod 0660 /dev/qseecom
+    chown system drmrpc /dev/qseecom
+    chmod 0664 /dev/ion
+    chown system system /dev/ion
+    install_keyring
+
+# Needed to make qseecomd work in recovery
+    chmod 0777 /dev/qseecom
+    chmod 0664 /dev/ion
+    chown system system /dev/ion
+
+# Separate copy needed to use /sbin/linker64 instead of /system/bin/linker64
+service sbinqseecomd /sbin/qseecomd
+    user root
+    group root
+    disabled
+    seclabel u:r:recovery:s0
+
+service prepdecrypt /sbin/prepdecrypt.sh
+    oneshot
+    disabled
+    user root
+    group root
+    seclabel u:r:recovery:s0
+
+service hwservicemanager /sbin/hwservicemanager
+    user root
+    group root
+    disabled
+    onrestart setprop hwservicemanager.ready false
+    seclabel u:r:recovery:s0
+
+service boot-1-0 /sbin/android.hardware.boot@1.0-service
+    user root
+    group root
+    disabled
+    seclabel u:r:recovery:s0
+
+service servicemanager /sbin/servicemanager
+    user root
+    group root readproc
+    disabled
+    seclabel u:r:recovery:s0
+
+service keystore_auth /sbin/keystore_auth
+    oneshot
+    user system
+    group root
+    disabled
+    seclabel u:r:recovery:s0
+
+# keystore is started and stopped on demand by TWRP
+service keystore /sbin/keystore /tmp/misc/keystore
+    user root
+    group root drmrpc readproc
+    disabled
+    seclabel u:r:recovery:s0
+
+service gatekeeper-1-0 /sbin/android.hardware.gatekeeper@1.0-service-qti
+    user root
+    group root
+    disabled
+    seclabel u:r:recovery:s0
+
+service keymaster-3-0 /sbin/android.hardware.keymaster@3.0-service-qti
+    user root
+    group root
+    disabled
+    seclabel u:r:recovery:s0
+
+on boot
+    setprop sys.usb.config none
+    setprop sys.usb.config adb
+
+on init
+    start hwservicemanager
+    start boot-1-0
+    start prepdecrypt
+
+on property:crypto.ready=0
+    stop sbinqseecomd
+    stop keymaster-3-0
+    stop gatekeeper-1-0
+    stop servicemanager
+
+on property:crypto.ready=1
+    start sbinqseecomd
+    start keymaster-3-0
+    start gatekeeper-1-0
+    start servicemanager

+ 113 - 0
recovery/root/init.recovery.usb.rc

@@ -0,0 +1,113 @@
+on init
+    write /sys/class/android_usb/android0/f_midi/vendorID 18D1
+
+on boot
+    write /sys/class/android_usb/android0/iSerial ${ro.serialno}
+    mkdir /dev/usb-ffs 0770 shell shell
+    mkdir /dev/usb-ffs/adb 0770 shell shell
+    write /sys/class/android_usb/android0/idVendor 18D1
+    write /sys/class/android_usb/android0/idProduct D001
+    mount configfs none /config
+    mkdir /config/usb_gadget/g1 0770 shell shell
+    mkdir /config/usb_gadget/g1/strings/0x409 0770 shell shell
+    write /config/usb_gadget/g1/bcdUSB 0x0200
+    write /config/usb_gadget/g1/os_desc/use 1
+    write /config/usb_gadget/g1/strings/0x409/serialnumber ${ro.serialno}
+    write /config/usb_gadget/g1/strings/0x409/manufacturer ${ro.product.manufacturer}
+    write /config/usb_gadget/g1/strings/0x409/product ${ro.product.model}
+    mkdir /config/usb_gadget/g1/functions/mass_storage.0
+    mkdir /config/usb_gadget/g1/functions/mtp.gs0
+    mkdir /config/usb_gadget/g1/functions/ptp.gs1
+    mkdir /config/usb_gadget/g1/functions/accessory.gs2
+    mkdir /config/usb_gadget/g1/functions/audio_source.gs3
+    mkdir /config/usb_gadget/g1/functions/midi.gs5
+    mkdir /config/usb_gadget/g1/functions/ffs.adb
+    mkdir /config/usb_gadget/g1/functions/diag.diag
+    mkdir /config/usb_gadget/g1/functions/diag.diag_mdm
+    mkdir /config/usb_gadget/g1/functions/cser.dun.0
+    mkdir /config/usb_gadget/g1/functions/cser.nmea.1
+    mkdir /config/usb_gadget/g1/functions/cser.dun.2
+    mkdir /config/usb_gadget/g1/functions/gsi.rmnet
+    mkdir /config/usb_gadget/g1/functions/gsi.rndis
+    mkdir /config/usb_gadget/g1/functions/gsi.dpl
+    mkdir /config/usb_gadget/g1/functions/qdss.qdss
+    mkdir /config/usb_gadget/g1/functions/qdss.qdss_mdm
+    mkdir /config/usb_gadget/g1/functions/rndis_bam.rndis
+    mkdir /config/usb_gadget/g1/functions/rmnet_bam.rmnet
+    mkdir /config/usb_gadget/g1/functions/rmnet_bam.dpl
+    mkdir /config/usb_gadget/g1/functions/ncm.0
+    mkdir /config/usb_gadget/g1/functions/ccid.ccid
+    mkdir /config/usb_gadget/g1/functions/uac2.0
+    mkdir /config/usb_gadget/g1/functions/uvc.0
+    mkdir /config/usb_gadget/g1/configs/b.1 0770 shell shell
+    mkdir /config/usb_gadget/g1/configs/b.1/strings/0x409 0770 shell shell
+    write /config/usb_gadget/g1/os_desc/b_vendor_code 0x1
+    write /config/usb_gadget/g1/os_desc/qw_sign "MSFT100"
+    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
+    write /sys/class/android_usb/android0/f_ffs/aliases adb
+
+on property:sys.usb.config=none
+    write /config/usb_gadget/g1/UDC "none"
+    stop adbd
+    setprop sys.usb.ffs.ready 0
+    setprop sys.usb.ffs.mtp.ready 0
+    write /config/usb_gadget/g1/bDeviceClass 0
+    write /config/usb_gadget/g1/bDeviceSubClass 0
+    write /config/usb_gadget/g1/bDeviceProtocol 0
+    rm /config/usb_gadget/g1/configs/b.1/f1
+    rm /config/usb_gadget/g1/configs/b.1/f2
+    rm /config/usb_gadget/g1/configs/b.1/f3
+    rm /config/usb_gadget/g1/configs/b.1/f4
+    rm /config/usb_gadget/g1/configs/b.1/f5
+    rmdir /config/usb_gadget/g1/functions/rndis.gs4
+    setprop sys.usb.state ${sys.usb.config}
+
+on property:sys.usb.config=adb
+    start adbd
+
+on property:sys.usb.ffs.ready=1 && property:sys.usb.config=adb
+    write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "adb"
+    rm /config/usb_gadget/g1/configs/b.1/f1
+    rm /config/usb_gadget/g1/configs/b.1/f2
+    rm /config/usb_gadget/g1/configs/b.1/f3
+    rm /config/usb_gadget/g1/configs/b.1/f4
+    rm /config/usb_gadget/g1/configs/b.1/f5
+    write /config/usb_gadget/g1/idVendor 0x18d1
+    write /config/usb_gadget/g1/idProduct 0xd001
+    symlink /config/usb_gadget/g1/functions/ffs.adb /config/usb_gadget/g1/configs/b.1/f1
+    write /config/usb_gadget/g1/UDC ${sys.usb.controller}
+    setprop sys.usb.state ${sys.usb.config}
+
+on property:sys.usb.config=mtp
+    write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "mtp"
+    rm /config/usb_gadget/g1/configs/b.1/f1
+    rm /config/usb_gadget/g1/configs/b.1/f2
+    rm /config/usb_gadget/g1/configs/b.1/f3
+    rm /config/usb_gadget/g1/configs/b.1/f4
+    rm /config/usb_gadget/g1/configs/b.1/f5
+    write /config/usb_gadget/g1/idVendor 0x18d1
+    write /config/usb_gadget/g1/idProduct 0xd001
+    symlink /config/usb_gadget/g1/functions/mtp.gs0 /config/usb_gadget/g1/configs/b.1/f1
+    write /config/usb_gadget/g1/UDC ${sys.usb.controller}
+    setprop sys.usb.state ${sys.usb.config}
+
+on property:sys.usb.config=mtp,adb
+    start adbd
+
+on property:sys.usb.ffs.ready=1 && property:sys.usb.config=mtp,adb
+    write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "mtp_adb"
+    rm /config/usb_gadget/g1/configs/b.1/f1
+    rm /config/usb_gadget/g1/configs/b.1/f2
+    rm /config/usb_gadget/g1/configs/b.1/f3
+    rm /config/usb_gadget/g1/configs/b.1/f4
+    rm /config/usb_gadget/g1/configs/b.1/f5
+    write /config/usb_gadget/g1/idVendor 0x18d1
+    write /config/usb_gadget/g1/idProduct 0xd001
+    symlink /config/usb_gadget/g1/functions/mtp.gs0 /config/usb_gadget/g1/configs/b.1/f1
+    symlink /config/usb_gadget/g1/functions/ffs.adb /config/usb_gadget/g1/configs/b.1/f2
+    write /config/usb_gadget/g1/UDC ${sys.usb.controller}
+    setprop sys.usb.state ${sys.usb.config}
+
+on property:ro.boot.usbcontroller=*
+setprop sys.usb.controller ${ro.boot.usbcontroller}

BIN
recovery/root/sbin/android.hardware.boot@1.0-service


BIN
recovery/root/sbin/android.hardware.boot@1.0.so


BIN
recovery/root/sbin/android.hardware.gatekeeper@1.0-service-qti


BIN
recovery/root/sbin/android.hardware.gatekeeper@1.0.so


BIN
recovery/root/sbin/android.hardware.keymaster@3.0-service-qti


BIN
recovery/root/sbin/android.hardware.keymaster@3.0.so


BIN
recovery/root/sbin/android.hardware.weaver@1.0.so


BIN
recovery/root/sbin/android.hidl.base@1.0.so


BIN
recovery/root/sbin/android.hidl.token@1.0.so


BIN
recovery/root/sbin/android.system.wifi.keystore@1.0.so


BIN
recovery/root/sbin/libQSEEComAPI.so


BIN
recovery/root/sbin/libicuuc.so


BIN
recovery/root/sbin/librecovery_updater_msm.so


BIN
recovery/root/sbin/libxml2.so


+ 103 - 0
recovery/root/sbin/prepdecrypt.sh

@@ -0,0 +1,103 @@
+#!/sbin/sh
+
+relink()
+{
+	fname=$(basename "$1")
+	target="/sbin/$fname"
+	sed 's|/system/bin/linker64|///////sbin/linker64|' "$1" > "$target"
+	chmod 755 $target
+}
+
+finish()
+{
+	umount /v
+	umount /s
+	rmdir /v
+	rmdir /s
+	setprop crypto.ready 1
+	exit 0
+}
+
+suffix=$(getprop ro.boot.slot_suffix)
+if [ -z "$suffix" ]; then
+	suf=$(getprop ro.boot.slot)
+	suffix="_$suf"
+fi
+venpath="/dev/block/bootdevice/by-name/vendor$suffix"
+mkdir /v
+mount -t ext4 -o ro "$venpath" /v
+syspath="/dev/block/bootdevice/by-name/system$suffix"
+mkdir /s
+mount -t ext4 -o ro "$syspath" /s
+
+is_fastboot_twrp=$(getprop ro.boot.fastboot)
+if [ ! -z "$is_fastboot_twrp" ]; then
+	osver=$(getprop ro.build.version.release_orig)
+	patchlevel=$(getprop ro.build.version.security_patch_orig)
+	setprop ro.build.version.release "$osver"
+	setprop ro.build.version.security_patch "$patchlevel"
+	finish
+fi
+
+if [ -f /s/system/build.prop ]; then
+	# TODO: It may be better to try to read these from the boot image than from /system
+	osver=$(grep -i 'ro.build.version.release' /s/system/build.prop  | cut -f2 -d'=')
+	patchlevel=$(grep -i 'ro.build.version.security_patch' /s/system/build.prop  | cut -f2 -d'=')
+	setprop ro.build.version.release "$osver"
+	setprop ro.build.version.security_patch "$patchlevel"
+	finish
+else
+	# Be sure to increase the PLATFORM_VERSION in build/core/version_defaults.mk to override Google's anti-rollback features to something rather insane
+	osver=$(getprop ro.build.version.release_orig)
+	patchlevel=$(getprop ro.build.version.security_patch_orig)
+	setprop ro.build.version.release "$osver"
+	setprop ro.build.version.security_patch "$patchlevel"
+	finish
+fi
+
+###### NOTE: The below is no longer used but I'm keeping it here in case it is needed again at some point!
+mkdir -p /vendor/lib64/hw/
+
+cp /s/system/lib64/android.hidl.base@1.0.so /sbin/
+cp /s/system/lib64/libicuuc.so /sbin/
+cp /s/system/lib64/libxml2.so /sbin/
+
+relink /v/bin/qseecomd
+
+cp /v/lib64/libdiag.so /vendor/lib64/
+cp /v/lib64/libdrmfs.so /vendor/lib64/
+cp /v/lib64/libdrmtime.so /vendor/lib64/
+cp /v/lib64/libGPreqcancel.so /vendor/lib64/
+cp /v/lib64/libGPreqcancel_svc.so /vendor/lib64/
+cp /v/lib64/libqdutils.so /vendor/lib64/
+cp /v/lib64/libqisl.so /vendor/lib64/
+cp /v/lib64/libqservice.so /vendor/lib64/
+cp /v/lib64/libQSEEComAPI.so /vendor/lib64/
+cp /v/lib64/librecovery_updater_msm.so /vendor/lib64/
+cp /v/lib64/librpmb.so /vendor/lib64/
+cp /v/lib64/libsecureui.so /vendor/lib64/
+cp /v/lib64/libSecureUILib.so /vendor/lib64/
+cp /v/lib64/libsecureui_svcsock.so /vendor/lib64/
+cp /v/lib64/libspcom.so /vendor/lib64/
+cp /v/lib64/libspl.so /vendor/lib64/
+cp /v/lib64/libssd.so /vendor/lib64/
+cp /v/lib64/libStDrvInt.so /vendor/lib64/
+cp /v/lib64/libtime_genoff.so /vendor/lib64/
+cp /v/lib64/libkeymasterdeviceutils.so /vendor/lib64/
+cp /v/lib64/libkeymasterprovision.so /vendor/lib64/
+cp /v/lib64/libkeymasterutils.so /vendor/lib64/
+cp /v/lib64/vendor.qti.hardware.tui_comm@1.0_vendor.so /vendor/lib64/
+cp /v/lib64/hw/bootctrl.sdm660.so /vendor/lib64/hw/
+cp /v/lib64/hw/android.hardware.boot@1.0-impl.so /vendor/lib64/hw/
+cp /v/lib64/hw/android.hardware.gatekeeper@1.0-impl-qti.so /vendor/lib64/hw/
+cp /v/lib64/hw/android.hardware.keymaster@3.0-impl-qti.so /vendor/lib64/hw/
+
+cp /v/manifest.xml /vendor/
+cp /v/compatibility_matrix.xml /vendor/
+
+relink /v/bin/hw/android.hardware.boot@1.0-service
+relink /v/bin/hw/android.hardware.keymaster@3.0-service-qti
+relink /v/bin/hw/android.hardware.gatekeeper@1.0-service-qti
+
+finish
+exit 0

BIN
recovery/root/sbin/qseecomd


BIN
recovery/root/sbin/update_engine_sideload


BIN
recovery/root/sbin/vendor.qti.hardware.qteeconnector@1.0-service


BIN
recovery/root/sbin/vendor.qti.hardware.tui_comm@1.0-service-qti


+ 136 - 0
recovery/root/ueventd.qcom.rc

@@ -0,0 +1,136 @@
+subsystem adf
+    devname uevent_devname
+
+subsystem graphics
+    devname uevent_devpath
+    dirname /dev/graphics
+
+subsystem drm
+    devname uevent_devpath
+    dirname /dev/dri
+
+subsystem oncrpc
+    devname uevent_devpath
+    dirname /dev/oncrpc
+
+subsystem adsp
+    devname uevent_devpath
+    dirname /dev/adsp
+
+subsystem msm_camera
+    devname uevent_devpath
+    dirname /dev/msm_camera
+
+subsystem input
+    devname uevent_devpath
+    dirname /dev/input
+
+subsystem mtd
+    devname uevent_devpath
+    dirname /dev/mtd
+
+subsystem sound
+    devname uevent_devpath
+    dirname /dev/snd
+
+# ueventd can only set permissions on device nodes and their associated
+# sysfs attributes, not on arbitrary paths.
+#
+# format for /dev rules: devname mode uid gid
+# format for /sys rules: nodename attr mode uid gid
+# shortcut: "mtd@NN" expands to "/dev/mtd/mtdNN"
+
+/dev/null                 0666   root       root
+/dev/zero                 0666   root       root
+/dev/full                 0666   root       root
+/dev/ptmx                 0666   root       root
+/dev/tty                  0666   root       root
+/dev/random               0666   root       root
+/dev/urandom              0666   root       root
+# Make HW RNG readable by group system to let EntropyMixer read it.
+/dev/hw_random            0440   root       system
+/dev/ashmem               0666   root       root
+/dev/binder               0666   root       root
+/dev/hwbinder             0666   root       root
+/dev/vndbinder            0666   root       root
+
+/dev/pmsg0                0222   root       log
+
+# the msm hw3d client device node is world writable/readable.
+/dev/msm_hw3dc            0666   root       root
+
+# gpu driver for adreno200 is globally accessible
+/dev/kgsl                 0666   root       root
+
+# kms driver for drm based gpu
+/dev/dri/*                0666   root       graphics
+
+# these should not be world writable
+/dev/diag                 0660   radio      radio
+/dev/diag_arm9            0660   radio      radio
+/dev/ttyMSM0              0600   bluetooth  bluetooth
+/dev/uhid                 0660   uhid       uhid
+/dev/uinput               0660   system     bluetooth
+/dev/alarm                0664   system     radio
+/dev/rtc0                 0640   system     system
+/dev/tty0                 0660   root       system
+/dev/graphics/*           0660   root       graphics
+/dev/msm_hw3dm            0660   system     graphics
+/dev/input/*              0660   root       input
+/dev/eac                  0660   root       audio
+/dev/cam                  0660   root       camera
+/dev/pmem                 0660   system     graphics
+/dev/pmem_adsp*           0660   system     audio
+/dev/pmem_camera*         0660   system     camera
+/dev/oncrpc/*             0660   root       system
+/dev/adsp/*               0660   system     audio
+/dev/snd/*                0660   system     audio
+/dev/mt9t013              0660   system     system
+/dev/msm_camera/*         0660   system     system
+/dev/akm8976_daemon       0640   compass    system
+/dev/akm8976_aot          0640   compass    system
+/dev/akm8973_daemon       0640   compass    system
+/dev/akm8973_aot          0640   compass    system
+/dev/bma150               0640   compass    system
+/dev/cm3602               0640   compass    system
+/dev/akm8976_pffd         0640   compass    system
+/dev/lightsensor          0640   system     system
+/dev/msm_pcm_out*         0660   system     audio
+/dev/msm_pcm_in*          0660   system     audio
+/dev/msm_pcm_ctl*         0660   system     audio
+/dev/msm_snd*             0660   system     audio
+/dev/msm_mp3*             0660   system     audio
+/dev/audience_a1026*      0660   system     audio
+/dev/tpa2018d1*           0660   system     audio
+/dev/msm_audpre           0660   system     audio
+/dev/msm_audio_ctl        0660   system     audio
+/dev/htc-acoustic         0660   system     audio
+/dev/vdec                 0660   system     audio
+/dev/q6venc               0660   system     audio
+/dev/snd/dsp              0660   system     audio
+/dev/snd/dsp1             0660   system     audio
+/dev/snd/mixer            0660   system     audio
+/dev/smd0                 0640   radio      radio
+/dev/qmi                  0640   radio      radio
+/dev/qmi0                 0640   radio      radio
+/dev/qmi1                 0640   radio      radio
+/dev/qmi2                 0640   radio      radio
+/dev/bus/usb/*            0660   root       usb
+/dev/mtp_usb              0660   root       mtp
+/dev/usb_accessory        0660   root       usb
+/dev/tun                  0660   system     vpn
+
+# CDMA radio interface MUX
+/dev/ts0710mux*           0640   radio      radio
+/dev/ppp                  0660   radio      vpn
+
+# sysfs properties
+/sys/devices/platform/trusty.*      trusty_version        0440  root   log
+/sys/devices/virtual/input/input*   enable      0660  root   input
+/sys/devices/virtual/input/input*   poll_delay  0660  root   input
+/sys/devices/virtual/usb_composite/*   enable      0664  root   system
+/sys/devices/system/cpu/cpu*   cpufreq/scaling_max_freq   0664  system system
+/sys/devices/system/cpu/cpu*   cpufreq/scaling_min_freq   0664  system system
+
+# DVB API device nodes
+/dev/dvb*                 0660   root       system

+ 65 - 0
recovery/root/vendor/compatibility_matrix.xml

@@ -0,0 +1,65 @@
+<compatibility-matrix version="1.0" type="device">
+    <hal format="hidl" optional="false">
+        <name>android.frameworks.schedulerservice</name>
+        <version>1.0</version>
+        <interface>
+            <name>ISchedulingPolicyService</name>
+            <instance>default</instance>
+        </interface>
+    </hal>
+    <hal format="hidl" optional="false">
+        <name>android.frameworks.sensorservice</name>
+        <version>1.0</version>
+        <interface>
+            <name>ISensorManager</name>
+            <instance>default</instance>
+        </interface>
+    </hal>
+    <hal format="hidl" optional="false">
+        <name>android.hidl.allocator</name>
+        <version>1.0</version>
+        <interface>
+            <name>IAllocator</name>
+            <instance>ashmem</instance>
+        </interface>
+    </hal>
+    <hal format="hidl" optional="false">
+        <name>android.hidl.manager</name>
+        <version>1.0</version>
+        <interface>
+            <name>IServiceManager</name>
+            <instance>default</instance>
+        </interface>
+    </hal>
+    <hal format="hidl" optional="false">
+        <name>android.hidl.memory</name>
+        <version>1.0</version>
+        <interface>
+            <name>IMapper</name>
+            <instance>ashmem</instance>
+        </interface>
+    </hal>
+    <hal format="hidl" optional="false">
+        <name>android.hidl.token</name>
+        <version>1.0</version>
+        <interface>
+            <name>ITokenManager</name>
+            <instance>default</instance>
+        </interface>
+    </hal>
+    <hal format="hidl" optional="false">
+        <name>android.system.wifi.keystore</name>
+        <version>1.0</version>
+        <interface>
+            <name>IKeystore</name>
+            <instance>default</instance>
+        </interface>
+    </hal>
+    <hal format="native" optional="false">
+        <name>netutils-wrapper</name>
+        <version>1.0</version>
+    </hal>
+    <vndk>
+        <version>0.0.0</version>
+    </vndk>
+</compatibility-matrix>

BIN
recovery/root/vendor/lib64/hw/android.hardware.boot@1.0-impl.so


BIN
recovery/root/vendor/lib64/hw/android.hardware.gatekeeper@1.0-impl-qti.so


BIN
recovery/root/vendor/lib64/hw/android.hardware.keymaster@3.0-impl-qti.so


BIN
recovery/root/vendor/lib64/hw/bootctrl.sdm660.so


BIN
recovery/root/vendor/lib64/hw/gatekeeper.sdm660.so


BIN
recovery/root/vendor/lib64/hw/keystore.sdm660.so


BIN
recovery/root/vendor/lib64/libGPreqcancel.so


BIN
recovery/root/vendor/lib64/libGPreqcancel_svc.so


BIN
recovery/root/vendor/lib64/libQSEEComAPI.so


BIN
recovery/root/vendor/lib64/libSecureUILib.so


BIN
recovery/root/vendor/lib64/libStDrvInt.so


BIN
recovery/root/vendor/lib64/libdiag.so


BIN
recovery/root/vendor/lib64/libdrmfs.so


BIN
recovery/root/vendor/lib64/libdrmtime.so


BIN
recovery/root/vendor/lib64/libgptutils.so


BIN
recovery/root/vendor/lib64/libicuuc.so


BIN
recovery/root/vendor/lib64/libkeymasterdeviceutils.so


BIN
recovery/root/vendor/lib64/libkeymasterprovision.so


BIN
recovery/root/vendor/lib64/libkeymasterutils.so


BIN
recovery/root/vendor/lib64/libqdutils.so


BIN
recovery/root/vendor/lib64/libqisl.so


BIN
recovery/root/vendor/lib64/libqservice.so


BIN
recovery/root/vendor/lib64/librecovery_updater_msm.so


BIN
recovery/root/vendor/lib64/librpmb.so


BIN
recovery/root/vendor/lib64/libsecureui.so


BIN
recovery/root/vendor/lib64/libsecureui_svcsock.so


BIN
recovery/root/vendor/lib64/libssd.so


BIN
recovery/root/vendor/lib64/libtime_genoff.so


BIN
recovery/root/vendor/lib64/libxml2.so


BIN
recovery/root/vendor/lib64/vendor.qti.hardware.tui_comm@1.0_vendor.so


+ 334 - 0
recovery/root/vendor/manifest.xml

@@ -0,0 +1,334 @@
+<manifest version="1.0" type="device">
+    <hal format="hidl">
+        <name>android.hardware.audio</name>
+        <transport>hwbinder</transport>
+        <version>2.0</version>
+        <interface>
+            <name>IDevicesFactory</name>
+            <instance>default</instance>
+        </interface>
+    </hal>
+    <hal format="hidl">
+        <name>android.hardware.audio.effect</name>
+        <transport>hwbinder</transport>
+        <version>2.0</version>
+        <interface>
+            <name>IEffectsFactory</name>
+            <instance>default</instance>
+        </interface>
+    </hal>
+    <hal format="hidl">
+        <name>android.hardware.biometrics.fingerprint</name>
+        <transport>hwbinder</transport>
+        <version>2.1</version>
+        <interface>
+            <name>IBiometricsFingerprint</name>
+            <instance>default</instance>
+        </interface>
+    </hal>
+    <hal format="hidl">
+        <name>android.hardware.bluetooth</name>
+        <transport>hwbinder</transport>
+        <version>1.0</version>
+        <interface>
+            <name>IBluetoothHci</name>
+            <instance>default</instance>
+        </interface>
+    </hal>
+    <hal format="hidl">
+        <name>android.hardware.boot</name>
+        <transport>hwbinder</transport>
+        <version>1.0</version>
+        <interface>
+            <name>IBootControl</name>
+            <instance>default</instance>
+        </interface>
+    </hal>
+    <hal format="hidl">
+        <name>android.hardware.camera.provider</name>
+        <transport>hwbinder</transport>
+        <version>2.4</version>
+        <interface>
+            <name>ICameraProvider</name>
+            <instance>legacy/0</instance>
+        </interface>
+    </hal>
+    <hal format="hidl">
+        <name>android.hardware.cas</name>
+        <transport>hwbinder</transport>
+        <version>1.0</version>
+        <interface>
+            <name>IMediaCasService</name>
+            <instance>default</instance>
+        </interface>
+    </hal>
+    <hal format="hidl">
+        <name>android.hardware.configstore</name>
+        <transport>hwbinder</transport>
+        <version>1.0</version>
+        <interface>
+            <name>ISurfaceFlingerConfigs</name>
+            <instance>default</instance>
+        </interface>
+    </hal>
+    <hal format="hidl">
+        <name>android.hardware.contexthub</name>
+        <transport>hwbinder</transport>
+        <version>1.0</version>
+        <interface>
+            <name>IContexthub</name>
+            <instance>default</instance>
+        </interface>
+    </hal>
+    <hal format="hidl">
+        <name>android.hardware.drm</name>
+        <transport>hwbinder</transport>
+        <version>1.0</version>
+        <interface>
+            <name>ICryptoFactory</name>
+            <instance>default</instance>
+            <instance>widevine</instance>
+        </interface>
+        <interface>
+            <name>IDrmFactory</name>
+            <instance>default</instance>
+            <instance>widevine</instance>
+        </interface>
+    </hal>
+    <hal format="hidl">
+        <name>android.hardware.dumpstate</name>
+        <transport>hwbinder</transport>
+        <version>1.0</version>
+        <interface>
+            <name>IDumpstateDevice</name>
+            <instance>default</instance>
+        </interface>
+    </hal>
+    <hal format="hidl">
+        <name>android.hardware.gatekeeper</name>
+        <transport>hwbinder</transport>
+        <version>1.0</version>
+        <interface>
+            <name>IGatekeeper</name>
+            <instance>default</instance>
+        </interface>
+    </hal>
+    <hal format="hidl">
+        <name>android.hardware.gnss</name>
+        <transport>hwbinder</transport>
+        <version>1.0</version>
+        <interface>
+            <name>IGnss</name>
+            <instance>default</instance>
+        </interface>
+    </hal>
+    <hal format="hidl">
+        <name>android.hardware.graphics.allocator</name>
+        <transport>hwbinder</transport>
+        <version>2.0</version>
+        <interface>
+            <name>IAllocator</name>
+            <instance>default</instance>
+        </interface>
+    </hal>
+    <hal format="hidl">
+        <name>android.hardware.graphics.composer</name>
+        <transport>hwbinder</transport>
+        <version>2.1</version>
+        <interface>
+            <name>IComposer</name>
+            <instance>default</instance>
+        </interface>
+    </hal>
+    <hal format="hidl">
+        <name>android.hardware.graphics.mapper</name>
+        <transport arch="32+64">passthrough</transport>
+        <version>2.0</version>
+        <interface>
+            <name>IMapper</name>
+            <instance>default</instance>
+        </interface>
+    </hal>
+    <hal format="hidl">
+        <name>android.hardware.keymaster</name>
+        <transport>hwbinder</transport>
+        <version>3.0</version>
+        <interface>
+            <name>IKeymasterDevice</name>
+            <instance>default</instance>
+        </interface>
+    </hal>
+    <hal format="hidl">
+        <name>android.hardware.light</name>
+        <transport>hwbinder</transport>
+        <version>2.0</version>
+        <interface>
+            <name>ILight</name>
+            <instance>default</instance>
+        </interface>
+    </hal>
+    <hal format="hidl">
+        <name>android.hardware.media.omx</name>
+        <transport>hwbinder</transport>
+        <version>1.0</version>
+        <interface>
+            <name>IOmx</name>
+            <instance>default</instance>
+        </interface>
+        <interface>
+            <name>IOmxStore</name>
+            <instance>default</instance>
+        </interface>
+    </hal>
+    <hal format="hidl">
+        <name>android.hardware.memtrack</name>
+        <transport>hwbinder</transport>
+        <version>1.0</version>
+        <interface>
+            <name>IMemtrack</name>
+            <instance>default</instance>
+        </interface>
+    </hal>
+    <hal format="hidl">
+        <name>android.hardware.nfc</name>
+        <transport>hwbinder</transport>
+        <version>1.0</version>
+        <interface>
+            <name>INfc</name>
+            <instance>default</instance>
+        </interface>
+    </hal>
+    <hal format="hidl">
+        <name>android.hardware.power</name>
+        <transport>hwbinder</transport>
+        <version>1.1</version>
+        <interface>
+            <name>IPower</name>
+            <instance>default</instance>
+        </interface>
+    </hal>
+    <hal format="hidl">
+        <name>android.hardware.radio</name>
+        <transport>hwbinder</transport>
+        <version>1.1</version>
+        <interface>
+            <name>IRadio</name>
+            <instance>slot1</instance>
+        </interface>
+        <interface>
+            <name>ISap</name>
+            <instance>slot1</instance>
+        </interface>
+    </hal>
+    <hal format="hidl">
+        <name>android.hardware.radio.deprecated</name>
+        <transport>hwbinder</transport>
+        <version>1.0</version>
+        <interface>
+            <name>IOemHook</name>
+            <instance>slot1</instance>
+        </interface>
+    </hal>
+    <hal format="hidl">
+        <name>android.hardware.renderscript</name>
+        <transport arch="32+64">passthrough</transport>
+        <version>1.0</version>
+        <interface>
+            <name>IDevice</name>
+            <instance>default</instance>
+        </interface>
+    </hal>
+    <hal format="hidl">
+        <name>android.hardware.sensors</name>
+        <transport>hwbinder</transport>
+        <version>1.0</version>
+        <interface>
+            <name>ISensors</name>
+            <instance>default</instance>
+        </interface>
+    </hal>
+    <hal format="hidl">
+        <name>android.hardware.soundtrigger</name>
+        <transport>hwbinder</transport>
+        <version>2.0</version>
+        <interface>
+            <name>ISoundTriggerHw</name>
+            <instance>default</instance>
+        </interface>
+    </hal>
+    <hal format="hidl">
+        <name>android.hardware.thermal</name>
+        <transport>hwbinder</transport>
+        <version>1.1</version>
+        <interface>
+            <name>IThermal</name>
+            <instance>default</instance>
+        </interface>
+    </hal>
+    <hal format="hidl">
+        <name>android.hardware.usb</name>
+        <transport>hwbinder</transport>
+        <version>1.1</version>
+        <interface>
+            <name>IUsb</name>
+            <instance>default</instance>
+        </interface>
+    </hal>
+    <hal format="hidl">
+        <name>android.hardware.vibrator</name>
+        <transport>hwbinder</transport>
+        <version>1.0</version>
+        <interface>
+            <name>IVibrator</name>
+            <instance>default</instance>
+        </interface>
+    </hal>
+    <hal format="hidl">
+        <name>android.hardware.vr</name>
+        <transport>hwbinder</transport>
+        <version>1.0</version>
+        <interface>
+            <name>IVr</name>
+            <instance>default</instance>
+        </interface>
+    </hal>
+    <hal format="hidl">
+        <name>android.hardware.wifi</name>
+        <transport>hwbinder</transport>
+        <version>1.0</version>
+        <interface>
+            <name>IWifi</name>
+            <instance>default</instance>
+        </interface>
+    </hal>
+    <hal format="hidl">
+        <name>android.hardware.wifi.supplicant</name>
+        <transport>hwbinder</transport>
+        <version>1.0</version>
+        <interface>
+            <name>ISupplicant</name>
+            <instance>default</instance>
+        </interface>
+    </hal>
+    <hal format="hidl">
+        <name>vendor.qti.atcmdfwd</name>
+        <transport>hwbinder</transport>
+        <version>1.0</version>
+        <interface>
+            <name>IAtCmdFwd</name>
+            <instance>AtCmdFwdService</instance>
+        </interface>
+    </hal>
+    <hal format="hidl">
+        <name>vendor.qti.qcril.am</name>
+        <transport>hwbinder</transport>
+        <version>1.0</version>
+        <interface>
+            <name>IQcRilAudio</name>
+            <instance>default</instance>
+        </interface>
+    </hal>
+    <sepolicy>
+        <version>27.0</version>
+    </sepolicy>
+</manifest>