Przeglądaj źródła

add more references to boot impl

Change-Id: If78ce11c69924940129511700f309f9734b54a50
SmallPP420 4 lat temu
rodzic
commit
ba02b9ba58

+ 27 - 6
BoardConfig.mk

@@ -57,18 +57,18 @@ AB_OTA_PARTITIONS += \
     system \
     tee \
     vbmeta \
-    vendor \
+    vendor 
 
 # Kernel
 BOARD_KERNEL_CMDLINE := bootopt=64S3,32N2,64N2
+BOARD_KERNEL_CMDLINE += androidboot.force_normal_boot=1     #maybe fix for issue of recovery bootloop
 BOARD_KERNEL_BASE := 0x40078000
 BOARD_KERNEL_PAGESIZE := 2048
 BOARD_RAMDISK_OFFSET := 0x11a88000
 BOARD_KERNEL_TAGS_OFFSET := 0x07808000
-
 BOARD_BOOTIMG_HEADER_VERSION := 2
-BOARD_KERNEL_IMAGE_NAME := Image.gz
 
+BOARD_KERNEL_IMAGE_NAME := Image.gz
 TARGET_PREBUILT_KERNEL := $(DEVICE_PATH)/prebuilt/kernel.gz
 TARGET_PREBUILT_DTB := $(DEVICE_PATH)/prebuilt/dtb.img
 
@@ -82,13 +82,17 @@ TARGET_OTA_ASSERT_DEVICE := WSP_sprout,Wasp
 
 # Partition
 BOARD_FLASH_BLOCK_SIZE := 131072
+#BOARD_CACHEIMAGE_PARTITION_SIZE := 136314880
+#BOARD_BOOTIMAGE_PARTITION_SIZE := 67108864
 BOARD_BOOTIMAGE_PARTITION_SIZE := 33554432
 
 # File system type
 BOARD_HAS_LARGE_FILESYSTEM := true
 BOARD_VENDORIMAGE_FILE_SYSTEM_TYPE := ext4
+#BOARD_CACHEIMAGE_FILE_SYSTEM_TYPE := ext4
 BOARD_USERDATAIMAGE_FILE_SYSTEM_TYPE := ext4
 TARGET_USERIMAGES_USE_F2FS := true
+TARGET_USERIMAGES_USE_EXT4 := true
 
 # Workaround for error copying files to recovery ramdisk
 TARGET_COPY_OUT_VENDOR := vendor
@@ -108,6 +112,7 @@ BOARD_SUPPRESS_SECURE_ERASE := true
 
 # Crypto
 TW_INCLUDE_CRYPTO := true
+TW_INCLUDE_FBE_METADATA_DECRYPT := true
 
 # AVB
 BOARD_AVB_ENABLE := true
@@ -129,22 +134,38 @@ BOARD_AVB_RECOVERY_ROLLBACK_INDEX_LOCATION := 3
 # 
 # TWRP Configuration
 TW_THEME := portrait_hdpi
+TW_Y_OFFSET  := 60 
+TW_H_OFFSET  := -60
 RECOVERY_SDCARD_ON_DATA := true
 TW_EXCLUDE_APEX := true
 TW_INCLUDE_RESETPROP := true
 TW_EXCLUDE_DEFAULT_USB_INIT := true
-TW_INCLUDE_FBE_METADATA_DECRYPT := true
 TW_INCLUDE_NTFS_3G := true
-TW_EXTRA_LANGUAGES := true
+TW_DEFAULT_LANGUAGE := en
+TW_EXTRA_LANGUAGES := false
 TARGET_USE_CUSTOM_LUN_FILE_PATH := /config/usb_gadget/g1/functions/mass_storage.usb0/lun.%d/file
 TW_BRIGHTNESS_PATH := "/sys/class/leds/lcd-backlight/brightness"
 TW_MAX_BRIGHTNESS := 255
-TW_DEFAULT_BRIGHTNESS := 80
+TW_DEFAULT_BRIGHTNESS := 800
 TWRP_INCLUDE_LOGCAT := true
 TARGET_USES_LOGD := true
 TARGET_USES_MKE2FS := true
+TW_EXCLUDE_TWRPAPP := true
+TW_USE_MODEL_HARDWARE_ID_FOR_DEVICE_ID := true
+TW_NO_SCREEN_BLANK := true
 TW_HAS_MTP := true
 
 PLATFORM_SECURITY_PATCH := 2099-12-31
 PLATFORM_VERSION := 20.1.0
 VENDOR_SECURITY_PATCH := 2099-12-31
+
+TW_INTERNAL_STORAGE_PATH := "/data/media/0"
+TW_INTERNAL_STORAGE_MOUNT_POINT := "data"
+TW_EXTERNAL_STORAGE_PATH := "/external_sd"
+TW_EXTERNAL_STORAGE_MOUNT_POINT := "external_sd"
+TW_DEFAULT_EXTERNAL_STORAGE := true
+
+TW_CRYPTO_FS_TYPE := "ext4"
+TW_CRYPTO_REAL_BLKDEV := "/dev/block/platform/bootdevice/by-name/userdata"
+TW_CRYPTO_MNT_POINT := "/data"
+TW_CRYPTO_FS_OPTIONS := "nosuid,nodev,noatime,discard,noauto_da_alloc,data=ordered"

+ 8 - 5
device.mk

@@ -1,10 +1,10 @@
 LOCAL_PATH := device/nokia/WSP_sprout
 
 # VNDK
-PRODUCT_TARGET_VNDK_VERSION := 30
+PRODUCT_TARGET_VNDK_VERSION := 28
 
 # API
-PRODUCT_SHIPPING_API_LEVEL := 28
+PRODUCT_SHIPPING_API_LEVEL := 30
 
 PRODUCT_PLATFORM := mt6761
 
@@ -16,7 +16,9 @@ AB_OTA_POSTINSTALL_CONFIG += \
 
 # Boot control HAL
 PRODUCT_PACKAGES += \
-    android.hardware.boot@1.1-impl
+    android.hardware.boot@1.1-impl-recovery \
+    android.hardware.boot@1.1-impl \
+    android.hardware.boot@1.1-service
 
 PRODUCT_PACKAGES_DEBUG += \
     update_engine_client
@@ -26,10 +28,11 @@ PRODUCT_PACKAGES += \
     update_engine \
     update_verifier \
     update_engine_sideload
-
+    
 # health Hal
 PRODUCT_PACKAGES += \
-    android.hardware.health@2.1-impl
+    android.hardware.health@2.1-impl \
+    android.hardware.health@2.1-service \
 
 TW_OVERRIDE_SYSTEM_PROPS := \
     "ro.build.product;ro.build.fingerprint;ro.build.version.incremental;ro.product.device=ro.product.system.device;ro.product.model=ro.product.system.model;ro.product.name=ro.product.system.name"

+ 796 - 82
recovery/root/init.recovery.usb.rc

@@ -1,41 +1,14 @@
-# Parts taken from init.rc, init.usb.rc, init.usb.configfs.rc and init.mt6771.usb.rc
-
-on early-init
-    write /sys/module/musb_hdrc/parameters/kernel_init_done 1
-
-on early-fs
-# Needed here to get the default triggers in init.rc to work
+# Copyright (c) 2020, The Linux Foundation. All rights reserved.
+#
+on boot
     setprop sys.usb.configfs 1
-    setprop sys.usb.ffs.aio_compat 1
-    setprop sys.usb.config mtp,adb
-    setprop vendor.usb.vid "0x0E8D"    
+    setprop sys.usb.ffs.aio_compat 0
     setprop vendor.usb.controller "musb-hdrc"
-    
-on fs && property:sys.usb.configfs=1
-    mount configfs none /config
-    write /config/usb_gadget/g1/idVendor ${vendor.usb.vid}
-    write /config/usb_gadget/g1/bcdDevice 0x0223
-    write /config/usb_gadget/g1/bcdUSB 0x0200
-    mkdir /config/usb_gadget/g1/functions/mtp.gs0
-    write /config/usb_gadget/g1/functions/mtp.gs0/os_desc/interface.MTP/compatible_id "MTP"
-    mkdir /config/usb_gadget/g1/functions/ptp.gs1
-    mkdir /config/usb_gadget/g1/functions/midi.gs5
-    mkdir /config/usb_gadget/g1/functions/acm.gs0
-    mkdir /config/usb_gadget/g1/functions/acm.gs1
-    mkdir /config/usb_gadget/g1/functions/acm.gs2
-    mkdir /config/usb_gadget/g1/functions/acm.gs3
-    mkdir /config/usb_gadget/g1/functions/mass_storage.usb0
-    mkdir /config/usb_gadget/g1/functions/hid.gs0
-    write /config/usb_gadget/g1/os_desc/use 1
-    write /config/usb_gadget/g1/os_desc/b_vendor_code 0x1
-    write /config/usb_gadget/g1/os_desc/qw_sign "MSFT100"
-    write /config/usb_gadget/g1/configs/b.1/MaxPower 500
-    symlink /config/usb_gadget/g1/configs/b.1 /config/usb_gadget/g1/os_desc/b.1
-
+    setprop vendor.usb.acm_cnt 0
+    setprop vendor.usb.acm_port0 ""
+    setprop vendor.usb.acm_port1 ""
+    setprop vendor.usb.acm_enable 0
     write /sys/class/android_usb/android0/f_mtp/cpu_mask 0xF0
-    write /sys/module/usb_f_mtp/parameters/mtp_rx_cont 1
-    chmod 0664 /sys/class/android_usb/android0/iSerial
-    chown root system /sys/class/android_usb/android0/iSerial
 
     chown radio system /sys/class/usb_rawbulk/data/enable
     chmod 0660 /sys/class/usb_rawbulk/data/enable
@@ -55,81 +28,822 @@ on fs && property:sys.usb.configfs=1
     chmod 0660 /dev/ttyGS2
     chown system radio /dev/ttyGS3
     chmod 0660 /dev/ttyGS3
-   
-    # for UAC MAX dpidle time
-    write /sys/module/xhci_hcd/parameters/dpidle_fs_max 0
-    write /sys/module/xhci_hcd/parameters/dpidle_hs_max 0
 
