فهرست منبع

PL2: Get ready for Pie?

Change-Id: I02ec6be37a6454581e6e243c01fa2a1b14f2ea9d
theimpulson 7 سال پیش
والد
کامیت
a0a05e2a98
58فایلهای تغییر یافته به همراه792 افزوده شده و 391 حذف شده
  1. 11 21
      BoardConfig.mk
  2. 34 2
      README.md
  3. 48 4
      omni_PL2.mk
  4. 0 10
      recovery/root/etc/recovery.wipe
  5. 10 10
      recovery/root/etc/twrp.fstab
  6. 44 0
      recovery/root/fstab.qcom
  7. 55 75
      recovery/root/init.recovery.qcom.rc
  8. BIN
      recovery/root/sbin/android.hardware.boot@1.0-service
  9. BIN
      recovery/root/sbin/android.hardware.boot@1.0.so
  10. BIN
      recovery/root/sbin/android.hardware.gatekeeper@1.0-service-qti
  11. BIN
      recovery/root/sbin/android.hardware.gatekeeper@1.0.so
  12. BIN
      recovery/root/sbin/android.hardware.keymaster@3.0-service-qti
  13. BIN
      recovery/root/sbin/android.hardware.keymaster@3.0.so
  14. BIN
      recovery/root/sbin/android.hardware.keymaster@4.0-service-qti
  15. BIN
      recovery/root/sbin/android.hardware.weaver@1.0.so
  16. BIN
      recovery/root/sbin/android.hidl.base@1.0.so
  17. BIN
      recovery/root/sbin/android.hidl.token@1.0.so
  18. BIN
      recovery/root/sbin/android.system.wifi.keystore@1.0.so
  19. BIN
      recovery/root/sbin/libQSEEComAPI.so
  20. BIN
      recovery/root/sbin/libicuuc.so
  21. BIN
      recovery/root/sbin/librecovery_updater_msm.so
  22. BIN
      recovery/root/sbin/libxml2.so
  23. 16 83
      recovery/root/sbin/prepdecrypt.sh
  24. BIN
      recovery/root/sbin/vendor.qti.hardware.qteeconnector@1.0-service
  25. BIN
      recovery/root/sbin/vendor.qti.hardware.tui_comm@1.0-service-qti
  26. 0 136
      recovery/root/ueventd.qcom.rc
  27. 6 7
      recovery/root/vendor/compatibility_matrix.xml
  28. BIN
      recovery/root/vendor/lib64/hw/android.hardware.boot@1.0-impl.so
  29. BIN
      recovery/root/vendor/lib64/hw/android.hardware.gatekeeper@1.0-impl-qti.so
  30. BIN
      recovery/root/vendor/lib64/hw/android.hardware.keymaster@3.0-impl-qti.so
  31. BIN
      recovery/root/vendor/lib64/hw/bootctrl.sdm660.so
  32. BIN
      recovery/root/vendor/lib64/hw/gatekeeper.sdm660.so
  33. BIN
      recovery/root/vendor/lib64/hw/keystore.sdm660.so
  34. BIN
      recovery/root/vendor/lib64/libGPreqcancel.so
  35. BIN
      recovery/root/vendor/lib64/libGPreqcancel_svc.so
  36. BIN
      recovery/root/vendor/lib64/libQSEEComAPI.so
  37. BIN
      recovery/root/vendor/lib64/libSecureUILib.so
  38. BIN
      recovery/root/vendor/lib64/libStDrvInt.so
  39. BIN
      recovery/root/vendor/lib64/libdiag.so
  40. BIN
      recovery/root/vendor/lib64/libdrmfs.so
  41. BIN
      recovery/root/vendor/lib64/libdrmtime.so
  42. BIN
      recovery/root/vendor/lib64/libgptutils.so
  43. BIN
      recovery/root/vendor/lib64/libkeymasterdeviceutils.so
  44. BIN
      recovery/root/vendor/lib64/libkeymasterprovision.so
  45. BIN
      recovery/root/vendor/lib64/libkeymasterutils.so
  46. BIN
      recovery/root/vendor/lib64/libqdutils.so
  47. BIN
      recovery/root/vendor/lib64/libqisl.so
  48. BIN
      recovery/root/vendor/lib64/libqservice.so
  49. BIN
      recovery/root/vendor/lib64/libqtikeymaster4.so
  50. BIN
      recovery/root/vendor/lib64/librecovery_updater_msm.so
  51. BIN
      recovery/root/vendor/lib64/librpmb.so
  52. BIN
      recovery/root/vendor/lib64/libsecureui.so
  53. BIN
      recovery/root/vendor/lib64/libsecureui_svcsock.so
  54. BIN
      recovery/root/vendor/lib64/libssd.so
  55. BIN
      recovery/root/vendor/lib64/libtime_genoff.so
  56. BIN
      recovery/root/vendor/lib64/libxml2.so
  57. BIN
      recovery/root/vendor/lib64/vendor.qti.hardware.tui_comm@1.0_vendor.so
  58. 568 43
      recovery/root/vendor/manifest.xml

+ 11 - 21
BoardConfig.mk

@@ -24,7 +24,7 @@ TARGET_CPU_ABI2 :=
 TARGET_CPU_VARIANT := kryo
 
 TARGET_2ND_ARCH := arm
-TARGET_2ND_ARCH_VARIANT := armv7-a-neon
+TARGET_2ND_ARCH_VARIANT := armv8-a
 TARGET_2ND_CPU_ABI := armeabi-v7a
 TARGET_2ND_CPU_ABI2 := armeabi
 TARGET_2ND_CPU_VARIANT := cortex-a53
@@ -36,25 +36,20 @@ TARGET_BOARD_PLATFORM_GPU := qcom-adreno508
 # 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
+# Use system's VOLD and files in case TWRP's decryption fails
+TW_CRYPTO_USE_SYSTEM_VOLD := qseecomd
 
 # 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
-BOARD_KERNEL_CMDLINE += skip_override androidboot.selinux=permissive
+BOARD_KERNEL_CMDLINE     += skip_override androidboot.selinux=permissive
 BOARD_KERNEL_BASE        := 0x00000000