-    # for usb otg sdcard hot plug detection
-    write /sys/module/block/parameters/events_dfl_poll_msecs 1000
-
-### main function : none ###
-on property:sys.usb.config=none && property:sys.usb.configfs=0
-    setprop sys.usb.ffs.mtp.ready 0
-    write /sys/class/android_usb/android0/bDeviceClass 0
+on charger
+    mkdir /config/usb_gadget/g1 0770 shell shell
+    write /config/usb_gadget/g1/idVendor 0x0E8D
+    write /config/usb_gadget/g1/bcdDevice 0x0223
+    write /config/usb_gadget/g1/bcdUSB 0x0200
+    write /config/usb_gadget/g1/os_desc/use 1
+    mkdir /config/usb_gadget/g1/strings/0x409 0770
+    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/hid.gs0
+    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/configs/b.1/MaxPower 500
+    mount functionfs adb /dev/usb-ffs/adb uid=2000,gid=2000
+    setprop sys.usb.configfs 1
+    setprop vendor.usb.controller "musb-hdrc"
+    setprop vendor.usb.acm_cnt 0
+    setprop vendor.usb.acm_port0 ""
+    setprop vendor.usb.acm_port1 ""
+    setprop vendor.usb.acm_enable 0
+    setprop sys.usb.config hid
 
+### more command at init.usb.configfs.rc ###
 on property:sys.usb.config=none && property:sys.usb.configfs=1
-    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/f2
     write /config/usb_gadget/g1/idVendor ${vendor.usb.vid}
-    write /sys/class/udc/musb-hdrc/device/saving 0
+    rm /config/usb_gadget/g1/configs/b.1/f4
+    rm /config/usb_gadget/g1/configs/b.1/f5
+    write /sys/devices/platform/mt_usb/saving 0
 
-### main function : adb/sideload ###
-on property:sys.usb.ffs.ready=1 && property:sys.usb.config=adb && property:sys.usb.configfs=1
+### HID for KPOC ###
+on property:sys.usb.config=hid && property:sys.usb.configfs=1
+    write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "HID"
+    write /config/usb_gadget/g1/idProduct 0x20FF
+    write /config/usb_gadget/g1/functions/hid.gs0/protocol 0
+    write /config/usb_gadget/g1/functions/hid.gs0/subclass 0
+    #write /config/usb_gadget/g1/functions/hid.gs0/report_length 4
+    #write /config/usb_gadget/g1/functions/hid.gs0/report_desc \\x05\\x01\\x09\\x00\\xa1\\x01\\xc0
+    symlink /config/usb_gadget/g1/functions/hid.gs0 /config/usb_gadget/g1/configs/b.1/f1
+    write /config/usb_gadget/g1/UDC ${vendor.usb.controller}
+    setprop sys.usb.state ${sys.usb.config}
+
+### main function : adb ###
+### start adbd at init.usb.configfs.rc ###
+on property:sys.usb.config=adb && property:vendor.usb.acm_cnt=0 && \
+property:sys.usb.configfs=1
     setprop vendor.usb.pid 0x201C
+on property:sys.usb.config=adb && property:vendor.usb.acm_cnt=1 && \
+property:sys.usb.configfs=1
+    setprop vendor.usb.pid 0x2006
+    setprop vendor.usb.acm_port1 ""
+on property:sys.usb.config=adb && property:vendor.usb.acm_cnt=2 && \
+property:sys.usb.configfs=1
+    setprop vendor.usb.pid 0x2029
+
+on property:sys.usb.ffs.ready=1 && property:sys.usb.config=adb && \
+property:vendor.usb.acm_enable=1 && property:sys.usb.configfs=1
+    write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "adb_acm"
     write /config/usb_gadget/g1/idProduct ${vendor.usb.pid}
-#    write /config/usb_gadget/g1/UDC ${vendor.usb.controller}
+    write /sys/devices/platform/mt_usb/saving 1
+    symlink /config/usb_gadget/g1/functions/mass_storage.usb0 /config/usb_gadget/g1/configs/b.1/f1
+    symlink /config/usb_gadget/g1/functions/ffs.adb /config/usb_gadget/g1/configs/b.1/f2
+    symlink /config/usb_gadget/g1/functions/acm.gs${vendor.usb.acm_port0} /config/usb_gadget/g1/configs/b.1/f3
+    symlink /config/usb_gadget/g1/functions/acm.gs${vendor.usb.acm_port1} /config/usb_gadget/g1/configs/b.1/f4
+    write /config/usb_gadget/g1/UDC ${vendor.usb.controller}
+    setprop sys.usb.state ${sys.usb.config}
 
-on property:sys.usb.ffs.ready=1 && property:sys.usb.config=sideload && property:sys.usb.configfs=1
-    setprop vendor.usb.pid 0x201C
+on property:sys.usb.ffs.ready=1 && property:sys.usb.config=adb && \
+property:vendor.usb.acm_enable=0 && property:sys.usb.configfs=1
+    write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "adb"
     write /config/usb_gadget/g1/idProduct ${vendor.usb.pid}
-#    write /config/usb_gadget/g1/UDC ${vendor.usb.controller}
+    symlink /config/usb_gadget/g1/functions/ffs.adb /config/usb_gadget/g1/configs/b.1/f1
+    write /config/usb_gadget/g1/UDC ${vendor.usb.controller}
+    setprop sys.usb.state ${sys.usb.config}
 
 ### main function : mtp ###
-on property:sys.usb.config=mtp && property:sys.usb.configfs=1
+on property:sys.usb.config=mtp && property:vendor.usb.acm_cnt=0 && \
+property:sys.usb.configfs=1
     setprop vendor.usb.pid 0x2008
+on property:sys.usb.config=mtp && property:vendor.usb.acm_cnt=1 && \
+property:sys.usb.configfs=1
+    setprop vendor.usb.pid 0x2012
+    setprop vendor.usb.acm_port1 ""
+on property:sys.usb.config=mtp && property:vendor.usb.acm_cnt=2 && \
+property:sys.usb.configfs=1
+    setprop vendor.usb.pid 0x202A
+
+on property:sys.usb.config=mtp && property:vendor.usb.acm_enable=1 && \
+property:sys.usb.configfs=1
+    write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "mtp_acm"
     write /config/usb_gadget/g1/idProduct ${vendor.usb.pid}
-    write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "mtp"
-    symlink /config/usb_gadget/g1/functions/mtp.gs0 /config/usb_gadget/g1/configs/b.1/f1
     write /config/usb_gadget/g1/os_desc/use 1
-#    write /config/usb_gadget/g1/UDC ${sys.usb.controller}
+    write /sys/devices/platform/mt_usb/saving 1
+    symlink /config/usb_gadget/g1/functions/mtp.gs0 /config/usb_gadget/g1/configs/b.1/f1
+    symlink /config/usb_gadget/g1/functions/acm.gs${vendor.usb.acm_port0} /config/usb_gadget/g1/configs/b.1/f2
+    symlink /config/usb_gadget/g1/functions/acm.gs${vendor.usb.acm_port1} /config/usb_gadget/g1/configs/b.1/f3
     write /config/usb_gadget/g1/UDC ${vendor.usb.controller}
-    setprop sys.usb.ffs.mtp.ready 1
     setprop sys.usb.state ${sys.usb.config}
 
-### main function : mtp,adb ###
-on property:sys.usb.config=mtp,adb
-    stop fastbootd
-    start adbd
+on property:sys.usb.config=mtp && property:vendor.usb.acm_enable=0 && \
+property:sys.usb.configfs=1
+    write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "mtp"
+    write /config/usb_gadget/g1/idProduct ${vendor.usb.pid}
+    write /config/usb_gadget/g1/os_desc/use 1
+    symlink /config/usb_gadget/g1/functions/mtp.gs0 /config/usb_gadget/g1/configs/b.1/f1
+    write /config/usb_gadget/g1/UDC ${vendor.usb.controller}
+    setprop sys.usb.state ${sys.usb.config}
 
-on property:sys.usb.ffs.ready=1 && property:sys.usb.config=mtp,adb && property:sys.usb.configfs=1
+### start adbd at init.usb.configfs.rc ###
+on property:sys.usb.config=mtp,adb && property:vendor.usb.acm_cnt=0 && \
+property:sys.usb.configfs=1
     setprop vendor.usb.pid 0x201D
+on property:sys.usb.config=mtp,adb && property:vendor.usb.acm_cnt=1 && \
+property:sys.usb.configfs=1
+    setprop vendor.usb.pid 0x200A
+    setprop vendor.usb.acm_port1 ""
+on property:sys.usb.config=mtp,adb && property:vendor.usb.acm_cnt=2 && \
+property:sys.usb.configfs=1
+    setprop vendor.usb.pid 0x2026
+
+on property:sys.usb.ffs.ready=1 && property:sys.usb.config=mtp,adb && \
+property:vendor.usb.acm_enable=1 && property:sys.usb.configfs=1
+    write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "mtp_adb_acm"
     write /config/usb_gadget/g1/idProduct ${vendor.usb.pid}
-    write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "mtp_adb"
+    write /config/usb_gadget/g1/os_desc/use 1
+    write /sys/devices/platform/mt_usb/saving 1
     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
+    symlink /config/usb_gadget/g1/functions/acm.gs${vendor.usb.acm_port0} /config/usb_gadget/g1/configs/b.1/f3
+    symlink /config/usb_gadget/g1/functions/acm.gs${vendor.usb.acm_port1} /config/usb_gadget/g1/configs/b.1/f4
+    write /config/usb_gadget/g1/UDC ${vendor.usb.controller}
+    setprop sys.usb.state ${sys.usb.config}
+
+on property:sys.usb.ffs.ready=1 && property:sys.usb.config=mtp,adb && \
+property:vendor.usb.acm_enable=0 && property:sys.usb.configfs=1
+    write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "mtp_adb"
+    write /config/usb_gadget/g1/idProduct ${vendor.usb.pid}
     write /config/usb_gadget/g1/os_desc/use 1
-#    write /config/usb_gadget/g1/UDC ${sys.usb.controller}
+    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 ${vendor.usb.controller}
-    setprop sys.usb.ffs.mtp.ready 1
     setprop sys.usb.state ${sys.usb.config}
-    
-### main function : mtp,fastboot ###
-on property:sys.usb.config=mtp,fastboot
-    stop adbd
-    start fastbootd
 
-on property:sys.usb.ffs.ready=1 && property:sys.usb.config=mtp,fastboot && property:sys.usb.configfs=1
-    setprop vendor.usb.pid 0xFF18
+### main function : ptp ###
+on property:sys.usb.config=ptp && property:vendor.usb.acm_cnt=0 && \
+property:sys.usb.configfs=1
+    setprop vendor.usb.pid 0x200B
+on property:sys.usb.config=ptp && property:vendor.usb.acm_cnt=1 && \
+property:sys.usb.configfs=1
+    setprop vendor.usb.pid 0x2013
+    setprop vendor.usb.acm_port1 ""
+on property:sys.usb.config=ptp && property:vendor.usb.acm_cnt=2 && \
+property:sys.usb.configfs=1
+    setprop vendor.usb.pid 0x202B
+
+on property:sys.usb.config=ptp && property:vendor.usb.acm_enable=1 && \
+property:sys.usb.configfs=1
+    write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "ptp_acm"
     write /config/usb_gadget/g1/idProduct ${vendor.usb.pid}
-    write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "mtp_fastboot"
+    write /sys/devices/platform/mt_usb/saving 1
+    symlink /config/usb_gadget/g1/functions/ptp.gs1 /config/usb_gadget/g1/configs/b.1/f1
+    symlink /config/usb_gadget/g1/functions/acm.gs${vendor.usb.acm_port0} /config/usb_gadget/g1/configs/b.1/f2
+    symlink /config/usb_gadget/g1/functions/acm.gs${vendor.usb.acm_port1} /config/usb_gadget/g1/configs/b.1/f3
+    write /config/usb_gadget/g1/UDC ${vendor.usb.controller}
+    setprop sys.usb.state ${sys.usb.config}
+
+on property:sys.usb.config=ptp && property:vendor.usb.acm_enable=0 && \
+property:sys.usb.configfs=1
+    write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "ptp"
+    write /config/usb_gadget/g1/idProduct ${vendor.usb.pid}
+    symlink /config/usb_gadget/g1/functions/ptp.gs1 /config/usb_gadget/g1/configs/b.1/f1
+    write /config/usb_gadget/g1/UDC ${vendor.usb.controller}
+    setprop sys.usb.state ${sys.usb.config}
+
+### start adbd at init.usb.configfs.rc ###
+on property:sys.usb.config=ptp,adb && property:vendor.usb.acm_cnt=0 && \
+property:sys.usb.configfs=1
+    setprop vendor.usb.pid 0x200C
+on property:sys.usb.config=ptp,adb && property:vendor.usb.acm_cnt=1 && \
+property:sys.usb.configfs=1
+    setprop vendor.usb.pid 0x200D
+    setprop vendor.usb.acm_port1 ""
+on property:sys.usb.config=ptp,adb && property:vendor.usb.acm_cnt=2 && \
+property:sys.usb.configfs=1
+    setprop vendor.usb.pid 0x2027
+
+on property:sys.usb.ffs.ready=1 && property:sys.usb.config=ptp,adb && \
+property:vendor.usb.acm_enable=1 && property:sys.usb.configfs=1
+    write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "ptp_adb_acm"
+    write /config/usb_gadget/g1/idProduct ${vendor.usb.pid}
+    write /sys/devices/platform/mt_usb/saving 1
+    symlink /config/usb_gadget/g1/functions/ptp.gs1 /config/usb_gadget/g1/configs/b.1/f1
+    symlink /config/usb_gadget/g1/functions/ffs.adb /config/usb_gadget/g1/configs/b.1/f2
+    symlink /config/usb_gadget/g1/functions/acm.gs${vendor.usb.acm_port0} /config/usb_gadget/g1/configs/b.1/f3
+    symlink /config/usb_gadget/g1/functions/acm.gs${vendor.usb.acm_port1} /config/usb_gadget/g1/configs/b.1/f4
+    write /config/usb_gadget/g1/UDC ${vendor.usb.controller}
+    setprop sys.usb.state ${sys.usb.config}
+
+on property:sys.usb.ffs.ready=1 && property:sys.usb.config=ptp,adb && \
+property:vendor.usb.acm_enable=0 && property:sys.usb.configfs=1
+    write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "ptp_adb"
+    write /config/usb_gadget/g1/idProduct ${vendor.usb.pid}
+    symlink /config/usb_gadget/g1/functions/ptp.gs1 /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 ${vendor.usb.controller}
+    setprop sys.usb.state ${sys.usb.config}
+
+### main function : rndis ###
+on property:sys.usb.config=rndis && property:vendor.usb.acm_cnt=0 && \
+property:sys.usb.configfs=1
+    setprop vendor.usb.pid 0x2004
+on property:sys.usb.config=rndis && property:vendor.usb.acm_cnt=1 && \
+property:sys.usb.configfs=1
+    setprop vendor.usb.pid 0x2011
+    setprop vendor.usb.acm_port1 ""
+on property:sys.usb.config=rndis && property:vendor.usb.acm_cnt=2 && \
+property:sys.usb.configfs=1
+    setprop vendor.usb.pid 0x202C
+
+on property:sys.usb.config=rndis && property:vendor.usb.acm_enable=1 && \
+property:sys.usb.configfs=1
+    mkdir /config/usb_gadget/g1/functions/rndis.gs4
+    write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "ums_acm"
+    write /config/usb_gadget/g1/idProduct ${vendor.usb.pid}
+    write /sys/devices/platform/mt_usb/saving 1
+    symlink /config/usb_gadget/g1/functions/rndis.gs4 /config/usb_gadget/g1/configs/b.1/f1
+    symlink /config/usb_gadget/g1/functions/acm.gs${vendor.usb.acm_port0} /config/usb_gadget/g1/configs/b.1/f2
+    symlink /config/usb_gadget/g1/functions/acm.gs${vendor.usb.acm_port1} /config/usb_gadget/g1/configs/b.1/f3
+    write /config/usb_gadget/g1/UDC ${vendor.usb.controller}
+    setprop sys.usb.state ${sys.usb.config}
+
+on property:sys.usb.config=rndis && property:vendor.usb.acm_enable=0 && \
+property:sys.usb.configfs=1
+    mkdir /config/usb_gadget/g1/functions/rndis.gs4
+    write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "rndis"
+    write /config/usb_gadget/g1/idProduct ${vendor.usb.pid}
+    symlink /config/usb_gadget/g1/functions/rndis.gs4 /config/usb_gadget/g1/configs/b.1/f1
+    write /config/usb_gadget/g1/UDC ${vendor.usb.controller}
+    setprop sys.usb.state ${sys.usb.config}
+
+on property:sys.usb.config=rndis,adb && property:vendor.usb.acm_cnt=0 && \
+property:sys.usb.configfs=1
+    setprop vendor.usb.pid 0x2005
+on property:sys.usb.config=rndis,adb && property:vendor.usb.acm_cnt=1 && \
+property:sys.usb.configfs=1
+    setprop vendor.usb.pid 0x2010
+    setprop vendor.usb.acm_port1 ""
+on property:sys.usb.config=rndis,adb && property:vendor.usb.acm_cnt=2 && \
+property:sys.usb.configfs=1
+    setprop vendor.usb.pid 0x2028
+
+on property:sys.usb.ffs.ready=1 && property:sys.usb.config=rndis,adb && \
+property:vendor.usb.acm_enable=1 && property:sys.usb.configfs=1
+    mkdir /config/usb_gadget/g1/functions/rndis.gs4
+    write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "rndis_adb_acm"
+    write /config/usb_gadget/g1/idProduct ${vendor.usb.pid}
+    write /sys/devices/platform/mt_usb/saving 1
+    symlink /config/usb_gadget/g1/functions/rndis.gs4 /config/usb_gadget/g1/configs/b.1/f1
+    symlink /config/usb_gadget/g1/functions/ffs.adb /config/usb_gadget/g1/configs/b.1/f2
+    symlink /config/usb_gadget/g1/functions/acm.gs${vendor.usb.acm_port0} /config/usb_gadget/g1/configs/b.1/f3
+    symlink /config/usb_gadget/g1/functions/acm.gs${vendor.usb.acm_port1} /config/usb_gadget/g1/configs/b.1/f4
+    write /config/usb_gadget/g1/UDC ${vendor.usb.controller}
+    setprop sys.usb.state ${sys.usb.config}
+
+on property:sys.usb.ffs.ready=1 && property:sys.usb.config=rndis,adb && \
+property:vendor.usb.acm_enable=0 && property:sys.usb.configfs=1
+    mkdir /config/usb_gadget/g1/functions/rndis.gs4
+    write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "rndis_adb"
+    write /config/usb_gadget/g1/idProduct ${vendor.usb.pid}
+    symlink /config/usb_gadget/g1/functions/rndis.gs4 /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 ${vendor.usb.controller}
+    setprop sys.usb.state ${sys.usb.config}
+
+### main function : midi ###
+on property:sys.usb.config=midi && property:sys.usb.configfs=1
+    write /config/usb_gadget/g1/idProduct 0x2046
+
+on property:sys.usb.config=midi,adb && property:sys.usb.configfs=1
+    write /config/usb_gadget/g1/idProduct 0x2048
+
+### main function : accessory ###
+on property:sys.usb.config=accessory && property:sys.usb.configfs=1
+    write /config/usb_gadget/g1/idVendor 0x18d1
+    write /config/usb_gadget/g1/idProduct 0x2d00
+
+on property:sys.usb.config=accessory,adb && property:sys.usb.configfs=1
+    write /config/usb_gadget/g1/idVendor 0x18d1
+    write /config/usb_gadget/g1/idProduct 0x2d01
+
+### main function : audio_source ###
+on property:sys.usb.config=audio_source && property:sys.usb.configfs=1
+    write /config/usb_gadget/g1/idVendor 0x18d1
+    write /config/usb_gadget/g1/idProduct 0x2d02
+
+on property:sys.usb.config=audio_source,adb && property:sys.usb.configfs=1
+    write /config/usb_gadget/g1/idVendor 0x18d1
+    write /config/usb_gadget/g1/idProduct 0x2d03
+
+### main function : accessory,audio_source ###
+on property:sys.usb.config=accessory,audio_source && property:sys.usb.configfs=1
+    write /config/usb_gadget/g1/idVendor 0x18d1
+    write /config/usb_gadget/g1/idProduct 0x2d04
+
+on property:sys.usb.config=accessory,audio_source,adb && property:sys.usb.configfs=1
+    write /config/usb_gadget/g1/idVendor 0x18d1
+    write /config/usb_gadget/g1/idProduct 0x2d05
+
+on property:sys.usb.config=via_bypass && property:vendor.usb.acm_cnt=0 && \
+property:sys.usb.configfs=1
+    setprop vendor.usb.pid 0x2031
+on property:sys.usb.config=via_bypass && property:vendor.usb.acm_cnt=1 && \
+property:sys.usb.configfs=1
+    setprop vendor.usb.pid 0x2033
+    setprop vendor.usb.acm_port1 ""
+
+##via_modem,via_ets,via_atc,acm
+on property:sys.usb.config=via_bypass && property:vendor.usb.acm_enable=1 && \
+property:sys.usb.configfs=1
+    write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "via_bypass"
+    write /config/usb_gadget/g1/idProduct ${vendor.usb.pid}
+    write /sys/devices/platform/mt_usb/saving 1
+    symlink /config/usb_gadget/g1/functions/via_modem.gs0 /config/usb_gadget/g1/configs/b.1/f1
+    symlink /config/usb_gadget/g1/functions/via_ets.gs0 /config/usb_gadget/g1/configs/b.1/f2
+    symlink /config/usb_gadget/g1/functions/via_atc.gs0 /config/usb_gadget/g1/configs/b.1/f3
+    symlink /config/usb_gadget/g1/functions/acm.gs${vendor.usb.acm_port0} /config/usb_gadget/g1/configs/b.1/f4
+    write /config/usb_gadget/g1/UDC ${vendor.usb.controller}
+    setprop sys.usb.state ${sys.usb.config}
+
+##via_modem,via_ets,via_atc,adb
+on property:sys.usb.config=via_bypass && property:vendor.usb.acm_enable=0 && \
+property:sys.usb.configfs=1
+    write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "via_bypass"
+    write /config/usb_gadget/g1/idProduct ${vendor.usb.pid}
+    write /sys/devices/platform/mt_usb/saving 1
+    symlink /config/usb_gadget/g1/functions/via_modem.gs0 /config/usb_gadget/g1/configs/b.1/f1
+    symlink /config/usb_gadget/g1/functions/via_ets.gs0 /config/usb_gadget/g1/configs/b.1/f2
+    symlink /config/usb_gadget/g1/functions/via_atc.gs0 /config/usb_gadget/g1/configs/b.1/f3
+    write /config/usb_gadget/g1/UDC ${vendor.usb.controller}
+    setprop sys.usb.state ${sys.usb.config}
+
+on property:sys.usb.config=via_bypass,adb && property:vendor.usb.acm_cnt=0 && \
+property:sys.usb.configfs=1
+    setprop vendor.usb.pid 0x2032
+on property:sys.usb.config=via_bypass,adb && property:vendor.usb.acm_cnt=1 && \
+property:sys.usb.configfs=1
+    setprop vendor.usb.pid 0x2034
+    setprop vendor.usb.acm_port1 ""
+on property:sys.usb.config=via_bypass,adb && property:vendor.usb.acm_cnt=2 && \
+property:sys.usb.configfs=1
+    setprop vendor.usb.pid 0x2050
+
+on property:sys.usb.config=via_bypass,adb && property:sys.usb.configfs=1
+    start adbd
+
+##via_modem,via_ets,via_atc,adb,acm
+on property:sys.usb.ffs.ready=1 && property:sys.usb.config=via_bypass,adb && \
+property:vendor.usb.acm_enable=1 && property:vendor.usb.acm_cnt=1 && \
+property:sys.usb.configfs=1
+    write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "rndis_adb_acm"
+    write /config/usb_gadget/g1/idProduct ${vendor.usb.pid}
+    write /sys/devices/platform/mt_usb/saving 1
+    symlink /config/usb_gadget/g1/functions/via_modem.gs0 /config/usb_gadget/g1/configs/b.1/f1
+    symlink /config/usb_gadget/g1/functions/via_ets.gs0 /config/usb_gadget/g1/configs/b.1/f2
+    symlink /config/usb_gadget/g1/functions/via_atc.gs0 /config/usb_gadget/g1/configs/b.1/f3
+    symlink /config/usb_gadget/g1/functions/ffs.adb /config/usb_gadget/g1/configs/b.1/f4
+    symlink /config/usb_gadget/g1/functions/acm.gs${vendor.usb.acm_port0} /config/usb_gadget/g1/configs/b.1/f5
+    write /config/usb_gadget/g1/UDC ${vendor.usb.controller}
+    setprop sys.usb.state ${sys.usb.config}
+
+##via_modem,acm,adb
+on property:sys.usb.ffs.ready=1 && property:sys.usb.config=via_bypass,adb && \
+property:vendor.usb.acm_enable=1 && property:vendor.usb.acm_cnt=2 && \
+property:sys.usb.configfs=1
+    write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "rndis_adb_acm2"
+    write /config/usb_gadget/g1/idProduct ${vendor.usb.pid}
+    write /sys/devices/platform/mt_usb/saving 1
+    symlink /config/usb_gadget/g1/functions/via_modem.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
+    symlink /config/usb_gadget/g1/functions/acm.gs${vendor.usb.acm_port0} /config/usb_gadget/g1/configs/b.1/f3
+    symlink /config/usb_gadget/g1/functions/acm.gs${vendor.usb.acm_port1} /config/usb_gadget/g1/configs/b.1/f4
+    write /config/usb_gadget/g1/UDC ${vendor.usb.controller}
+    setprop sys.usb.state ${sys.usb.config}
+
+##via_modem,via_ets,via_atc,adb
+on property:sys.usb.ffs.ready=1 && property:sys.usb.config=via_bypass,adb && \
+property:vendor.usb.acm_enable=0 && property:sys.usb.configfs=1
+    write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "rndis_adb"
+    write /config/usb_gadget/g1/idProduct ${vendor.usb.pid}
+    write /sys/devices/platform/mt_usb/saving 1
+    symlink /config/usb_gadget/g1/functions/via_modem.gs0 /config/usb_gadget/g1/configs/b.1/f1
+    symlink /config/usb_gadget/g1/functions/via_ets.gs0 /config/usb_gadget/g1/configs/b.1/f2
+    symlink /config/usb_gadget/g1/functions/via_atc.gs0 /config/usb_gadget/g1/configs/b.1/f3
+    symlink /config/usb_gadget/g1/functions/ffs.adb /config/usb_gadget/g1/configs/b.1/f4
+    write /config/usb_gadget/g1/UDC ${vendor.usb.controller}
+    setprop sys.usb.state ${sys.usb.config}
+
+### main function : mass_storage ###
+on property:sys.usb.config=mass_storage && property:vendor.usb.acm_cnt=0 && \
+property:sys.usb.configfs=1
+    setprop vendor.usb.pid 0x2002
+on property:sys.usb.config=mass_storage && property:vendor.usb.acm_cnt=1 && \
+property:sys.usb.configfs=1
+    setprop vendor.usb.pid 0x200F
+    setprop vendor.usb.acm_port1 ""
+on property:sys.usb.config=mass_storage && property:vendor.usb.acm_cnt=2 && \
+property:sys.usb.configfs=1
+    setprop vendor.usb.pid 0x202D
+
+on property:sys.usb.config=mass_storage && property:vendor.usb.acm_enable=1 && \
+property:sys.usb.configfs=1
+    write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "ums_acm"
+    write /config/usb_gadget/g1/idProduct ${vendor.usb.pid}
+    write /sys/devices/platform/mt_usb/saving 1
+    symlink /config/usb_gadget/g1/functions/mass_storage.usb0 /config/usb_gadget/g1/configs/b.1/f1
+    symlink /config/usb_gadget/g1/functions/acm.gs${vendor.usb.acm_port0} /config/usb_gadget/g1/configs/b.1/f2
+    symlink /config/usb_gadget/g1/functions/acm.gs${vendor.usb.acm_port1} /config/usb_gadget/g1/configs/b.1/f3
+    write /config/usb_gadget/g1/UDC ${vendor.usb.controller}
+    setprop sys.usb.state ${sys.usb.config}
+
+on property:sys.usb.config=mass_storage && property:vendor.usb.acm_enable=0 && \
+property:sys.usb.configfs=1
+    write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "ums"
+    write /config/usb_gadget/g1/idProduct ${vendor.usb.pid}
+    symlink /config/usb_gadget/g1/functions/mass_storage.usb0 /config/usb_gadget/g1/configs/b.1/f1
+    write /config/usb_gadget/g1/UDC ${vendor.usb.controller}
+    setprop sys.usb.state ${sys.usb.config}
+
+on property:sys.usb.config=mass_storage,adb && property:vendor.usb.acm_cnt=0 && \
+property:sys.usb.configfs=1
+    setprop vendor.usb.pid 0x2003
+on property:sys.usb.config=mass_storage,adb && property:vendor.usb.acm_cnt=1 && \
+property:sys.usb.configfs=1
+    setprop vendor.usb.pid 0x2006
+    setprop vendor.usb.acm_port1 ""
+on property:sys.usb.config=mass_storage,adb && property:vendor.usb.acm_cnt=2 && \
+property:sys.usb.configfs=1
+    setprop vendor.usb.pid 0x2029
+
+on property:sys.usb.config=mass_storage,adb && property:sys.usb.configfs=1
+    start adbd
+
+on property:sys.usb.ffs.ready=1 && property:sys.usb.config=mass_storage,adb && \
+property:vendor.usb.acm_enable=1 && property:sys.usb.configfs=1
+    write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "ums_adb_acm"
+    write /config/usb_gadget/g1/idProduct ${vendor.usb.pid}
+    write /sys/devices/platform/mt_usb/saving 1
+    symlink /config/usb_gadget/g1/functions/mass_storage.usb0 /config/usb_gadget/g1/configs/b.1/f1
+    symlink /config/usb_gadget/g1/functions/ffs.adb /config/usb_gadget/g1/configs/b.1/f2
+    symlink /config/usb_gadget/g1/functions/acm.gs${vendor.usb.acm_port0} /config/usb_gadget/g1/configs/b.1/f3
+    symlink /config/usb_gadget/g1/functions/acm.gs${vendor.usb.acm_port1} /config/usb_gadget/g1/configs/b.1/f4
+    write /config/usb_gadget/g1/UDC ${vendor.usb.controller}
+    setprop sys.usb.state ${sys.usb.config}
+
+on property:sys.usb.ffs.ready=1 && property:sys.usb.config=mass_storage,adb && \
+property:vendor.usb.acm_enable=0 && property:sys.usb.configfs=1
+    write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "ums_adb"
+    write /config/usb_gadget/g1/idProduct ${vendor.usb.pid}
+    symlink /config/usb_gadget/g1/functions/mass_storage.usb0 /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 ${vendor.usb.controller}
+    setprop sys.usb.state ${sys.usb.config}
+
+### main function : bicr ###
+on property:sys.usb.config=bicr && property:vendor.usb.acm_cnt=0 && \
+property:sys.usb.configfs=1
+    setprop vendor.usb.pid 0x2002
+on property:sys.usb.config=bicr && property:vendor.usb.acm_cnt=1 && \
+property:sys.usb.configfs=1
+    setprop vendor.usb.pid 0x200F
+    setprop vendor.usb.acm_port1 ""
+on property:sys.usb.config=bicr && property:vendor.usb.acm_cnt=2 && \
+property:sys.usb.configfs=1
+    setprop vendor.usb.pid 0x202D
+
+on property:sys.usb.config=bicr && property:vendor.usb.acm_enable=1 && \
+property:sys.usb.configfs=1
+    write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "ums_acm"
+    write /config/usb_gadget/g1/idProduct ${vendor.usb.pid}
+    write /sys/devices/platform/mt_usb/saving 1
+    write /config/usb_gadget/g1/functions/mass_storage.usb0/lun.0/cdrom 1
+    write /config/usb_gadget/g1/functions/mass_storage.usb0/lun.0/file "/dev/block/loop0"
+    symlink /config/usb_gadget/g1/functions/mass_storage.usb0 /config/usb_gadget/g1/configs/b.1/f1
+    symlink /config/usb_gadget/g1/functions/acm.gs${vendor.usb.acm_port0} /config/usb_gadget/g1/configs/b.1/f2
+    symlink /config/usb_gadget/g1/functions/acm.gs${vendor.usb.acm_port1} /config/usb_gadget/g1/configs/b.1/f3
+    write /config/usb_gadget/g1/UDC ${vendor.usb.controller}
+    setprop sys.usb.state ${sys.usb.config}
+
+on property:sys.usb.config=bicr && property:vendor.usb.acm_enable=0 && \
+property:sys.usb.configfs=1
+    write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "ums"
+    write /config/usb_gadget/g1/idProduct ${vendor.usb.pid}
+    write /config/usb_gadget/g1/functions/mass_storage.usb0/lun.0/cdrom 1
+    write /config/usb_gadget/g1/functions/mass_storage.usb0/lun.0/file "/dev/block/loop0"
+    symlink /config/usb_gadget/g1/functions/mass_storage.usb0 /config/usb_gadget/g1/configs/b.1/f1
+    write /config/usb_gadget/g1/UDC ${vendor.usb.controller}
+    setprop sys.usb.state ${sys.usb.config}
+
+on property:sys.usb.config=bicr,adb && property:vendor.usb.acm_cnt=0 && \
+property:sys.usb.configfs=1
+    setprop vendor.usb.pid 0x2003
+on property:sys.usb.config=bicr,adb && property:vendor.usb.acm_cnt=1 && \
+property:sys.usb.configfs=1
+    setprop vendor.usb.pid 0x2006
+    setprop vendor.usb.acm_port1 ""
+on property:sys.usb.config=bicr,adb && property:vendor.usb.acm_cnt=2 && \
+property:sys.usb.configfs=1
+    setprop vendor.usb.pid 0x2029
+
+on property:sys.usb.config=bicr,adb && property:sys.usb.configfs=1
+    start adbd
+
+on property:sys.usb.ffs.ready=1 && property:sys.usb.config=bicr,adb && \
+property:vendor.usb.acm_enable=1 && property:sys.usb.configfs=1
+    write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "ums_adb_acm"
+    write /config/usb_gadget/g1/idProduct ${vendor.usb.pid}
+    write /sys/devices/platform/mt_usb/saving 1
+    write /config/usb_gadget/g1/functions/mass_storage.usb0/lun.0/cdrom 1
+    write /config/usb_gadget/g1/functions/mass_storage.usb0/lun.0/file "/dev/block/loop0"
+    symlink /config/usb_gadget/g1/functions/mass_storage.usb0 /config/usb_gadget/g1/configs/b.1/f1
+    symlink /config/usb_gadget/g1/functions/ffs.adb /config/usb_gadget/g1/configs/b.1/f2
+    symlink /config/usb_gadget/g1/functions/acm.gs${vendor.usb.acm_port0} /config/usb_gadget/g1/configs/b.1/f3
+    symlink /config/usb_gadget/g1/functions/acm.gs${vendor.usb.acm_port1} /config/usb_gadget/g1/configs/b.1/f4
+    write /config/usb_gadget/g1/UDC ${vendor.usb.controller}
+    setprop sys.usb.state ${sys.usb.config}
+
+on property:sys.usb.ffs.ready=1 && property:sys.usb.config=bicr,adb && \
+property:vendor.usb.acm_enable=0 && property:sys.usb.configfs=1
+    write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "ums_adb"
+    write /config/usb_gadget/g1/idProduct ${vendor.usb.pid}
+    write /config/usb_gadget/g1/functions/mass_storage.usb0/lun.0/cdrom 1
+    write /config/usb_gadget/g1/functions/mass_storage.usb0/lun.0/file "/dev/block/loop0"
+    symlink /config/usb_gadget/g1/functions/mass_storage.usb0 /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 ${vendor.usb.controller}
+    setprop sys.usb.state ${sys.usb.config}
+
+### ACM APPEND SERIES ###
+on property:persist.vendor.radio.port_index=0 && property:sys.boot_completed=1
+    setprop vendor.usb.acm_idx ""
+    setprop vendor.usb.acm_cnt 0
+    setprop vendor.usb.acm_enable 0
+    setprop sys.usb.config none
+    setprop sys.usb.config ${sys.usb.state}
+
+on property:persist.vendor.radio.port_index=1 && property:sys.boot_completed=1
+    setprop sys.usb.config acm_gs0
+on property:sys.usb.config=mass_storage,adb,acm
+    setprop sys.usb.config acm_gs0
+on property:sys.usb.config=acm_gs0
+    setprop vendor.usb.acm_port0 0
+    setprop vendor.usb.acm_port1 ""
+    setprop vendor.usb.acm_cnt 1
+    setprop vendor.usb.acm_enable 1
+    setprop sys.usb.config none
+    setprop sys.usb.config ${sys.usb.state}
+    setprop vendor.usb.acm_idx "1"
+
+on property:persist.vendor.radio.port_index=2 && property:sys.boot_completed=1
+    setprop sys.usb.config acm_gs1
+on property:sys.usb.config=acm_gs1
+    setprop vendor.usb.acm_port0 1
+    setprop vendor.usb.acm_port1 ""
+    setprop vendor.usb.acm_cnt 1
+    setprop vendor.usb.acm_enable 1
+    setprop sys.usb.config none
+    setprop sys.usb.config ${sys.usb.state}
+    setprop vendor.usb.acm_idx "2"
+
+on property:persist.vendor.radio.port_index=3 && property:sys.boot_completed=1
+    setprop sys.usb.config acm_gs2
+on property:sys.usb.config=acm_third
+    setprop sys.usb.config acm_gs2
+on property:sys.usb.config=acm_gs2
+    setprop vendor.usb.acm_port0 2
+    setprop vendor.usb.acm_port1 ""
+    setprop vendor.usb.acm_cnt 1
+    setprop vendor.usb.acm_enable 1
+    setprop sys.usb.config none
+    setprop sys.usb.config ${sys.usb.state}
+    setprop vendor.usb.acm_idx "3"
+
+on property:persist.vendor.radio.port_index=4 && property:sys.boot_completed=1
+    setprop sys.usb.config acm_gs3
+on property:sys.usb.config=gs3
+    setprop sys.usb.config acm_gs3
+on property:sys.usb.config=mtp,gs3
+    setprop sys.usb.config acm_gs3
+on property:sys.usb.config=acm_gs3
+    setprop vendor.usb.acm_port0 3
+    setprop vendor.usb.acm_port1 ""
+    setprop vendor.usb.acm_cnt 1
+    setprop vendor.usb.acm_enable 1
+    setprop sys.usb.config none
+    setprop sys.usb.config ${sys.usb.state}
+    setprop vendor.usb.acm_idx "4"
+
+on property:sys.usb.config=mtp,gs0gs1
+    setprop sys.usb.config acm_gs0gs1
+on property:sys.usb.config=gs0gs1
+    setprop sys.usb.config acm_gs0gs1
+on property:sys.usb.config=rndis,gs0gs1
+    setprop sys.usb.config acm_gs0gs1
+on property:sys.usb.config=rndis,adb,gs0gs1
+    setprop sys.usb.config acm_gs0gs1
+on property:sys.usb.config=acm_gs0gs1
+    setprop vendor.usb.acm_port0 0
+    setprop vendor.usb.acm_port1 1
+    setprop vendor.usb.acm_cnt 2
+    setprop vendor.usb.acm_enable 1
+    setprop sys.usb.config none
+    setprop sys.usb.config ${sys.usb.state}
+    setprop vendor.usb.acm_idx "1,2"
+
+on property:sys.usb.config=gs3,dual_acm
+    setprop sys.usb.config acm_gs0gs3
+on property:sys.usb.config=mtp,gs3,dual_acm
+    setprop sys.usb.config acm_gs0gs3
+on property:sys.usb.config=mtp,gs0gs3
+    setprop sys.usb.config acm_gs0gs3
+on property:sys.usb.config=gs0gs3
+    setprop sys.usb.config acm_gs0gs3
+on property:sys.usb.config=rndis,gs0gs3
+    setprop sys.usb.config acm_gs0gs3
+on property:sys.usb.config=rndis,adb,gs0gs3
+    setprop sys.usb.config acm_gs0gs3
+on property:sys.usb.config=acm_gs0gs3
+    setprop vendor.usb.acm_port0 0
+    setprop vendor.usb.acm_port1 3
+    setprop vendor.usb.acm_cnt 2
+    setprop vendor.usb.acm_enable 1
+    setprop sys.usb.config none
+    setprop sys.usb.config ${sys.usb.state}
+    setprop vendor.usb.acm_idx "1,4"
+
+on property:sys.usb.config=gs1gs3
+    setprop sys.usb.config acm_gs1gs3
+on property:sys.usb.config=mtp,gs1gs3
+    setprop sys.usb.config acm_gs1gs3
+on property:sys.usb.config=via_bypass,gs1gs3
+    setprop sys.usb.config acm_gs1gs3
+on property:sys.usb.config=rndis,gs1gs3
+    setprop sys.usb.config acm_gs1gs3
+on property:sys.usb.config=acm_gs1gs3
+    setprop vendor.usb.acm_port0 1
+    setprop vendor.usb.acm_port1 3
+    setprop vendor.usb.acm_cnt 2
+    setprop vendor.usb.acm_enable 1
+    setprop sys.usb.config none
+    setprop sys.usb.config ${sys.usb.state}
+    setprop vendor.usb.acm_idx "2,4"
+
+# For ATM (Android Test Mode)
+on property:vendor.usb.clear=1 && property:sys.usb.configfs=1
+    write /config/usb_gadget/g1/UDC "none"
+    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
+    write /sys/devices/platform/mt_usb/saving 0
+    setprop vendor.usb.clear 2
+
+# has permission issue when read from ${sys.usb.ffs.ready}
+on property:sys.usb.ffs.ready=0
+   setprop vendor.usb.ffs.ready 0
+on property:sys.usb.ffs.ready=1
+   setprop vendor.usb.ffs.ready 1
+
+on property:sys.usb.config=atm_gs0 && property:sys.usb.configfs=1
+    stop adbd
+    setprop vendor.usb.ffs.ready 0
+    setprop vendor.usb.clear 1
+
+on property:vendor.usb.ffs.ready=0 && property:sys.usb.config=atm_gs0 && \
+property:vendor.usb.clear=2 && property:sys.usb.configfs=1
+    start adbd
+
+on property:vendor.usb.ffs.ready=1 && property:sys.usb.config=atm_gs0 && \
+property:vendor.usb.clear=2 && property:sys.usb.configfs=1
+    setprop vendor.usb.acm_port0 0
+    setprop vendor.usb.acm_port1 ""
+    setprop vendor.usb.acm_cnt 1
+    setprop vendor.usb.acm_enable 1
+    write /sys/class/udc/musb-hdrc/device/saving 1
+    write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "atm_gs0"
+    write /config/usb_gadget/g1/idProduct 0x200A
     symlink /config/usb_gadget/g1/functions/mtp.gs0 /config/usb_gadget/g1/configs/b.1/f1