-BOARD_KERNEL_OFFSET := 0x00008000
+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
+BOARD_SECOND_OFFSET      := 0x00f00000
+TARGET_PREBUILT_KERNEL   := $(LOCAL_PATH)/Image.gz-dtb
 
 # Partitions
 BOARD_RECOVERYIMAGE_PARTITION_SIZE := 67108864
@@ -62,32 +57,30 @@ 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
 
+# Security Patch Hack
+PLATFORM_SECURITY_PATCH := 2025-12-31
+
 # Vendor
 TARGET_COPY_OUT_VENDOR := vendor
 
 # TWRP Configuration
-AB_OTA_UPDATER := true
 TW_THEME := portrait_hdpi
+TW_USE_TOOLBOX := true
 TW_INCLUDE_CRYPTO := true
 TW_MAX_BRIGHTNESS := 100
 TW_DEFAULT_BRIGHTNESS := "30"
 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"
@@ -95,6 +88,3 @@ 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

+ 34 - 2
README.md

@@ -1,2 +1,34 @@
-# android_device_nokia_PL2-TWRP
-TWRP source for PL2
+# Device Tree for Nokia 6.1 (PL2)
+
+The Nokia 6 (codenamed _"PL2"_) is a mid-range smartphone from Nokia.
+It was released in April 2018.
+
+| Basic                   | Spec Sheet                                                                                                                     |
+| -----------------------:|:------------------------------------------------------------------------------------------------------------------------------ |
+| CPU                     | Octa-core 2.2 GHz Cortex-A53                                                                                                   |
+| Chipset                 | Qualcomm SDM630 Snapdragon 660                                                                                                 |
+| GPU                     | Adreno 630                                                                                                                     |
+| Memory                  | 3/4 GB RAM                                                                                                                     |
+| Shipped Android Version | 8.1                                                                                                                            |
+| Storage                 | 32/64 GB                                                                                                                       |
+| Battery                 | Non-removable Li-Po 3000 mAh battery                                                                                           |
+| Display                 | 1080 x 1920 pixels, 16:9 ratio (~403 ppi density)                                                                              |
+| Camera (Back)           | 16 MP, f/2.0, 27mm (wide), 1.0µm, PDAF, Zeiss optics, dual-LED dual-tone flash, panorama, HDR, 2160p@30fps, 1080p@30fps        |
+| Camera (Front)          | 8 MP, f/2.0, 1/4", 1.12µm, 1080p@30fps                                                                                         |
+
+Copyright 2018 - The LineageOS Project.
+
+![Nokia 6.1](https://cdn2.gsmarena.com/vv/pics/nokia/nokia-6-2018-1.jpg)
+
+
+## Build instructions
+
+```
+# Compiling
+$ . build/envsetup.sh
+$ lunch omni_PL2-eng
+$ make -jx recoveryimage //replace x in -jx with number of cores you want to allot for compilation
+
+```
+
+**Kerenl Source**: https://github.com/nokia-dev/android_kernel_nokia_sdm660

+ 48 - 4
omni_PL2.mk

@@ -17,13 +17,53 @@
 # Release name
 PRODUCT_RELEASE_NAME := PL2
 
+# Inherit Build configuration for a very minimal build of the Open-Source part of the tree.
 $(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)
+# AB update support
+AB_OTA_UPDATER := true
+
+AB_OTA_PARTITIONS += \
+    boot \
+    system \
+    vendor
+
+AB_OTA_POSTINSTALL_CONFIG += \
+    RUN_POSTINSTALL_system=true \
+    POSTINSTALL_PATH_system=system/bin/otapreopt_script \
+    FILESYSTEM_TYPE_system=ext4 \
+    POSTINSTALL_OPTIONAL_system=true
+
+PRODUCT_PACKAGES += \
+    otapreopt_script
+
+# Boot control
+PRODUCT_PACKAGES_DEBUG += \
+    android.hardware.boot@1.0-impl \
+    android.hardware.boot@1.0-service \
+    bootctl
+
+# Update engine
+PRODUCT_PACKAGES += \
+    brillo_update_payload \
+    update_engine \
+    update_engine_sideload \
+    update_verifier
+
+PRODUCT_PACKAGES += \
+    bootctrl.sdm660
+
+PRODUCT_STATIC_BOOT_CONTROL_HAL := \
+    bootctrl.sdm660 \
+    libcutils \
+    libgptutils \
+    libz \
+
+PRODUCT_PACKAGES_DEBUG += \
+    update_engine_client
 
 # Charger
 PRODUCT_PACKAGES += \
@@ -43,9 +83,13 @@ PRODUCT_COPY_FILES += \
     $(TZDATAPATH)/tzdata:recovery/root/system/usr/share/zoneinfo/tzdata
 endif
 
+# Keystore
+PRODUCT_PROPERTY_OVERRIDES += \
+    ro.hardware.keystore=sdm660
+
 ## Device identifier. This must come after all inclusions
 PRODUCT_NAME := omni_PL2
 PRODUCT_DEVICE := PL2
+PRODUCT_MANUFACTURER := FIH
 PRODUCT_BRAND := Nokia
-PRODUCT_MODEL := 6.1
-PRODUCT_MANUFACTURER := Nokia
+PRODUCT_MODEL := Nokia 6.1

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

@@ -1,10 +0,0 @@
-# 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

+ 10 - 10
recovery/root/etc/twrp.fstab

@@ -5,17 +5,17 @@
 # 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;wipeingui
-/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
+/system          ext4              /dev/block/bootdevice/by-name/system     flags=slotselect;backup=1;display="System";
+/system_image    emmc              /dev/block/bootdevice/by-name/system     flags=slotselect
+/data            ext4              /dev/block/bootdevice/by-name/userdata   flags=encryptable=footer;backup=1;display="Data";
+/vendor          ext4              /dev/block/bootdevice/by-name/vendor     flags=slotselect;display="Vendor";backup=1;wipeingui
+/vendor_image    emmc              /dev/block/bootdevice/by-name/vendor     flags=slotselect
+/persist         ext4              /dev/block/bootdevice/by-name/persist    flags=display="Persist";backup=1
+/bt_firmware     vfat              /dev/block/bootdevice/by-name/bluetooth  flags=display="Bluetooth";backup=1;slotselect
+/modem		 emmc              /dev/block/bootdevice/by-name/modem      flags=slotselect;backup=1;display="Modem"
 /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
+/efs1            emmc              /dev/block/bootdevice/by-name/modemst1   flags=backup=1;display=EFS
+/efs2            emmc              /dev/block/bootdevice/by-name/modemst2   flags=backup=1;subpartitionof=/efs1
 
 # Removable storage
 /usb-otg         auto              /dev/block/sda1         /dev/block/sda   flags=removable;storage;display="USB OTG"

+ 44 - 0
recovery/root/fstab.qcom

@@ -0,0 +1,44 @@
+# 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,latemount,fileencryption=ice,quota,reservedsize=128M
+/dev/block/mmcblk1p1                         /sdcard               vfat    nosuid,nodev                                                    wait
+/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          /vendor/firmware_mnt  vfat   ro,shortname=lower,uid=0,gid=1000,dmask=227,fmask=337            wait,slotselect
+/dev/block/bootdevice/by-name/bluetooth      /vendor/bt_firmware   vfat   ro,shortname=lower,uid=1002,gid=3002,dmask=227,fmask=337         wait,slotselect
+/dev/block/bootdevice/by-name/dsp            /vendor/dsp           ext4   ro,nosuid,nodev,barrier=1                                        wait,slotselect
+/dev/block/bootdevice/by-name/persist        /mnt/vendor/persist   ext4   noatime,nosuid,nodev,barrier=1                                   wait
+
+# 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

+ 55 - 75
recovery/root/init.recovery.qcom.rc

@@ -1,120 +1,100 @@
-# 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 early-init
+    mkdir /firmware 0771 system system
+    mount debugfs debugfs /sys/kernel/debug
+    chmod 0755 /sys/kernel/debug
 
 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
+
+    # IMPORTANT!
+    # This needs to be supported by the init binary!
     install_keyring
 
-# Needed to make qseecomd work in recovery
-    chmod 0777 /dev/qseecom
-    chmod 0664 /dev/ion
-    chown system system /dev/ion
+on init
+    # Mount cgroup for cpu accounting
+    mount cgroup none /acct cpuacct
+    mkdir /acct/uid
+
+    start hwservicemanager
+
+on boot
+    setprop sys.usb.config adb
+    start prepdecrypt
+
+on property:crypto.ready=1
+    start sbin_qseecomd
+    start servicemanager
+
+    # Wait for qseecomd to finish
+    wait_for_prop sys.listeners.registered true
+
+    start gatekeeper-1-0
+    start keymaster-3-0
+
+on property:crypto.ready=0
+    stop keymaster-3-0
+    stop gatekeeper-1-0
+    stop servicemanager
+    stop sbin_qseecomd
 
-# Separate copy needed to use /sbin/linker64 instead of /system/bin/linker64
-service sbinqseecomd /sbin/qseecomd
+service hwservicemanager /sbin/hwservicemanager
     user root
     group root
     disabled
+    onrestart setprop hwservicemanager.ready false
     seclabel u:r:recovery:s0
 
-service prepdecrypt /sbin/prepdecrypt.sh
-    oneshot
+service servicemanager /sbin/servicemanager
     disabled
     user root
-    group root
+    group root readproc
     seclabel u:r:recovery:s0
+    writepid /dev/cpuset/system-background/tasks
 
-service hwservicemanager /sbin/hwservicemanager
+service keymaster-3-0 /sbin/android.hardware.keymaster@3.0-service-qti
     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
+service gatekeeper-1-0 /sbin/android.hardware.gatekeeper@1.0-service-qti
     user root
     group root
     disabled
     seclabel u:r:recovery:s0
 
-service servicemanager /sbin/servicemanager
-    user root
-    group root readproc
+service sbin_qseecomd /sbin/qseecomd
     disabled
+    user root
+    group root
     seclabel u:r:recovery:s0
 
-service keystore_auth /sbin/keystore_auth
+service prepdecrypt /sbin/prepdecrypt.sh
     oneshot
-    user system
-    group root
     disabled
+    user root
+    group root
     seclabel u:r:recovery:s0
 
-# keystore is started and stopped on demand by TWRP
+# Handled by TWRP
 service keystore /sbin/keystore /tmp/misc/keystore
+    disabled
+    oneshot
     user root
     group root drmrpc readproc
-    disabled
     seclabel u:r:recovery:s0
+    writepid /dev/cpuset/foreground/tasks
 
-service gatekeeper-1-0 /sbin/android.hardware.gatekeeper@1.0-service-qti
-    user root
-    group root
+# Handled by TWRP
+service keystore_auth /sbin/keystore_auth
     disabled
-    seclabel u:r:recovery:s0
-
-service keymaster-3-0 /sbin/android.hardware.keymaster@3.0-service-qti
-    user root
+    oneshot
+    user system
     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

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.keymaster@4.0-service-qti


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


+ 16 - 83
recovery/root/sbin/prepdecrypt.sh

@@ -1,103 +1,36 @@
 #!/sbin/sh
 
-relink()
-{
-	fname=$(basename "$1")
-	target="/sbin/$fname"
-	sed 's|/system/bin/linker64|///////sbin/linker64|' "$1" > "$target"
-	chmod 755 $target
-}
+finish() {
+    umount /s
+
+    setprop crypto.ready 1
 
-finish()
-{
-	umount /v
-	umount /s
-	rmdir /v
-	rmdir /s
-	setprop crypto.ready 1
-	exit 0
+    exit 0
 }
 
 suffix=$(getprop ro.boot.slot_suffix)
 if [ -z "$suffix" ]; then
-	suf=$(getprop ro.boot.slot)
-	suffix="_$suf"
+    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
+    setprop ro.build.version.release "$(getprop ro.build.version.release_orig)"
+    setprop ro.build.version.security_patch "$(getprop ro.build.version.security_patch_orig)"
+    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
+    setprop ro.build.version.release "$(grep -i 'ro.build.version.release' /s/system/build.prop | cut -f2 -d'=')"
+    setprop ro.build.version.security_patch "$(grep -i 'ro.build.version.security_patch' /s/system/build.prop  | cut -f2 -d'=')"
+    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
-
+setprop ro.build.version.release "$(getprop ro.build.version.release_orig)"
+setprop ro.build.version.security_patch "$(getprop ro.build.version.security_patch_orig)"
 finish
-exit 0

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


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


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

@@ -1,136 +0,0 @@
-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

+ 6 - 7
recovery/root/vendor/compatibility_matrix.xml

@@ -55,11 +55,10 @@
             <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>
+    <vendor-ndk>
+        <version>28</version>
+    </vendor-ndk>
+    <system-sdk>
+        <version>28</version>
+    </system-sdk>
 </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/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/libqtikeymaster4.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


+ 568 - 43
recovery/root/vendor/manifest.xml

@@ -1,21 +1,23 @@
-<manifest version="1.0" type="device">
+<manifest version="1.0" type="device" target-level="2">
     <hal format="hidl">
         <name>android.hardware.audio</name>
         <transport>hwbinder</transport>
-        <version>2.0</version>
+        <version>4.0</version>
         <interface>
             <name>IDevicesFactory</name>
             <instance>default</instance>
         </interface>
+        <fqname>@4.0::IDevicesFactory/default</fqname>
     </hal>
     <hal format="hidl">
         <name>android.hardware.audio.effect</name>
         <transport>hwbinder</transport>
-        <version>2.0</version>
+        <version>4.0</version>
         <interface>
             <name>IEffectsFactory</name>
             <instance>default</instance>
         </interface>
+        <fqname>@4.0::IEffectsFactory/default</fqname>
     </hal>
     <hal format="hidl">
         <name>android.hardware.biometrics.fingerprint</name>
@@ -25,6 +27,7 @@
             <name>IBiometricsFingerprint</name>
             <instance>default</instance>
         </interface>
+        <fqname>@2.1::IBiometricsFingerprint/default</fqname>
     </hal>
     <hal format="hidl">
         <name>android.hardware.bluetooth</name>
@@ -34,6 +37,7 @@
             <name>IBluetoothHci</name>
             <instance>default</instance>
         </interface>
+        <fqname>@1.0::IBluetoothHci/default</fqname>
     </hal>
     <hal format="hidl">
         <name>android.hardware.boot</name>
@@ -43,6 +47,7 @@
             <name>IBootControl</name>
             <instance>default</instance>
         </interface>
+        <fqname>@1.0::IBootControl/default</fqname>
     </hal>
     <hal format="hidl">
         <name>android.hardware.camera.provider</name>
@@ -52,6 +57,7 @@
             <name>ICameraProvider</name>
             <instance>legacy/0</instance>
         </interface>
+        <fqname>@2.4::ICameraProvider/legacy/0</fqname>
     </hal>
     <hal format="hidl">
         <name>android.hardware.cas</name>
@@ -61,24 +67,17 @@
             <name>IMediaCasService</name>
             <instance>default</instance>
         </interface>
+        <fqname>@1.0::IMediaCasService/default</fqname>
     </hal>
     <hal format="hidl">
         <name>android.hardware.configstore</name>
         <transport>hwbinder</transport>
-        <version>1.0</version>
+        <version>1.1</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>
+        <fqname>@1.1::ISurfaceFlingerConfigs/default</fqname>
     </hal>
     <hal format="hidl">
         <name>android.hardware.drm</name>
@@ -87,22 +86,17 @@
         <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>
+        <fqname>@1.0::ICryptoFactory/default</fqname>
+        <fqname>@1.0::IDrmFactory/default</fqname>
+        <fqname>@1.1::ICryptoFactory/clearkey</fqname>
+        <fqname>@1.1::ICryptoFactory/widevine</fqname>
+        <fqname>@1.1::IDrmFactory/clearkey</fqname>
+        <fqname>@1.1::IDrmFactory/widevine</fqname>
     </hal>
     <hal format="hidl">
         <name>android.hardware.gatekeeper</name>
@@ -112,6 +106,7 @@
             <name>IGatekeeper</name>
             <instance>default</instance>
         </interface>
+        <fqname>@1.0::IGatekeeper/default</fqname>
     </hal>
     <hal format="hidl">
         <name>android.hardware.gnss</name>
@@ -121,6 +116,8 @@
             <name>IGnss</name>
             <instance>default</instance>
         </interface>
+        <fqname>@1.0::IGnss/default</fqname>
+        <fqname>@1.0::IGnss/gnss_vendor</fqname>
     </hal>
     <hal format="hidl">
         <name>android.hardware.graphics.allocator</name>
@@ -130,6 +127,7 @@
             <name>IAllocator</name>
             <instance>default</instance>
         </interface>
+        <fqname>@2.0::IAllocator/default</fqname>
     </hal>
     <hal format="hidl">
         <name>android.hardware.graphics.composer</name>
@@ -139,6 +137,7 @@
             <name>IComposer</name>
             <instance>default</instance>
         </interface>
+        <fqname>@2.1::IComposer/default</fqname>
     </hal>
     <hal format="hidl">
         <name>android.hardware.graphics.mapper</name>
@@ -148,6 +147,17 @@
             <name>IMapper</name>
             <instance>default</instance>
         </interface>
+        <fqname>@2.0::IMapper/default</fqname>
+    </hal>
+    <hal format="hidl">
+        <name>android.hardware.health</name>
+        <transport>hwbinder</transport>
+        <version>2.0</version>
+        <interface>
+            <name>IHealth</name>
+            <instance>default</instance>
+        </interface>
+        <fqname>@2.0::IHealth/default</fqname>
     </hal>
     <hal format="hidl">
         <name>android.hardware.keymaster</name>
@@ -157,6 +167,7 @@
             <name>IKeymasterDevice</name>
             <instance>default</instance>
         </interface>
+        <fqname>@3.0::IKeymasterDevice/default</fqname>
     </hal>
     <hal format="hidl">
         <name>android.hardware.light</name>
@@ -166,6 +177,7 @@
             <name>ILight</name>
             <instance>default</instance>
         </interface>
+        <fqname>@2.0::ILight/default</fqname>
     </hal>
     <hal format="hidl">
         <name>android.hardware.media.omx</name>
@@ -179,6 +191,8 @@
             <name>IOmxStore</name>
             <instance>default</instance>
         </interface>
+        <fqname>@1.0::IOmx/default</fqname>
+        <fqname>@1.0::IOmxStore/default</fqname>
     </hal>
     <hal format="hidl">
         <name>android.hardware.memtrack</name>
@@ -188,46 +202,56 @@
             <name>IMemtrack</name>
             <instance>default</instance>
         </interface>
+        <fqname>@1.0::IMemtrack/default</fqname>
     </hal>
     <hal format="hidl">
         <name>android.hardware.nfc</name>
         <transport>hwbinder</transport>
-        <version>1.0</version>
+        <version>1.1</version>
         <interface>
             <name>INfc</name>
             <instance>default</instance>
         </interface>
+        <fqname>@1.1::INfc/default</fqname>
     </hal>
     <hal format="hidl">
         <name>android.hardware.power</name>
         <transport>hwbinder</transport>
-        <version>1.1</version>
+        <version>1.0</version>
         <interface>
             <name>IPower</name>
             <instance>default</instance>
         </interface>
+        <fqname>@1.0::IPower/default</fqname>
     </hal>
     <hal format="hidl">
         <name>android.hardware.radio</name>
         <transport>hwbinder</transport>
-        <version>1.1</version>
+        <version>1.2</version>
         <interface>
             <name>IRadio</name>
             <instance>slot1</instance>
+            <instance>slot2</instance>
         </interface>
         <interface>
             <name>ISap</name>
             <instance>slot1</instance>
+            <instance>slot2</instance>
         </interface>
+        <fqname>@1.2::IRadio/slot1</fqname>
+        <fqname>@1.2::IRadio/slot2</fqname>
+        <fqname>@1.2::ISap/slot1</fqname>
+        <fqname>@1.2::ISap/slot2</fqname>
     </hal>
     <hal format="hidl">
-        <name>android.hardware.radio.deprecated</name>
+        <name>android.hardware.radio.config</name>
         <transport>hwbinder</transport>
         <version>1.0</version>
         <interface>
-            <name>IOemHook</name>
-            <instance>slot1</instance>
+            <name>IRadioConfig</name>
+            <instance>default</instance>
         </interface>
+        <fqname>@1.0::IRadioConfig/default</fqname>
     </hal>
     <hal format="hidl">
         <name>android.hardware.renderscript</name>
@@ -237,6 +261,19 @@
             <name>IDevice</name>
             <instance>default</instance>
         </interface>
+        <fqname>@1.0::IDevice/default</fqname>
+    </hal>
+    <hal format="hidl">
+        <name>android.hardware.secure_element</name>
+        <transport>hwbinder</transport>
+        <version>1.0</version>
+        <interface>
+            <name>ISecureElement</name>
+            <instance>SIM1</instance>
+            <instance>SIM2</instance>
+        </interface>
+        <fqname>@1.0::ISecureElement/SIM1</fqname>
+        <fqname>@1.0::ISecureElement/SIM2</fqname>
     </hal>
     <hal format="hidl">
         <name>android.hardware.sensors</name>
@@ -246,6 +283,7 @@
             <name>ISensors</name>
             <instance>default</instance>
         </interface>
+        <fqname>@1.0::ISensors/default</fqname>
     </hal>
     <hal format="hidl">
         <name>android.hardware.soundtrigger</name>
@@ -255,24 +293,47 @@
             <name>ISoundTriggerHw</name>
             <instance>default</instance>
         </interface>
+        <fqname>@2.0::ISoundTriggerHw/default</fqname>
+    </hal>
+    <hal format="hidl">
+        <name>android.hardware.tetheroffload.config</name>
+        <transport>hwbinder</transport>
+        <version>1.0</version>
+        <interface>
+            <name>IOffloadConfig</name>
+            <instance>default</instance>
+        </interface>
+        <fqname>@1.0::IOffloadConfig/default</fqname>
+    </hal>
+    <hal format="hidl">
+        <name>android.hardware.tetheroffload.control</name>
+        <transport>hwbinder</transport>
+        <version>1.0</version>
+        <interface>
+            <name>IOffloadControl</name>
+            <instance>default</instance>
+        </interface>
+        <fqname>@1.0::IOffloadControl/default</fqname>
     </hal>
     <hal format="hidl">
         <name>android.hardware.thermal</name>
         <transport>hwbinder</transport>
-        <version>1.1</version>
+        <version>1.0</version>
         <interface>
             <name>IThermal</name>
             <instance>default</instance>
         </interface>
+        <fqname>@1.0::IThermal/default</fqname>
     </hal>
     <hal format="hidl">
         <name>android.hardware.usb</name>
         <transport>hwbinder</transport>
-        <version>1.1</version>
+        <version>1.0</version>
         <interface>
             <name>IUsb</name>
             <instance>default</instance>
         </interface>
+        <fqname>@1.0::IUsb/default</fqname>
     </hal>
     <hal format="hidl">
         <name>android.hardware.vibrator</name>
@@ -282,53 +343,517 @@
             <name>IVibrator</name>
             <instance>default</instance>
         </interface>
+        <fqname>@1.0::IVibrator/default</fqname>
     </hal>
     <hal format="hidl">
-        <name>android.hardware.vr</name>
+        <name>android.hardware.wifi</name>
         <transport>hwbinder</transport>
-        <version>1.0</version>
+        <version>1.2</version>
         <interface>
-            <name>IVr</name>
+            <name>IWifi</name>
             <instance>default</instance>
         </interface>
+        <fqname>@1.2::IWifi/default</fqname>
     </hal>
     <hal format="hidl">
-        <name>android.hardware.wifi</name>
+        <name>android.hardware.wifi.hostapd</name>
         <transport>hwbinder</transport>
         <version>1.0</version>
         <interface>
-            <name>IWifi</name>
+            <name>IHostapd</name>
             <instance>default</instance>
         </interface>
+        <fqname>@1.0::IHostapd/default</fqname>
     </hal>
     <hal format="hidl">
         <name>android.hardware.wifi.supplicant</name>
         <transport>hwbinder</transport>
-        <version>1.0</version>
+        <version>1.1</version>
         <interface>
             <name>ISupplicant</name>
             <instance>default</instance>
         </interface>
+        <fqname>@1.1::ISupplicant/default</fqname>
+    </hal>
+    <hal format="hidl">
+        <name>com.qualcomm.qti.ant</name>
+        <transport>hwbinder</transport>
+        <version>1.0</version>
+        <interface>
+            <name>IAntHci</name>
+            <instance>default</instance>
+        </interface>
+        <fqname>@1.0::IAntHci/default</fqname>
+    </hal>
+    <hal format="hidl">
+        <name>com.qualcomm.qti.bluetooth_audio</name>
+        <transport>hwbinder</transport>
+        <version>1.0</version>
+        <interface>
+            <name>IBluetoothAudio</name>
+            <instance>default</instance>
+        </interface>
+        <fqname>@1.0::IBluetoothAudio/default</fqname>
+    </hal>
+    <hal format="hidl">
+        <name>com.qualcomm.qti.dpm.api</name>
+        <transport>hwbinder</transport>
+        <version>1.0</version>
+        <interface>
+            <name>IdpmQmi</name>
+            <instance>dpmQmiService</instance>
+        </interface>
+        <fqname>@1.0::IdpmQmi/dpmQmiService</fqname>
+    </hal>
+    <hal format="hidl">
+        <name>com.qualcomm.qti.imscmservice</name>
+        <transport>hwbinder</transport>
+        <version>2.0</version>
+        <interface>
+            <name>IImsCmService</name>
+            <instance>qti.ims.connectionmanagerservice</instance>
+        </interface>
+        <fqname>@2.0::IImsCmService/qti.ims.connectionmanagerservice</fqname>
+    </hal>
+    <hal format="hidl">
+        <name>com.qualcomm.qti.uceservice</name>
+        <transport>hwbinder</transport>
+        <version>2.0</version>
+        <interface>
+            <name>IUceService</name>
+            <instance>com.qualcomm.qti.uceservice</instance>
+        </interface>
+        <fqname>@2.0::IUceService/com.qualcomm.qti.uceservice</fqname>
+    </hal>
+    <hal format="hidl">
+        <name>com.qualcomm.qti.wifidisplayhal</name>
+        <transport>hwbinder</transport>
+        <version>1.0</version>
+        <interface>
+            <name>IDSManager</name>
+            <instance>wifidisplaydshal</instance>
+        </interface>
+        <interface>
+            <name>IHDCPSession</name>
+            <instance>wifidisplayhdcphal</instance>
+        </interface>
+        <fqname>@1.0::IDSManager/wifidisplaydshal</fqname>
+        <fqname>@1.0::IHDCPSession/wifidisplayhdcphal</fqname>
+    </hal>
+    <hal format="hidl">
+        <name>com.quicinc.cne.api</name>
+        <transport>hwbinder</transport>
+        <version>1.1</version>
+        <interface>
+            <name>IApiService</name>
+            <instance>cnd</instance>
+        </interface>
+        <fqname>@1.1::IApiService/cnd</fqname>
+    </hal>
+    <hal format="hidl">
+        <name>com.quicinc.cne.server</name>
+        <transport>hwbinder</transport>
+        <version>2.2</version>
+        <interface>
+            <name>IServer</name>
+            <instance>cnd</instance>
+        </interface>
+        <fqname>@2.2::IServer/cnd</fqname>
+    </hal>
+    <hal format="hidl">
+        <name>vendor.display.color</name>
+        <transport>hwbinder</transport>
+        <version>1.0</version>
+        <interface>
+            <name>IDisplayColor</name>
+            <instance>default</instance>
+        </interface>
+        <fqname>@1.0::IDisplayColor/default</fqname>
+    </hal>
+    <hal format="hidl">
+        <name>vendor.display.config</name>
+        <transport>hwbinder</transport>
+        <version>1.1</version>
+        <interface>
+            <name>IDisplayConfig</name>
+            <instance>default</instance>
+        </interface>
+        <fqname>@1.1::IDisplayConfig/default</fqname>
+    </hal>
+    <hal format="hidl">
+        <name>vendor.display.postproc</name>
+        <transport>hwbinder</transport>
+        <version>1.0</version>
+        <interface>
+            <name>IDisplayPostproc</name>
+            <instance>default</instance>
+        </interface>
+        <fqname>@1.0::IDisplayPostproc/default</fqname>
+    </hal>
+    <hal format="hidl">
+        <name>vendor.fih.hardware.box</name>
+        <transport>hwbinder</transport>
+        <version>1.0</version>
+        <interface>
+            <name>IBox</name>
+            <instance>default</instance>
+        </interface>
+        <fqname>@1.0::IBox/default</fqname>
+    </hal>
+    <hal format="hidl">
+        <name>vendor.fih.hardware.ifaa</name>
+        <transport>hwbinder</transport>
+        <version>1.0</version>
+        <interface>
+            <name>IIfaa</name>
+            <instance>default</instance>
+        </interface>
+        <fqname>@1.0::IIfaa/default</fqname>
+    </hal>
+    <hal format="hidl">
+        <name>vendor.fih.hardware.iface</name>
+        <transport>hwbinder</transport>
+        <version>1.0</version>
+        <interface>
+            <name>IIface</name>
+            <instance>default</instance>
+        </interface>
+        <fqname>@1.0::IIface/default</fqname>
+    </hal>
+    <hal format="hidl">
+        <name>vendor.goodix.hardware.fingerprint</name>
+        <transport>hwbinder</transport>
+        <version>1.0</version>
+        <interface>
+            <name>IGoodixBiometricsFingerprint</name>
+            <instance>default</instance>
+        </interface>
+        <fqname>@1.0::IGoodixBiometricsFingerprint/default</fqname>
+    </hal>
+    <hal format="hidl">
+        <name>vendor.nxp.hardware.nfc</name>
+        <transport>hwbinder</transport>
+        <version>1.0</version>
+        <interface>
+            <name>INqNfc</name>
+            <instance>default</instance>
+        </interface>
+        <fqname>@1.0::INqNfc/default</fqname>
+    </hal>
+    <hal format="hidl">
+        <name>vendor.pixelworks.hardware.display</name>
+        <transport>hwbinder</transport>
+        <version>1.0</version>
+        <interface>
+            <name>IIris</name>
+            <instance>default</instance>
+        </interface>
+        <fqname>@1.0::IIris/default</fqname>
+    </hal>
+    <hal format="hidl">
+        <name>vendor.qti.data.factory</name>
+        <transport>hwbinder</transport>
+        <version>1.0</version>
+        <interface>
+            <name>IFactory</name>
+            <instance>default</instance>
+        </interface>
+        <fqname>@1.0::IFactory/default</fqname>
+    </hal>
+    <hal format="hidl">
+        <name>vendor.qti.esepowermanager</name>
+        <transport>hwbinder</transport>
+        <version>1.0</version>
+        <interface>
+            <name>IEsePowerManager</name>
+            <instance>default</instance>
+        </interface>
+        <fqname>@1.0::IEsePowerManager/default</fqname>
+    </hal>
+    <hal format="hidl">
+        <name>vendor.qti.gnss</name>
+        <transport>hwbinder</transport>
+        <version>1.2</version>
+        <interface>
+            <name>ILocHidlGnss</name>
+            <instance>gnss_vendor</instance>
+        </interface>
+        <fqname>@1.2::ILocHidlGnss/gnss_vendor</fqname>
+    </hal>
+    <hal format="hidl">
+        <name>vendor.qti.gnss</name>
+        <transport>hwbinder</transport>
+        <version>2.0</version>
+        <interface>
+            <name>ILocHidlGnss</name>
+            <instance>gnss_vendor</instance>
+        </interface>
+        <fqname>@2.0::ILocHidlGnss/gnss_vendor</fqname>
+    </hal>
+    <hal format="hidl">
+        <name>vendor.qti.hardware.alarm</name>
+        <transport>hwbinder</transport>
+        <version>1.0</version>
+        <interface>
+            <name>IAlarm</name>
+            <instance>default</instance>
+        </interface>
+        <fqname>@1.0::IAlarm/default</fqname>
+    </hal>
+    <hal format="hidl">
+        <name>vendor.qti.hardware.data.latency</name>
+        <transport>hwbinder</transport>
+        <version>1.0</version>
+        <interface>
+            <name>ILinkLatency</name>
+            <instance>default</instance>
+        </interface>
+        <fqname>@1.0::ILinkLatency/default</fqname>
+    </hal>
+    <hal format="hidl">
+        <name>vendor.qti.hardware.factory</name>
+        <transport>hwbinder</transport>
+        <version>1.0</version>
+        <interface>
+            <name>IFactory</name>
+            <instance>default</instance>
+        </interface>
+        <fqname>@1.0::IFactory/default</fqname>
+    </hal>
+    <hal format="hidl">
+        <name>vendor.qti.hardware.fm</name>
+        <transport>hwbinder</transport>
+        <version>1.0</version>
+        <interface>
+            <name>IFmHci</name>
+            <instance>default</instance>
+        </interface>
+        <fqname>@1.0::IFmHci/default</fqname>
+    </hal>
+    <hal format="hidl">
+        <name>vendor.qti.hardware.perf</name>
+        <transport>hwbinder</transport>
+        <version>1.0</version>
+        <interface>
+            <name>IPerf</name>
+            <instance>default</instance>
+        </interface>
+        <fqname>@1.0::IPerf/default</fqname>
+    </hal>
+    <hal format="hidl">
+        <name>vendor.qti.hardware.qdutils_disp</name>
+        <transport>hwbinder</transport>
+        <version>1.0</version>
+        <interface>
+            <name>IQdutilsDisp</name>
+            <instance>default</instance>
+        </interface>
+        <fqname>@1.0::IQdutilsDisp/default</fqname>
     </hal>
     <hal format="hidl">
-        <name>vendor.qti.atcmdfwd</name>
+        <name>vendor.qti.hardware.qteeconnector</name>
         <transport>hwbinder</transport>
         <version>1.0</version>
         <interface>
-            <name>IAtCmdFwd</name>
-            <instance>AtCmdFwdService</instance>
+            <name>IAppConnector</name>
+            <instance>default</instance>
+        </interface>
+        <interface>
+            <name>IGPAppConnector</name>
+            <instance>default</instance>
         </interface>
+        <fqname>@1.0::IAppConnector/default</fqname>
+        <fqname>@1.0::IGPAppConnector/default</fqname>
     </hal>
     <hal format="hidl">
-        <name>vendor.qti.qcril.am</name>
+        <name>vendor.qti.hardware.radio.am</name>
         <transport>hwbinder</transport>
         <version>1.0</version>
         <interface>
             <name>IQcRilAudio</name>
+            <instance>slot1</instance>
+            <instance>slot2</instance>
+        </interface>
+        <fqname>@1.0::IQcRilAudio/slot1</fqname>
+        <fqname>@1.0::IQcRilAudio/slot2</fqname>
+    </hal>
+    <hal format="hidl">
+        <name>vendor.qti.hardware.radio.ims</name>
+        <transport>hwbinder</transport>
+        <version>1.3</version>
+        <interface>
+            <name>IImsRadio</name>
+            <instance>imsradio0</instance>
+            <instance>imsradio1</instance>
+        </interface>
+        <fqname>@1.3::IImsRadio/imsradio0</fqname>
+        <fqname>@1.3::IImsRadio/imsradio1</fqname>
+    </hal>
+    <hal format="hidl">
+        <name>vendor.qti.hardware.radio.lpa</name>
+        <transport>hwbinder</transport>
+        <version>1.0</version>
+        <interface>
+            <name>IUimLpa</name>
+            <instance>UimLpa0</instance>
+            <instance>UimLpa1</instance>
+        </interface>
+        <fqname>@1.0::IUimLpa/UimLpa0</fqname>
+        <fqname>@1.0::IUimLpa/UimLpa1</fqname>
+    </hal>
+    <hal format="hidl">
+        <name>vendor.qti.hardware.radio.qcrilhook</name>
+        <transport>hwbinder</transport>
+        <version>1.0</version>
+        <interface>
+            <name>IQtiOemHook</name>
+            <instance>oemhook0</instance>
+            <instance>oemhook1</instance>
+        </interface>
+        <fqname>@1.0::IQtiOemHook/oemhook0</fqname>
+        <fqname>@1.0::IQtiOemHook/oemhook1</fqname>
+    </hal>
+    <hal format="hidl">
+        <name>vendor.qti.hardware.radio.qtiradio</name>
+        <transport>hwbinder</transport>
+        <version>1.0</version>
+        <interface>
+            <name>IQtiRadio</name>
+            <instance>slot1</instance>
+            <instance>slot2</instance>
+        </interface>
+        <fqname>@1.0::IQtiRadio/slot1</fqname>
+        <fqname>@1.0::IQtiRadio/slot2</fqname>
+    </hal>
+    <hal format="hidl">
+        <name>vendor.qti.hardware.radio.qtiradio</name>
+        <transport>hwbinder</transport>
+        <version>2.0</version>
+        <interface>
+            <name>IQtiRadio</name>
+            <instance>slot1</instance>
+            <instance>slot2</instance>
+        </interface>
+        <fqname>@2.0::IQtiRadio/slot1</fqname>
+        <fqname>@2.0::IQtiRadio/slot2</fqname>
+    </hal>
+    <hal format="hidl">
+        <name>vendor.qti.hardware.radio.uim</name>
+        <transport>hwbinder</transport>
+        <version>1.1</version>
+        <interface>
+            <name>IUim</name>
+            <instance>Uim0</instance>
+            <instance>Uim1</instance>
+        </interface>
+        <fqname>@1.1::IUim/Uim0</fqname>
+        <fqname>@1.1::IUim/Uim1</fqname>
+    </hal>
+    <hal format="hidl">
+        <name>vendor.qti.hardware.radio.uim_remote_client</name>
+        <transport>hwbinder</transport>
+        <version>1.0</version>
+        <interface>
+            <name>IUimRemoteServiceClient</name>
+            <instance>uimRemoteClient0</instance>
+            <instance>uimRemoteClient1</instance>
+        </interface>
+        <fqname>@1.0::IUimRemoteServiceClient/uimRemoteClient0</fqname>
+        <fqname>@1.0::IUimRemoteServiceClient/uimRemoteClient1</fqname>
+    </hal>
+    <hal format="hidl">
+        <name>vendor.qti.hardware.radio.uim_remote_server</name>
+        <transport>hwbinder</transport>
+        <version>1.0</version>
+        <interface>
+            <name>IUimRemoteServiceServer</name>
+            <instance>uimRemoteServer0</instance>
+            <instance>uimRemoteServer1</instance>
+        </interface>
+        <fqname>@1.0::IUimRemoteServiceServer/uimRemoteServer0</fqname>
+        <fqname>@1.0::IUimRemoteServiceServer/uimRemoteServer1</fqname>
+    </hal>
+    <hal format="hidl">
+        <name>vendor.qti.hardware.soter</name>
+        <transport>hwbinder</transport>
+        <version>1.0</version>
+        <interface>
+            <name>ISoter</name>
+            <instance>default</instance>
+        </interface>
+        <fqname>@1.0::ISoter/default</fqname>
+    </hal>
+    <hal format="hidl">
+        <name>vendor.qti.hardware.tui_comm</name>
+        <transport>hwbinder</transport>
+        <version>1.0</version>
+        <interface>
+            <name>ITuiComm</name>
+            <instance>default</instance>
+        </interface>
+        <fqname>@1.0::ITuiComm/default</fqname>
+    </hal>
+    <hal format="hidl">
+        <name>vendor.qti.hardware.wifi.hostapd</name>
+        <transport>hwbinder</transport>
+        <version>1.0</version>
+        <interface>
+            <name>IHostapdVendor</name>
+            <instance>default</instance>
+        </interface>
+        <fqname>@1.0::IHostapdVendor/default</fqname>
+    </hal>
+    <hal format="hidl">
+        <name>vendor.qti.hardware.wifi.keystore</name>
+        <transport>hwbinder</transport>
+        <version>1.0</version>
+        <interface>
+            <name>IKeystoreExt</name>
+            <instance>default</instance>
+        </interface>
+        <fqname>@1.0::IKeystoreExt/default</fqname>
+    </hal>
+    <hal format="hidl">
+        <name>vendor.qti.hardware.wifi.supplicant</name>
+        <transport>hwbinder</transport>
+        <version>2.0</version>
+        <interface>
+            <name>ISupplicantVendor</name>
+            <instance>default</instance>
+        </interface>
+        <fqname>@2.0::ISupplicantVendor/default</fqname>
+    </hal>
+    <hal format="hidl">
+        <name>vendor.qti.ims.callinfo</name>
+        <transport>hwbinder</transport>
+        <version>1.0</version>
+        <interface>
+            <name>IService</name>
+            <instance>default</instance>
+        </interface>
+        <fqname>@1.0::IService/default</fqname>
+    </hal>
+    <hal format="hidl">
+        <name>vendor.qti.imsrtpservice</name>
+        <transport>hwbinder</transport>
+        <version>1.0</version>
+        <interface>
+            <name>IRTPService</name>
+            <instance>imsrtpservice</instance>
+        </interface>
+        <fqname>@1.0::IRTPService/imsrtpservice</fqname>
+    </hal>
+    <hal format="hidl">
+        <name>vendor.sec.hardware.nfc</name>
+        <transport>hwbinder</transport>
+        <version>1.1</version>
+        <interface>
+            <name>ISecNfc</name>
             <instance>default</instance>
         </interface>
+        <fqname>@1.1::ISecNfc/default</fqname>
     </hal>
     <sepolicy>
-        <version>27.0</version>
+        <version>28.0</version>
     </sepolicy>
 </manifest>