-    symlink /config/usb_gadget/g1/functions/ffs.fastboot /config/usb_gadget/g1/configs/b.1/f2
+    symlink /config/usb_gadget/g1/functions/ffs.adb /config/usb_gadget/g1/configs/b.1/f2
+    symlink /config/usb_gadget/g1/functions/acm.gs0 /config/usb_gadget/g1/configs/b.1/f3
+    write /config/usb_gadget/g1/UDC ${vendor.usb.controller}
+    #setprop sys.usb.state ${sys.usb.config}
+    #setprop vendor.usb.pid 0x200A
+    setprop vendor.usb.clear 0
+    setprop vendor.usb.acm_idx "1"
+
+on property:sys.usb.config=atm_gs0gs3 && property:sys.usb.configfs=1
+    stop adbd
+    setprop vendor.usb.ffs.ready 0
+    setprop vendor.usb.clear 1
+
+on property:vendor.usb.ffs.ready=0 && property:sys.usb.config=atm_gs0gs3 && \
+property:vendor.usb.clear=2 && property:sys.usb.configfs=1
+    start adbd
+
+on property:vendor.usb.ffs.ready=1 && property:sys.usb.config=atm_gs0gs3 && \
+property:vendor.usb.clear=2 && property:sys.usb.configfs=1
+    setprop vendor.usb.acm_port0 0
+    setprop vendor.usb.acm_port1 3
+    setprop vendor.usb.acm_cnt 2
+    setprop vendor.usb.acm_enable 1
+    write /sys/class/udc/musb-hdrc/device/saving 1
+    write /config/usb_gadget/g1/idProduct 0x2026
+    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
+    symlink /config/usb_gadget/g1/functions/acm.gs0 /config/usb_gadget/g1/configs/b.1/f3
+    symlink /config/usb_gadget/g1/functions/acm.gs3 /config/usb_gadget/g1/configs/b.1/f4
+    write /config/usb_gadget/g1/UDC ${vendor.usb.controller}
+    #setprop sys.usb.state ${sys.usb.config}
+    #setprop vendor.usb.pid 0x2026
+    setprop vendor.usb.clear 0
+    setprop vendor.usb.acm_idx "1,4"
+
+### CHARGING ###
+on property:sys.usb.config=cdp && property:sys.usb.configfs=1
+    write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "mtp"
+    write /config/usb_gadget/g1/idProduct 0x2008
     write /config/usb_gadget/g1/os_desc/use 1
-#    write /config/usb_gadget/g1/UDC ${sys.usb.controller}
+    symlink /config/usb_gadget/g1/functions/mtp.gs0 /config/usb_gadget/g1/configs/b.1/f1
     write /config/usb_gadget/g1/UDC ${vendor.usb.controller}
-    setprop sys.usb.ffs.mtp.ready 1
     setprop sys.usb.state ${sys.usb.config}
+    setprop vendor.usb.pid 0x2008
+
+on property:sys.usb.config=charging_yes
+    setprop vendor.usb.state ${sys.usb.state}
+    setprop vendor.usb.charging yes
+    setprop sys.usb.config none
+    setprop sys.usb.config ${vendor.usb.state}
+
+on property:sys.usb.config=charging_no
+    setprop vendor.usb.state ${sys.usb.state}
+    setprop sys.usb.config none
+    setprop sys.usb.config ${vendor.usb.state}
+    setprop vendor.usb.charging no
+
+on property:vendor.usb.charging=yes
+    write /sys/class/udc/musb-hdrc/device/cmode 2
+on property:vendor.usb.charging=no
+    write /sys/class/udc/musb-hdrc/device/cmode 1
+
+on property:vendor.usb.bicr=yes
+    write /sys/class/android_usb/android0/f_mass_storage/bicr 1
+    write /sys/class/android_usb/android0/f_mass_storage/lun/file "/dev/block/loop0"
+on property:vendor.usb.bicr=no
+    write /sys/class/android_usb/android0/f_mass_storage/bicr 0
+    write /sys/class/android_usb/android0/f_mass_storage/lun/file "off"
+
+on property:vendor.usb.port.mode=usb
+	write /sys/devices/platform/mt_usb/portmode 0
+on property:vendor.usb.port.mode=uart
+	write /sys/devices/platform/mt_usb/portmode 1
+
+on property:vendor.em.usb.set=USB_DRIVING_CAPABILITY
+	write /sys/kernel/debug/usb20_phy/USB_DRIVING_CAPABILITY ${mediatek.em.usb.value}
+on property:vendor.em.usb.set=RG_USB20_TERM_VREF_SEL
+	write /sys/kernel/debug/usb20_phy/RG_USB20_TERM_VREF_SEL ${mediatek.em.usb.value}
+on property:vendor.em.usb.set=RG_USB20_HSTX_SRCTRL
+	write /sys/kernel/debug/usb20_phy/RG_USB20_HSTX_SRCTRL ${mediatek.em.usb.value}
+on property:vendor.em.usb.set=RG_USB20_VRT_VREF_SEL
+	write /sys/kernel/debug/usb20_phy/RG_USB20_VRT_VREF_SEL ${mediatek.em.usb.value}
+on property:vendor.em.usb.set=RG_USB20_INTR_EN
+	write /sys/kernel/debug/usb20_phy/RG_USB20_INTR_EN ${mediatek.em.usb.value}
+on property:vendor.em.usb.set=RG_USB20_PHY_REV6
+	write /sys/kernel/debug/usb20_phy/RG_USB20_PHY_REV6 ${mediatek.em.usb.value}
+
+on property:vendor.em.usb.bypass.enable=0
+	write /sys/class/usb_rawbulk/gps/enable 1
+on property:vendor.em.usb.bypass.enable=1
+	write /sys/class/usb_rawbulk/pcv/enable 1
+on property:vendor.em.usb.bypass.enable=2
+	write /sys/class/usb_rawbulk/atc/enable 1
+on property:vendor.em.usb.bypass.enable=3
+	write /sys/class/usb_rawbulk/ets/enable 1
+on property:vendor.em.usb.bypass.enable=4
+	write /sys/class/usb_rawbulk/data/enable 1
+on property:vendor.em.usb.bypass.disable=0
+	write /sys/class/usb_rawbulk/gps/enable 0
+on property:vendor.em.usb.bypass.disable=1
+	write /sys/class/usb_rawbulk/pcv/enable 0
+on property:vendor.em.usb.bypass.disable=2
+	write /sys/class/usb_rawbulk/atc/enable 0
+on property:vendor.em.usb.bypass.disable=3
+	write /sys/class/usb_rawbulk/ets/enable 0
+on property:vendor.em.usb.bypass.disable=4
+	write /sys/class/usb_rawbulk/data/enable 0
+
+### vendor process start ###
+on property:vendor.usb.config=*
+    setprop sys.usb.config ${vendor.usb.config}
+### vendor process end ###
+
+### test command start ###
+on property:vendor.usb.test=*
+    setprop sys.usb.config none
+    setprop sys.usb.config ${vendor.usb.test}
+### test command end ###
+
+on property:vendor.usb.printk=*
+	write /proc/sys/kernel/printk ${vendor.usb.printk}
+
+on property:persist.vendor.usb.printk=*
+	setprop vendor.usb.printk ${persist.vendor.usb.printk}
+
+### PLATFORM VARIANT, cat $rc_file | grep write | sort | grep -vE "android0|usb20_phy" | awk '{print $2}' | uniq ###

+ 21 - 0
recovery/root/system/bin/mtk_plpath_utils

@@ -0,0 +1,21 @@
+#
+# Copyright (C) 2018 The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#       http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Tries to mount system_other as a logical partition. If that fails, then
+# mount as a physical partition.
+
+#<src>                    <mnt_point>  <type> <mnt_flags and options> <fs_mgr_flags>
+system                    /postinstall ext4   ro,nosuid,nodev,noexec  slotselect_other,logical
+/dev/block/by-name/system /postinstall ext4   ro,nosuid,nodev,noexec  slotselect_other

+ 0 - 5
recovery/root/system/etc/recovery.fstab

@@ -1,5 +0,0 @@
-/dev/block/platform/bootdevice/by-name/system /system ext4 ro wait,slotselect,avb=vbmeta,first_stage_mount,wipeingui,logical,backup=1
-
-/dev/block/platform/bootdevice/by-name/vendor /vendor ext4 ro wait,slotselect,avb,first_stage_mount,wipeingui,backup=1,flashimg=1
-
-/dev/block/platform/bootdevice/by-name/vbmeta /vbmeta emmc defaults defaults

+ 1 - 1
recovery/root/system/etc/twrp.flags → recovery/root/system/etc/twrp.fstab

@@ -23,4 +23,4 @@
 /sec1             emmc     /dev/block/platform/bootdevice/by-name/sec1
 /seccfg           emmc     /dev/block/platform/bootdevice/by-name/seccfg
 /sspm             emmc     /dev/block/platform/bootdevice/by-name/sspm         flags=slotselect
-/spmfw            emmc     /dev/block/platform/bootdevice/by-name/spmfw        flags=slotselect
+/spmfw            emmc     /dev/block/platform/bootdevice/by-name/spmfw        flags=slotselect

+ 0 - 69
recovery/root/system/etc/ueventd.rc

@@ -1,69 +0,0 @@
-firmware_directories /etc/firmware/ /odm/firmware/ /vendor/firmware/ /firmware/image/
-uevent_socket_rcvbuf_size 16M
-
-subsystem graphics
-    devname uevent_devpath
-    dirname /dev/graphics
-
-subsystem drm
-    devname uevent_devpath
-    dirname /dev/dri
-
-subsystem input
-    devname uevent_devpath
-    dirname /dev/input
-
-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
-
-# kms driver for drm based gpu
-/dev/dri/*                0666   root       graphics
-
-# these should not be world writable
-/dev/uhid                 0660   uhid       uhid
-/dev/uinput               0660   uhid       uhid
-/dev/rtc0                 0640   system     system
-/dev/tty0                 0660   root       system
-/dev/graphics/*           0660   root       graphics
-/dev/input/*              0660   root       input
-/dev/v4l-touch*           0660   root       input
-/dev/snd/*                0660   system     audio
-/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/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

+ 0 - 526
recovery/root/vendor/etc/vintf/manifest.xml

@@ -1,526 +0,0 @@
-<!--
-    Input:
-        manifest_target_level_p.xml
-        manifest_sensor_hidl_v2.xml
-        manifest_audio.xml
-        manifest_dsds.xml
-        manifest_radioconfig.xml
-        manifest_bgservice.xml
-        manifest_wifi.xml
-        manifest_videotelephony.xml
-        manifest_secure_element_dsds.xml
-        manifest_mtkcodecservice.xml
-        manifest_km3.xml
-        manifest_tee.xml
-        manifest_trustonic.xml
-        manifest_boot.xml
-        manifest_netdagent.xml
-        manifest_pq.xml
-        manifest_mmservice.xml
-        manifest_gnss.xml
-        manifest.xml
--->
-<manifest version="2.0" type="device" target-level="3">
-    <hal format="hidl">
-        <name>android.hardware.audio</name>
-        <transport>hwbinder</transport>
-        <version>6.0</version>
-        <interface>
-            <name>IDevicesFactory</name>
-            <instance>default</instance>
-        </interface>
-        <fqname>@6.0::IDevicesFactory/default</fqname>
-    </hal>
-    <hal format="hidl">
-        <name>android.hardware.audio.effect</name>
-        <transport>hwbinder</transport>
-        <version>6.0</version>
-        <interface>
-            <name>IEffectsFactory</name>
-            <instance>default</instance>
-        </interface>
-        <fqname>@6.0::IEffectsFactory/default</fqname>
-    </hal>
-    <hal format="hidl">
-        <name>android.hardware.bluetooth</name>
-        <transport>hwbinder</transport>
-        <version>1.0</version>
-        <interface>
-            <name>IBluetoothHci</name>
-            <instance>default</instance>
-        </interface>
-        <fqname>@1.0::IBluetoothHci/default</fqname>
-    </hal>
-    <hal format="hidl">
-        <name>android.hardware.bluetooth.audio</name>
-        <transport>hwbinder</transport>
-        <version>2.0</version>
-        <interface>
-            <name>IBluetoothAudioProvidersFactory</name>
-            <instance>default</instance>
-        </interface>
-        <fqname>@2.0::IBluetoothAudioProvidersFactory/default</fqname>
-    </hal>
-    <hal format="hidl">
-        <name>android.hardware.boot</name>
-        <transport>hwbinder</transport>
-        <version>1.0</version>
-        <interface>
-            <name>IBootControl</name>
-            <instance>default</instance>
-        </interface>
-        <fqname>@1.0::IBootControl/default</fqname>
-    </hal>
-    <hal format="hidl">
-        <name>android.hardware.camera.provider</name>
-        <transport>hwbinder</transport>
-        <version>2.6</version>
-        <interface>
-            <name>ICameraProvider</name>
-            <instance>internal/0</instance>
-        </interface>
-        <fqname>@2.6::ICameraProvider/internal/0</fqname>
-    </hal>
-    <hal format="hidl">
-        <name>android.hardware.configstore</name>
-        <transport>hwbinder</transport>
-        <version>1.1</version>
-        <interface>
-            <name>ISurfaceFlingerConfigs</name>
-            <instance>default</instance>
-        </interface>
-        <fqname>@1.1::ISurfaceFlingerConfigs/default</fqname>
-    </hal>
-    <hal format="hidl">
-        <name>android.hardware.gatekeeper</name>
-        <transport>hwbinder</transport>
-        <version>1.0</version>
-        <interface>
-            <name>IGatekeeper</name>
-            <instance>default</instance>
-        </interface>
-        <fqname>@1.0::IGatekeeper/default</fqname>
-    </hal>
-    <hal format="hidl">
-        <name>android.hardware.gnss</name>
-        <transport>hwbinder</transport>
-        <version>1.1</version>
-        <version>2.1</version>
-        <interface>
-            <name>IGnss</name>
-            <instance>default</instance>
-        </interface>
-        <fqname>@1.1::IGnss/default</fqname>
-        <fqname>@2.1::IGnss/default</fqname>
-    </hal>
-    <hal format="hidl">
-        <name>android.hardware.graphics.allocator</name>
-        <transport>hwbinder</transport>
-        <version>4.0</version>
-        <interface>
-            <name>IAllocator</name>
-            <instance>default</instance>
-        </interface>
-        <fqname>@4.0::IAllocator/default</fqname>
-    </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>
-        <fqname>@2.1::IComposer/default</fqname>
-    </hal>
-    <hal format="hidl">
-        <name>android.hardware.graphics.mapper</name>
-        <transport arch="32+64">passthrough</transport>
-        <version>4.0</version>
-        <interface>
-            <name>IMapper</name>
-            <instance>default</instance>
-        </interface>
-        <fqname>@4.0::IMapper/default</fqname>
-    </hal>
-    <hal format="hidl">
-        <name>android.hardware.keymaster</name>
-        <transport>hwbinder</transport>
-        <version>3.0</version>
-        <interface>
-            <name>IKeymasterDevice</name>
-            <instance>default</instance>
-        </interface>
-        <fqname>@3.0::IKeymasterDevice/default</fqname>
-    </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>
-        <fqname>@1.0::IOmx/default</fqname>
-        <fqname>@1.0::IOmxStore/default</fqname>
-    </hal>
-    <hal format="hidl">
-        <name>android.hardware.memtrack</name>
-        <transport>hwbinder</transport>
-        <version>1.0</version>
-        <interface>
-            <name>IMemtrack</name>
-            <instance>default</instance>
-        </interface>
-        <fqname>@1.0::IMemtrack/default</fqname>
-    </hal>
-    <hal format="hidl">
-        <name>android.hardware.radio</name>
-        <transport>hwbinder</transport>
-        <version>1.2</version>
-        <interface>
-            <name>IRadio</name>
-            <instance>em1</instance>
-            <instance>em2</instance>
-            <instance>imsAospSlot1</instance>
-            <instance>imsAospSlot2</instance>
-            <instance>se1</instance>
-            <instance>se2</instance>
-            <instance>slot1</instance>
-            <instance>slot2</instance>
-        </interface>
-        <interface>
-            <name>ISap</name>
-            <instance>slot1</instance>
-            <instance>slot2</instance>
-        </interface>
-        <fqname>@1.2::IRadio/em1</fqname>
-        <fqname>@1.2::IRadio/em2</fqname>
-        <fqname>@1.2::IRadio/imsAospSlot1</fqname>
-        <fqname>@1.2::IRadio/imsAospSlot2</fqname>
-        <fqname>@1.2::IRadio/se1</fqname>
-        <fqname>@1.2::IRadio/se2</fqname>
-        <fqname>@1.2::IRadio/slot1</fqname>
-        <fqname>@1.2::IRadio/slot2</fqname>
-        <fqname>@1.2::ISap/slot1</fqname>
-        <fqname>@1.2::ISap/slot2</fqname>
-        <fqname>@1.5::IRadio/em1</fqname>
-        <fqname>@1.5::IRadio/em2</fqname>
-        <fqname>@1.5::IRadio/imsAospSlot1</fqname>
-        <fqname>@1.5::IRadio/imsAospSlot2</fqname>
-        <fqname>@1.5::IRadio/se1</fqname>
-        <fqname>@1.5::IRadio/se2</fqname>
-        <fqname>@1.5::IRadio/slot1</fqname>
-        <fqname>@1.5::IRadio/slot2</fqname>
-    </hal>
-    <hal format="hidl">
-        <name>android.hardware.radio.config</name>
-        <transport>hwbinder</transport>
-        <version>1.1</version>
-        <interface>
-            <name>IRadioConfig</name>
-            <instance>default</instance>
-        </interface>
-        <fqname>@1.1::IRadioConfig/default</fqname>
-    </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>
-        <fqname>@1.0::IDevice/default</fqname>
-    </hal>
-    <hal format="hidl">
-        <name>android.hardware.secure_element</name>
-        <transport>hwbinder</transport>
-        <version>1.2</version>
-        <interface>
-            <name>ISecureElement</name>
-            <instance>SIM1</instance>
-            <instance>SIM2</instance>
-        </interface>
-        <fqname>@1.2::ISecureElement/SIM1</fqname>
-        <fqname>@1.2::ISecureElement/SIM2</fqname>
-    </hal>
-    <hal format="hidl">
-        <name>android.hardware.sensors</name>
-        <transport>hwbinder</transport>
-        <version>2.0</version>
-        <interface>
-            <name>ISensors</name>
-            <instance>default</instance>
-        </interface>
-        <fqname>@2.0::ISensors/default</fqname>
-    </hal>
-    <hal format="hidl">
-        <name>android.hardware.thermal</name>
-        <transport>hwbinder</transport>
-        <version>1.0</version>
-        <version>2.0</version>
-        <interface>
-            <name>IThermal</name>
-            <instance>default</instance>
-        </interface>
-        <fqname>@1.0::IThermal/default</fqname>
-        <fqname>@2.0::IThermal/default</fqname>
-    </hal>
-    <hal format="hidl">
-        <name>android.hardware.usb</name>
-        <transport>hwbinder</transport>
-        <version>1.1</version>
-        <interface>
-            <name>IUsb</name>
-            <instance>default</instance>
-        </interface>
-        <fqname>@1.1::IUsb/default</fqname>
-    </hal>
-    <hal format="hidl">
-        <name>android.hardware.usb.gadget</name>
-        <transport>hwbinder</transport>
-        <version>1.1</version>
-        <interface>
-            <name>IUsbGadget</name>
-            <instance>default</instance>
-        </interface>
-        <fqname>@1.1::IUsbGadget/default</fqname>
-    </hal>
-    <hal format="hidl">
-        <name>vendor.mediatek.hardware.atci</name>
-        <transport>hwbinder</transport>
-        <version>1.0</version>
-        <interface>
-            <name>IAtcid</name>
-            <instance>default</instance>
-        </interface>
-        <fqname>@1.0::IAtcid/default</fqname>
-    </hal>
-    <hal format="hidl">
-        <name>vendor.mediatek.hardware.bluetooth.audio</name>
-        <transport>hwbinder</transport>
-        <version>2.1</version>
-        <interface>
-            <name>IBluetoothAudioProvidersFactory</name>
-            <instance>default</instance>
-        </interface>
-        <fqname>@2.1::IBluetoothAudioProvidersFactory/default</fqname>
-    </hal>
-    <hal format="hidl">
-        <name>vendor.mediatek.hardware.camera.bgservice</name>
-        <transport>hwbinder</transport>
-        <version>1.1</version>
-        <interface>
-            <name>IBGService</name>
-            <instance>internal/0</instance>
-        </interface>
-        <fqname>@1.1::IBGService/internal/0</fqname>
-    </hal>
-    <hal format="hidl">
-        <name>vendor.mediatek.hardware.keymaster_attestation</name>
-        <transport>hwbinder</transport>
-        <version>1.1</version>
-        <interface>
-            <name>IKeymasterDevice</name>
-            <instance>default</instance>
-        </interface>
-        <fqname>@1.1::IKeymasterDevice/default</fqname>
-    </hal>
-    <hal format="hidl">
-        <name>vendor.mediatek.hardware.lbs</name>
-        <transport>hwbinder</transport>
-        <version>1.0</version>
-        <interface>
-            <name>ILbs</name>
-            <instance>AgpsDebugInterface</instance>
-            <instance>AgpsInterface</instance>
-            <instance>mtk_agps2framework</instance>
-            <instance>mtk_debugService2mnld</instance>
-            <instance>mtk_framework2agps</instance>
-            <instance>mtk_lbs_log_v2s</instance>
-            <instance>mtk_lppe_socket_agps</instance>
-            <instance>mtk_lppe_socket_bt</instance>
-            <instance>mtk_lppe_socket_ipaddr</instance>
-            <instance>mtk_lppe_socket_lbs</instance>
-            <instance>mtk_lppe_socket_network</instance>
-            <instance>mtk_lppe_socket_sensor</instance>
-            <instance>mtk_lppe_socket_wlan</instance>
-            <instance>mtk_meta2mnld</instance>
-            <instance>mtk_mnld2debugService</instance>
-            <instance>mtk_mnld2mtklogger</instance>
-            <instance>mtk_mnld2nlputils</instance>
-            <instance>mtk_mtklogger2mnld</instance>
-        </interface>
-        <fqname>@1.0::ILbs/AgpsDebugInterface</fqname>
-        <fqname>@1.0::ILbs/AgpsInterface</fqname>
-        <fqname>@1.0::ILbs/mtk_agps2framework</fqname>
-        <fqname>@1.0::ILbs/mtk_debugService2mnld</fqname>
-        <fqname>@1.0::ILbs/mtk_framework2agps</fqname>
-        <fqname>@1.0::ILbs/mtk_lbs_log_v2s</fqname>
-        <fqname>@1.0::ILbs/mtk_lppe_socket_agps</fqname>
-        <fqname>@1.0::ILbs/mtk_lppe_socket_bt</fqname>
-        <fqname>@1.0::ILbs/mtk_lppe_socket_ipaddr</fqname>
-        <fqname>@1.0::ILbs/mtk_lppe_socket_lbs</fqname>
-        <fqname>@1.0::ILbs/mtk_lppe_socket_network</fqname>
-        <fqname>@1.0::ILbs/mtk_lppe_socket_sensor</fqname>
-        <fqname>@1.0::ILbs/mtk_lppe_socket_wlan</fqname>
-        <fqname>@1.0::ILbs/mtk_meta2mnld</fqname>
-        <fqname>@1.0::ILbs/mtk_mnld2debugService</fqname>
-        <fqname>@1.0::ILbs/mtk_mnld2mtklogger</fqname>
-        <fqname>@1.0::ILbs/mtk_mnld2nlputils</fqname>
-        <fqname>@1.0::ILbs/mtk_mtklogger2mnld</fqname>
-    </hal>
-    <hal format="hidl">
-        <name>vendor.mediatek.hardware.mms</name>
-        <transport>hwbinder</transport>
-        <version>1.5</version>
-        <interface>
-            <name>IMms</name>
-            <instance>default</instance>
-        </interface>
-        <fqname>@1.5::IMms/default</fqname>
-    </hal>
-    <hal format="hidl">
-        <name>vendor.mediatek.hardware.mtkcodecservice</name>
-        <transport>hwbinder</transport>
-        <version>1.1</version>
-        <interface>
-            <name>IMtkCodecService</name>
-            <instance>default</instance>
-        </interface>
-        <fqname>@1.1::IMtkCodecService/default</fqname>
-    </hal>
-    <hal format="hidl">
-        <name>vendor.mediatek.hardware.mtkpower</name>
-        <transport>hwbinder</transport>
-        <version>1.1</version>
-        <interface>
-            <name>IMtkPerf</name>
-            <instance>default</instance>
-        </interface>
-        <interface>
-            <name>IMtkPower</name>
-            <instance>default</instance>
-        </interface>
-        <fqname>@1.1::IMtkPerf/default</fqname>
-        <fqname>@1.1::IMtkPower/default</fqname>
-    </hal>
-    <hal format="hidl">
-        <name>vendor.mediatek.hardware.mtkradioex</name>
-        <transport>hwbinder</transport>
-        <version>2.0</version>
-        <interface>
-            <name>IMtkRadioEx</name>
-            <instance>imsSlot1</instance>
-            <instance>imsSlot2</instance>
-            <instance>mtkAssist1</instance>
-            <instance>mtkAssist2</instance>
-            <instance>mtkCap1</instance>
-            <instance>mtkCap2</instance>
-            <instance>mtkEm1</instance>
-            <instance>mtkEm2</instance>
-            <instance>mtkRcs1</instance>
-            <instance>mtkRcs2</instance>
-            <instance>mtkSe1</instance>
-            <instance>mtkSe2</instance>
-            <instance>mtkSlot1</instance>
-            <instance>mtkSlot2</instance>
-            <instance>mtkSmartRatSwitch1</instance>
-            <instance>mtkSmartRatSwitch2</instance>
-        </interface>
-        <fqname>@2.0::IMtkRadioEx/imsSlot1</fqname>
-        <fqname>@2.0::IMtkRadioEx/imsSlot2</fqname>
-        <fqname>@2.0::IMtkRadioEx/mtkAssist1</fqname>
-        <fqname>@2.0::IMtkRadioEx/mtkAssist2</fqname>
-        <fqname>@2.0::IMtkRadioEx/mtkCap1</fqname>
-        <fqname>@2.0::IMtkRadioEx/mtkCap2</fqname>
-        <fqname>@2.0::IMtkRadioEx/mtkEm1</fqname>
-        <fqname>@2.0::IMtkRadioEx/mtkEm2</fqname>
-        <fqname>@2.0::IMtkRadioEx/mtkRcs1</fqname>
-        <fqname>@2.0::IMtkRadioEx/mtkRcs2</fqname>
-        <fqname>@2.0::IMtkRadioEx/mtkSe1</fqname>
-        <fqname>@2.0::IMtkRadioEx/mtkSe2</fqname>
-        <fqname>@2.0::IMtkRadioEx/mtkSlot1</fqname>
-        <fqname>@2.0::IMtkRadioEx/mtkSlot2</fqname>
-        <fqname>@2.0::IMtkRadioEx/mtkSmartRatSwitch1</fqname>
-        <fqname>@2.0::IMtkRadioEx/mtkSmartRatSwitch2</fqname>
-    </hal>
-    <hal format="hidl">
-        <name>vendor.mediatek.hardware.netdagent</name>
-        <transport>hwbinder</transport>
-        <version>1.0</version>
-        <interface>
-            <name>INetdagent</name>
-            <instance>default</instance>
-        </interface>
-        <fqname>@1.0::INetdagent/default</fqname>
-    </hal>
-    <hal format="hidl">
-        <name>vendor.mediatek.hardware.nvram</name>
-        <transport>hwbinder</transport>
-        <version>1.1</version>
-        <interface>
-            <name>INvram</name>
-            <instance>default</instance>
-        </interface>
-        <fqname>@1.1::INvram/default</fqname>
-    </hal>
-    <hal format="hidl">
-        <name>vendor.mediatek.hardware.pq</name>
-        <transport>hwbinder</transport>
-        <version>2.6</version>
-        <interface>
-            <name>IPictureQuality</name>
-            <instance>default</instance>
-        </interface>
-        <fqname>@2.6::IPictureQuality/default</fqname>
-    </hal>
-    <hal format="hidl">
-        <name>vendor.mediatek.hardware.videotelephony</name>
-        <transport>hwbinder</transport>
-        <version>1.0</version>
-        <interface>
-            <name>IVideoTelephony</name>
-            <instance>default</instance>
-        </interface>
-        <fqname>@1.0::IVideoTelephony/default</fqname>
-    </hal>
-    <hal format="hidl">
-        <name>vendor.mediatek.hardware.wifi.supplicant</name>
-        <transport>hwbinder</transport>
-        <version>2.0</version>
-        <interface>
-            <name>ISupplicant</name>
-            <instance>default</instance>
-        </interface>
-        <fqname>@2.0::ISupplicant/default</fqname>
-    </hal>
-    <hal format="hidl">
-        <name>vendor.trustonic.tee</name>
-        <transport>hwbinder</transport>
-        <version>1.1</version>
-        <interface>
-            <name>ITee</name>
-            <instance>default</instance>
-        </interface>
-        <fqname>@1.1::ITee/default</fqname>
-    </hal>
-    <hal format="hidl">
-        <name>vendor.trustonic.tee.tui</name>
-        <transport>hwbinder</transport>
-        <version>1.0</version>
-        <interface>
-            <name>ITui</name>
-            <instance>default</instance>
-        </interface>
-        <fqname>@1.0::ITui/default</fqname>
-    </hal>
-    <sepolicy>
-        <version>30.0</version>
-    </sepolicy>
-</manifest>

+ 0 - 7
twrp_WSP_sprout.mk

@@ -34,13 +34,6 @@ PRODUCT_BRAND := Nokia
 PRODUCT_MODEL := 2.2
 PRODUCT_MANUFACTURER := HMD Global
 
-PRODUCT_BUILD_PROP_OVERRIDES += \
-    TARGET_DEVICE=Note_11P \
-    PRODUCT_NAME=Note_11P \
-    PRIVATE_BUILD_DESC="full_g2062upt_v1_gd_sh2_gq_r-user 11 RP1A.200720.011 2106051247 release-keys"
-
-BUILD_FINGERPRINT := Ulefone/Note_11P/Note_11P:11/RP1A.200720.011/2106051247:user/release-keys
-
 # HACK: Set vendor patch level
 PRODUCT_PROPERTY_OVERRIDES += \
     ro.vendor.build.security_patch=2099-12-31