From eddf6fbda6747d88d3f2f01318cffb4bea0f7226 Mon Sep 17 00:00:00 2001 From: GarfieldFernando Date: Mon, 18 Jan 2021 15:03:21 -0600 Subject: [PATCH] guamp: Initial device tree - Initial device tree for guamp device - Based in Qualcomm SM6115 Signed-off-by: GarfieldFernando --- Android.mk | 5 + AndroidProducts.mk | 7 + BoardConfig.mk | 20 + README.md | 20 + android.hardware.atrace@1.0-service.xml | 11 + android.hardware.cas@1.1-service.xml | 11 + android.hardware.gnss@2.0-service-qti.xml | 37 + ...dware.graphics.mapper-impl-qti-display.xml | 50 + android.hardware.usb@1.1-service.xml | 39 + audio/Bluetooth_split_audio_V1.cfg | Bin 0 -> 1608 bytes audio/MM_audio_playback_capture_v2.0.cfg | Bin 0 -> 800 bytes audio/a2dp_audio_policy_configuration.xml | 44 + audio/audio_effects.xml | 62 + audio/audio_ext_spkr.conf | 25 + audio/audio_platform_info.xml | 278 + audio/audio_policy_configuration.xml | 238 + audio/audio_policy_volumes.xml | 135 + audio/mixer_paths.xml | 3487 ++++++++++ audio/r_submix_audio_policy_configuration.xml | 47 + audio/usb_audio_policy_configuration.xml | 47 + board-info.txt | 1 + compatibility_matrix.xml | 92 + configs/excluded-input-devices.xml | 30 + configs/msm_irqbalance.conf | 9 + configs/privapp-permissions-qti.xml | 113 + configs/public.libraries.txt | 10 + configs/qti_whitelist.xml | 117 + configs/sec_config | 331 + ...ephony_product_privapp-permissions-qti.xml | 90 + device.mk | 198 + framework_compatibility_matrix.xml | 781 +++ gps/apdr.conf | 205 + gps/flp.conf | 60 + gps/gps.conf | 313 + gps/izat.conf | 282 + gps/lowi.conf | 27 + gps/sap.conf | 161 + gps/xtwifi.conf | 78 + idc/uinput-fpc.idc | 16 + keylayout/gpio-keys.kl | 34 + keylayout/uinput-fpc.kl | 15 + lineage_guamp.mk | 23 + manifest.xml | 800 +++ media/media_codecs.xml | 345 + media/media_codecs_google_audio.xml | 97 + media/media_codecs_google_c2.xml | 19 + media/media_codecs_google_c2_audio.xml | 118 + media/media_codecs_google_c2_video.xml | 155 + media/media_codecs_google_telephony.xml | 25 + media/media_codecs_google_video.xml | 122 + media/media_codecs_google_video_le.xml | 111 + media/media_codecs_performance.xml | 176 + media/media_codecs_performance_v1.xml | 176 + media/media_codecs_performance_v2.xml | 173 + media/media_codecs_vendor.xml | 346 + media/media_codecs_vendor_audio.xml | 26 + media/media_codecs_vendor_v1.xml | 351 + media/media_codecs_vendor_v2.xml | 351 + media/media_profiles.xml | 643 ++ media/media_profiles_V1_0.xml | 867 +++ media/media_profiles_scuba.xml | 1197 ++++ media/media_profiles_vendor.xml | 1206 ++++ media/system_properties.xml | 42 + .../lineage/res/res/values/config.xml | 8 + .../base/core/res/res/values/config.xml | 25 + .../apps/Bluetooth/res/values/bools.xml | 31 + .../apps/CarrierConfig/res/xml/vendor.xml | 3868 +++++++++++ proprietary-files-system.txt | 352 + proprietary-files.txt | 2396 +++++++ rootdir/Android.mk | 403 ++ rootdir/bin/apanic_annotate.sh | 53 + rootdir/bin/apanic_copy.sh | 43 + rootdir/bin/apanic_save.sh | 12 + rootdir/bin/hardware_revisions.sh | 329 + rootdir/bin/init.class_main.sh | 153 + rootdir/bin/init.crda.sh | 35 + rootdir/bin/init.gbmods.sh | 30 + rootdir/bin/init.mdm.sh | 34 + rootdir/bin/init.mmi.block_perm.sh | 36 + rootdir/bin/init.mmi.boot.sh | 151 + rootdir/bin/init.mmi.laser.sh | 95 + rootdir/bin/init.mmi.mdlog-getlogs.sh | 37 + rootdir/bin/init.mmi.modules.sh | 9 + rootdir/bin/init.mmi.shutdown.sh | 59 + rootdir/bin/init.mmi.touch.sh | 558 ++ rootdir/bin/init.mmi.usb.sh | 435 ++ rootdir/bin/init.mmi.wlan-getlogs.sh | 18 + rootdir/bin/init.oem.fingerprint.sh | 82 + rootdir/bin/init.oem.fingerprint2.sh | 102 + rootdir/bin/init.oem.hw.sh | 709 ++ rootdir/bin/init.qcom.class_core.sh | 146 + rootdir/bin/init.qcom.coex.sh | 115 + rootdir/bin/init.qcom.crashdata.sh | 48 + rootdir/bin/init.qcom.early_boot.sh | 540 ++ rootdir/bin/init.qcom.efs.sync.sh | 35 + rootdir/bin/init.qcom.post_boot.sh | 5991 +++++++++++++++++ rootdir/bin/init.qcom.sdio.sh | 78 + rootdir/bin/init.qcom.sensors.sh | 45 + rootdir/bin/init.qcom.sh | 465 ++ rootdir/bin/init.qti.chg_policy.sh | 29 + rootdir/bin/init.qti.fm.sh | 70 + rootdir/bin/init.qti.ims.sh | 57 + rootdir/bin/init.qti.media.sh | 58 + rootdir/bin/pstore_annotate.sh | 33 + rootdir/bin/qca6234-service.sh | 87 + rootdir/etc/fstab.qcom | 27 + rootdir/etc/init.mmi.charge_only.rc | 27 + rootdir/etc/init.mmi.chipset.rc | 12 + rootdir/etc/init.mmi.debug.rc | 5 + rootdir/etc/init.mmi.diag.rc | 1 + rootdir/etc/init.mmi.diag_mdlog.rc | 37 + rootdir/etc/init.mmi.overlay.rc | 86 + rootdir/etc/init.mmi.rc | 619 ++ rootdir/etc/init.mmi.tcmd.rc | 159 + rootdir/etc/init.mmi.usb.rc | 568 ++ rootdir/etc/init.mmi.wlan.rc | 7 + rootdir/etc/init.qcom.factory.rc | 255 + rootdir/etc/init.qcom.rc | 1084 +++ rootdir/etc/init.target.rc | 154 + rootdir/etc/ueventd.qcom.rc | 427 ++ seccomp/configstore@1.1.policy | 56 + seccomp/mediacodec.policy | 19 + sensors/hals.conf | 2 + system.prop | 190 + vendor.qti.gnss@3.0-service.xml | 18 + ...qti.hardware.display.allocator-service.xml | 48 + ....qti.hardware.display.composer-service.xml | 75 + vendor_prop.mk | 164 + wifi/WCNSS_qcom_cfg.ini | 502 ++ wifi/aoa_cldb_falcon.bin | Bin 0 -> 839856 bytes wifi/aoa_cldb_swl14.bin | Bin 0 -> 839856 bytes wifi/icm.conf | 116 + wifi/p2p_supplicant_overlay.conf | 4 + wifi/wigig_p2p_supplicant.conf | 7 + wifi/wigig_supplicant.conf | 7 + wifi/wpa_supplicant.conf | 10 + wifi/wpa_supplicant_overlay.conf | 9 + 137 files changed, 37450 insertions(+) create mode 100644 Android.mk create mode 100644 AndroidProducts.mk create mode 100644 BoardConfig.mk create mode 100644 README.md create mode 100644 android.hardware.atrace@1.0-service.xml create mode 100644 android.hardware.cas@1.1-service.xml create mode 100644 android.hardware.gnss@2.0-service-qti.xml create mode 100644 android.hardware.graphics.mapper-impl-qti-display.xml create mode 100644 android.hardware.usb@1.1-service.xml create mode 100644 audio/Bluetooth_split_audio_V1.cfg create mode 100644 audio/MM_audio_playback_capture_v2.0.cfg create mode 100644 audio/a2dp_audio_policy_configuration.xml create mode 100644 audio/audio_effects.xml create mode 100644 audio/audio_ext_spkr.conf create mode 100644 audio/audio_platform_info.xml create mode 100644 audio/audio_policy_configuration.xml create mode 100644 audio/audio_policy_volumes.xml create mode 100644 audio/mixer_paths.xml create mode 100644 audio/r_submix_audio_policy_configuration.xml create mode 100644 audio/usb_audio_policy_configuration.xml create mode 100644 board-info.txt create mode 100644 compatibility_matrix.xml create mode 100644 configs/excluded-input-devices.xml create mode 100644 configs/msm_irqbalance.conf create mode 100644 configs/privapp-permissions-qti.xml create mode 100644 configs/public.libraries.txt create mode 100644 configs/qti_whitelist.xml create mode 100644 configs/sec_config create mode 100644 configs/telephony_product_privapp-permissions-qti.xml create mode 100644 device.mk create mode 100644 framework_compatibility_matrix.xml create mode 100644 gps/apdr.conf create mode 100644 gps/flp.conf create mode 100644 gps/gps.conf create mode 100644 gps/izat.conf create mode 100644 gps/lowi.conf create mode 100644 gps/sap.conf create mode 100644 gps/xtwifi.conf create mode 100644 idc/uinput-fpc.idc create mode 100644 keylayout/gpio-keys.kl create mode 100644 keylayout/uinput-fpc.kl create mode 100644 lineage_guamp.mk create mode 100644 manifest.xml create mode 100644 media/media_codecs.xml create mode 100644 media/media_codecs_google_audio.xml create mode 100644 media/media_codecs_google_c2.xml create mode 100644 media/media_codecs_google_c2_audio.xml create mode 100644 media/media_codecs_google_c2_video.xml create mode 100644 media/media_codecs_google_telephony.xml create mode 100644 media/media_codecs_google_video.xml create mode 100644 media/media_codecs_google_video_le.xml create mode 100644 media/media_codecs_performance.xml create mode 100644 media/media_codecs_performance_v1.xml create mode 100644 media/media_codecs_performance_v2.xml create mode 100644 media/media_codecs_vendor.xml create mode 100644 media/media_codecs_vendor_audio.xml create mode 100644 media/media_codecs_vendor_v1.xml create mode 100644 media/media_codecs_vendor_v2.xml create mode 100644 media/media_profiles.xml create mode 100644 media/media_profiles_V1_0.xml create mode 100644 media/media_profiles_scuba.xml create mode 100644 media/media_profiles_vendor.xml create mode 100644 media/system_properties.xml create mode 100644 overlay-lineage/lineage-sdk/lineage/res/res/values/config.xml create mode 100644 overlay/frameworks/base/core/res/res/values/config.xml create mode 100644 overlay/packages/apps/Bluetooth/res/values/bools.xml create mode 100644 overlay/packages/apps/CarrierConfig/res/xml/vendor.xml create mode 100644 proprietary-files-system.txt create mode 100644 proprietary-files.txt create mode 100644 rootdir/Android.mk create mode 100644 rootdir/bin/apanic_annotate.sh create mode 100644 rootdir/bin/apanic_copy.sh create mode 100644 rootdir/bin/apanic_save.sh create mode 100644 rootdir/bin/hardware_revisions.sh create mode 100644 rootdir/bin/init.class_main.sh create mode 100644 rootdir/bin/init.crda.sh create mode 100644 rootdir/bin/init.gbmods.sh create mode 100644 rootdir/bin/init.mdm.sh create mode 100644 rootdir/bin/init.mmi.block_perm.sh create mode 100644 rootdir/bin/init.mmi.boot.sh create mode 100644 rootdir/bin/init.mmi.laser.sh create mode 100644 rootdir/bin/init.mmi.mdlog-getlogs.sh create mode 100644 rootdir/bin/init.mmi.modules.sh create mode 100644 rootdir/bin/init.mmi.shutdown.sh create mode 100644 rootdir/bin/init.mmi.touch.sh create mode 100644 rootdir/bin/init.mmi.usb.sh create mode 100644 rootdir/bin/init.mmi.wlan-getlogs.sh create mode 100644 rootdir/bin/init.oem.fingerprint.sh create mode 100644 rootdir/bin/init.oem.fingerprint2.sh create mode 100644 rootdir/bin/init.oem.hw.sh create mode 100644 rootdir/bin/init.qcom.class_core.sh create mode 100644 rootdir/bin/init.qcom.coex.sh create mode 100644 rootdir/bin/init.qcom.crashdata.sh create mode 100644 rootdir/bin/init.qcom.early_boot.sh create mode 100644 rootdir/bin/init.qcom.efs.sync.sh create mode 100644 rootdir/bin/init.qcom.post_boot.sh create mode 100644 rootdir/bin/init.qcom.sdio.sh create mode 100644 rootdir/bin/init.qcom.sensors.sh create mode 100644 rootdir/bin/init.qcom.sh create mode 100644 rootdir/bin/init.qti.chg_policy.sh create mode 100644 rootdir/bin/init.qti.fm.sh create mode 100644 rootdir/bin/init.qti.ims.sh create mode 100644 rootdir/bin/init.qti.media.sh create mode 100644 rootdir/bin/pstore_annotate.sh create mode 100644 rootdir/bin/qca6234-service.sh create mode 100644 rootdir/etc/fstab.qcom create mode 100644 rootdir/etc/init.mmi.charge_only.rc create mode 100644 rootdir/etc/init.mmi.chipset.rc create mode 100644 rootdir/etc/init.mmi.debug.rc create mode 100644 rootdir/etc/init.mmi.diag.rc create mode 100644 rootdir/etc/init.mmi.diag_mdlog.rc create mode 100644 rootdir/etc/init.mmi.overlay.rc create mode 100644 rootdir/etc/init.mmi.rc create mode 100644 rootdir/etc/init.mmi.tcmd.rc create mode 100644 rootdir/etc/init.mmi.usb.rc create mode 100644 rootdir/etc/init.mmi.wlan.rc create mode 100644 rootdir/etc/init.qcom.factory.rc create mode 100644 rootdir/etc/init.qcom.rc create mode 100644 rootdir/etc/init.target.rc create mode 100644 rootdir/etc/ueventd.qcom.rc create mode 100644 seccomp/configstore@1.1.policy create mode 100644 seccomp/mediacodec.policy create mode 100644 sensors/hals.conf create mode 100644 system.prop create mode 100644 vendor.qti.gnss@3.0-service.xml create mode 100644 vendor.qti.hardware.display.allocator-service.xml create mode 100644 vendor.qti.hardware.display.composer-service.xml create mode 100644 vendor_prop.mk create mode 100644 wifi/WCNSS_qcom_cfg.ini create mode 100644 wifi/aoa_cldb_falcon.bin create mode 100644 wifi/aoa_cldb_swl14.bin create mode 100644 wifi/icm.conf create mode 100644 wifi/p2p_supplicant_overlay.conf create mode 100644 wifi/wigig_p2p_supplicant.conf create mode 100644 wifi/wigig_supplicant.conf create mode 100644 wifi/wpa_supplicant.conf create mode 100644 wifi/wpa_supplicant_overlay.conf diff --git a/Android.mk b/Android.mk new file mode 100644 index 0000000..496bf35 --- /dev/null +++ b/Android.mk @@ -0,0 +1,5 @@ +LOCAL_PATH := $(call my-dir) +ifeq ($(TARGET_DEVICE),guamp) +include $(call all-makefiles-under,$(LOCAL_PATH)) +include $(CLEAR_VARS) +endif \ No newline at end of file diff --git a/AndroidProducts.mk b/AndroidProducts.mk new file mode 100644 index 0000000..0ac36e2 --- /dev/null +++ b/AndroidProducts.mk @@ -0,0 +1,7 @@ +PRODUCT_MAKEFILES := \ + $(LOCAL_DIR)/lineage_guamp.mk + +COMMON_LUNCH_CHOICES := \ + lineage_guamp-eng \ + lineage_guamp-user \ + lineage_guamp-userdebug diff --git a/BoardConfig.mk b/BoardConfig.mk new file mode 100644 index 0000000..2d0ebcc --- /dev/null +++ b/BoardConfig.mk @@ -0,0 +1,20 @@ +DEVICE_PATH := device/motorola/guamp +BOARD_VENDOR := motorola + +# Security patch level +VENDOR_SECURITY_PATCH := 2020-11-01 + +# HIDL +DEVICE_MANIFEST_FILE := $(DEVICE_PATH)/manifest.xml +DEVICE_MANIFEST_FILE += $(DEVICE_PATH)/android.hardware.atrace@1.0-service.xml +DEVICE_MANIFEST_FILE += $(DEVICE_PATH)/android.hardware.cas@1.1-service.xml +DEVICE_MANIFEST_FILE += $(DEVICE_PATH)/android.hardware.gnss@2.0-service-qti.xml +DEVICE_MANIFEST_FILE += $(DEVICE_PATH)/android.hardware.graphics.mapper-impl-qti-display.xml +DEVICE_MANIFEST_FILE += $(DEVICE_PATH)/android.hardware.usb@1.1-service.xml +DEVICE_MANIFEST_FILE += $(DEVICE_PATH)/vendor.qti.gnss@3.0-service.xml +DEVICE_MANIFEST_FILE += $(DEVICE_PATH)/vendor.qti.hardware.display.allocator-service.xml +DEVICE_MANIFEST_FILE += $(DEVICE_PATH)/vendor.qti.hardware.display.composer-service.xml +DEVICE_MATRIX_FILE := $(DEVICE_PATH)/compatibility_matrix.xml +DEVICE_FRAMEWORK_COMPATIBILITY_MATRIX_FILE := $(DEVICE_PATH)/framework_compatibility_matrix.xml + +-include vendor/motorola/guamp/BoardConfigVendor.mk \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..e08f993 --- /dev/null +++ b/README.md @@ -0,0 +1,20 @@ + +Device configuration for Motorola Moto G9/G9 Play (Guamp) +================================== + +Basic | Spec Sheet +-------:|:------------------------- +CPU | Octa-core 4x2.0 GHz Kryo 260 Gold & 4x1.8 GHz Kryo 260 Silver +CHIPSET | Qualcomm SD6115 Snapdragon 662 +GPU | Adreno 610 +Memory | 2/3/4GB +Shipped Android Version | 10.0 (Q) +Internal Storage | 64/128GB +microSD | Up to 512 GB (uses shared SIM slot) +Battery | 5000 mAh +Dimensions | 165.2 x 75.7 x 9.2 mm +Display | 720 x 1600 pixels, 6.5-inch IPS LCD +Rear Camera | 48 MP, f/1.7, (wide), 1/2.0", 0.8µm, PDAF, 2 MP, f/2.4, (macro), 2 MP, f/2.4, (depth) +Front Camera | 8 MP (f/2.2, 1.12µm, HDR) + +![Motorola g9 play](https://fdn2.gsmarena.com/vv/pics/motorola/motorola-moto-g9-play-2.jpg "Motorola Moto G9 Play") diff --git a/android.hardware.atrace@1.0-service.xml b/android.hardware.atrace@1.0-service.xml new file mode 100644 index 0000000..fd3631c --- /dev/null +++ b/android.hardware.atrace@1.0-service.xml @@ -0,0 +1,11 @@ + + + android.hardware.atrace + hwbinder + 1.0 + + IAtraceDevice + default + + + diff --git a/android.hardware.cas@1.1-service.xml b/android.hardware.cas@1.1-service.xml new file mode 100644 index 0000000..c9f13ba --- /dev/null +++ b/android.hardware.cas@1.1-service.xml @@ -0,0 +1,11 @@ + + + android.hardware.cas + hwbinder + 1.1 + + IMediaCasService + default + + + diff --git a/android.hardware.gnss@2.0-service-qti.xml b/android.hardware.gnss@2.0-service-qti.xml new file mode 100644 index 0000000..de82c60 --- /dev/null +++ b/android.hardware.gnss@2.0-service-qti.xml @@ -0,0 +1,37 @@ + + + + android.hardware.gnss + hwbinder + @1.0::IGnss/gnss_vendor + @1.1::IGnss/default + @2.0::IGnss/default + + + diff --git a/android.hardware.graphics.mapper-impl-qti-display.xml b/android.hardware.graphics.mapper-impl-qti-display.xml new file mode 100644 index 0000000..2eee216 --- /dev/null +++ b/android.hardware.graphics.mapper-impl-qti-display.xml @@ -0,0 +1,50 @@ + + + + vendor.qti.hardware.display.mapper + passthrough + 3.0 + + IQtiMapper + default + + + + android.hardware.graphics.mapper + passthrough + 3.0 + + IMapper + default + + + + + diff --git a/android.hardware.usb@1.1-service.xml b/android.hardware.usb@1.1-service.xml new file mode 100644 index 0000000..a686241 --- /dev/null +++ b/android.hardware.usb@1.1-service.xml @@ -0,0 +1,39 @@ + + + + android.hardware.usb + hwbinder + 1.1 + + IUsb + default + + @1.1::IUsb/default + + diff --git a/audio/Bluetooth_split_audio_V1.cfg b/audio/Bluetooth_split_audio_V1.cfg new file mode 100644 index 0000000000000000000000000000000000000000..b04d417bbaeb77d4ede368d95a0161f9837c3d1f GIT binary patch literal 1608 zcmb1@v94pN_)zC<#Ky48x2|TgXPwMctvVhNtGeW;3+uf385nja)Om9pvutE-J=WdMT`M)-Pn6lV7YpA#8o=gdLsS%p}I zAaQaD9QP)Q-ii=DD9mVuryA511C0lPTa92QGmyy$#1dRUf(?in7!K6`2ZcF708BIF zf(?uhKo)}mlmX|%#6cx2LHe;8f>-2nmpV8@&QCn>y^{`n7zVl`z3wkb_@0IF@En*aa+ literal 0 HcmV?d00001 diff --git a/audio/MM_audio_playback_capture_v2.0.cfg b/audio/MM_audio_playback_capture_v2.0.cfg new file mode 100644 index 0000000000000000000000000000000000000000..2032dbd12808239054ab0b91bf420bc107e45dac GIT binary patch literal 800 zcmb1@v94pN_)zC<#Ky48x2|TgXPwMctvVhNtGeW;3+uf385nja)Om9pvutE-J=WdMT`M)G9}o-K Ip1r680LMy&82|tP literal 0 HcmV?d00001 diff --git a/audio/a2dp_audio_policy_configuration.xml b/audio/a2dp_audio_policy_configuration.xml new file mode 100644 index 0000000..7bcab5c --- /dev/null +++ b/audio/a2dp_audio_policy_configuration.xml @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/audio/audio_effects.xml b/audio/audio_effects.xml new file mode 100644 index 0000000..35b933a --- /dev/null +++ b/audio/audio_effects.xml @@ -0,0 +1,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/audio/audio_ext_spkr.conf b/audio/audio_ext_spkr.conf new file mode 100644 index 0000000..242ec01 --- /dev/null +++ b/audio/audio_ext_spkr.conf @@ -0,0 +1,25 @@ +global_config { + name guamp +} + +ring { + #dB to attenuate playback to meet safety level at each volume step + #16 steps total, 15...0. In case of truncated list, last attenuation + #given will be applied to all lower volume steps + attenuation 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +} + +voice { + #dB to attenuate playback to meet safety level at each volume step + #16 steps total, 15...0. In case of truncated list, last attenuation + #given will be applied to all lower volume steps + attenuation 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +} + +media { + #dB to attenuate playback to meet safety level at each volume step + #16 steps total, 15...0. In case of truncated list, last attenuation + #given will be applied to all lower volume steps + attenuation 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 +} + diff --git a/audio/audio_platform_info.xml b/audio/audio_platform_info.xml new file mode 100644 index 0000000..19bf260 --- /dev/null +++ b/audio/audio_platform_info.xml @@ -0,0 +1,278 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/audio/audio_policy_configuration.xml b/audio/audio_policy_configuration.xml new file mode 100644 index 0000000..4518215 --- /dev/null +++ b/audio/audio_policy_configuration.xml @@ -0,0 +1,238 @@ + + + + + + + + + + + + + Earpiece + Speaker + Telephony Tx + Built-In Mic + Built-In Back Mic + Telephony Rx + FM tuner + + Speaker + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/audio/audio_policy_volumes.xml b/audio/audio_policy_volumes.xml new file mode 100644 index 0000000..b973aa1 --- /dev/null +++ b/audio/audio_policy_volumes.xml @@ -0,0 +1,135 @@ + + + + + + 0,-3800 + 33,-1700 + 66,-700 + 100,0 + + + 0,-3000 + 33,-2300 + 66,-700 + 100,0 + + + + 1,-3000 + 33,-2600 + 66,-2200 + 100,-1800 + + + + + + + + + + 1,-5600 + 33,-3400 + 66,-1600 + 100,0 + + + + + + + + + + + + + + + + + + + + + + 1,-3000 + 33,-2600 + 66,-2200 + 100,-1800 + + + + + + + + + + + + + + + + + + + + + diff --git a/audio/mixer_paths.xml b/audio/mixer_paths.xml new file mode 100644 index 0000000..0e1b4d3 --- /dev/null +++ b/audio/mixer_paths.xml @@ -0,0 +1,3487 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/audio/r_submix_audio_policy_configuration.xml b/audio/r_submix_audio_policy_configuration.xml new file mode 100644 index 0000000..dc2a5ec --- /dev/null +++ b/audio/r_submix_audio_policy_configuration.xml @@ -0,0 +1,47 @@ + + + + + + Remote Submix In + + + + + + + + + + + + + + + + + + + + + + diff --git a/audio/usb_audio_policy_configuration.xml b/audio/usb_audio_policy_configuration.xml new file mode 100644 index 0000000..a487ecb --- /dev/null +++ b/audio/usb_audio_policy_configuration.xml @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/board-info.txt b/board-info.txt new file mode 100644 index 0000000..37b974c --- /dev/null +++ b/board-info.txt @@ -0,0 +1 @@ +require version-vendor=1604929553 diff --git a/compatibility_matrix.xml b/compatibility_matrix.xml new file mode 100644 index 0000000..ee4832e --- /dev/null +++ b/compatibility_matrix.xml @@ -0,0 +1,92 @@ + + + + android.frameworks.schedulerservice + 1.0 + + ISchedulingPolicyService + default + + + + android.frameworks.sensorservice + 1.0 + + ISensorManager + default + + + + android.hidl.allocator + 1.0 + + IAllocator + ashmem + + + + android.hidl.manager + 1.0 + + IServiceManager + default + + + + android.hidl.memory + 1.0 + + IMapper + ashmem + + + + android.hidl.token + 1.0 + + ITokenManager + default + + + + android.system.wifi.keystore + 1.0 + + IKeystore + default + + + + com.motorola.hardware.display.panel + 1.0 + + IDisplayPanel + default + + + + motorola.hardware.vibrator + 1.0 + + IMotVibrator + default + + + + vendor.qti.hardware.sigma_miracast + 1.0 + + Isigma_miracast + sigmahal + + + + 29 + + + 29 + + diff --git a/configs/excluded-input-devices.xml b/configs/excluded-input-devices.xml new file mode 100644 index 0000000..32aac2c --- /dev/null +++ b/configs/excluded-input-devices.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/configs/msm_irqbalance.conf b/configs/msm_irqbalance.conf new file mode 100644 index 0000000..5cbe8b2 --- /dev/null +++ b/configs/msm_irqbalance.conf @@ -0,0 +1,9 @@ +################################################################################################################################ +# Copyright (c) 2019 Qualcomm Technologies, Inc. +# All Rights Reserved. +# Confidential and Proprietary - Qualcomm Technologies, Inc. +################################################################################################################################ + +PRIO=1,1,1,1,0,0,0,0 +#arch_timer, arm-pmu, arch_mem_timer +IGNORED_IRQ=19,22,39 diff --git a/configs/privapp-permissions-qti.xml b/configs/privapp-permissions-qti.xml new file mode 100644 index 0000000..959b1fa --- /dev/null +++ b/configs/privapp-permissions-qti.xml @@ -0,0 +1,113 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/configs/public.libraries.txt b/configs/public.libraries.txt new file mode 100644 index 0000000..0023b13 --- /dev/null +++ b/configs/public.libraries.txt @@ -0,0 +1,10 @@ +libqti-perfd-client.so +libadsprpc.so +libcdsprpc.so +libsdsprpc.so +libfastcvopt.so +liblistenjni.so +liblistensoundmodel2.so +libOpenCL.so +libnpu.so +libhta_hexagon_runtime.so diff --git a/configs/qti_whitelist.xml b/configs/qti_whitelist.xml new file mode 100644 index 0000000..0d1acdb --- /dev/null +++ b/configs/qti_whitelist.xml @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/configs/sec_config b/configs/sec_config new file mode 100644 index 0000000..4825eb2 --- /dev/null +++ b/configs/sec_config @@ -0,0 +1,331 @@ +/* IPC Security Config */ +/* :: */ +16:4294967295:1000:1021:1026 +/* :: */ +75:4294967295:1000:1001:3006 +/* :: */ +56:4294967295:1021 +/* Allow SS CTL service to be used by system and net_raw processes */ +43:4294967295:1000:3004 +/* :: */ +71:4294967295:1001 +/* :: */ +50:4294967295:1001 +/* QMI-SLIM service permitted to gps and net_raw */ +55:4294967295:1021 +/* Allow Sensor services to be used by sensor process */ +256:4294967295:1000:1006:1013:1021:1047:3011 +257:4294967295:1000:1006:1013:1021:1047:3011 +258:4294967295:1000:1006:1013:1021:1047:3011 +259:4294967295:1000:1006:1013:1021:1047:3011 +260:4294967295:1000:1006:1013:1021:1047:3011 +261:4294967295:1000:1006:1013:1021:1047:3011 +262:4294967295:1000:1006:1013:1021:1047:3011 +263:4294967295:1000:1006:1013:1021:1047:3011 +264:4294967295:1000:1006:1013:1021:1047:3011 +265:4294967295:1000:1006:1013:1021:1047:3011 +266:4294967295:1000:1006:1013:1021:1047:3011 +267:4294967295:1000:1006:1013:1021:1047:3011 +268:4294967295:1000:1006:1013:1021:1047:3011 +269:4294967295:1000:1006:1013:1021:1047:3011 +270:4294967295:1000:1006:1013:1021:1047:3011 +271:4294967295:1000:1006:1013:1021:1047:3011 +272:4294967295:1000:1006:1013:1021:1047:3011 +273:4294967295:1000:1006:1013:1021:1047:3011 +274:4294967295:1000:1006:1013:1021:1047:3011 +275:4294967295:1000:1006:1013:1021:1047:3011 +276:4294967295:1000:1006:1013:1021:1047:3011 +277:4294967295:1000:1006:1013:1021:1047:3011 +278:4294967295:1000:1006:1013:1021:1047:3011 +279:4294967295:1000:1006:1013:1021:1047:3011 +280:4294967295:1000:1006:1013:1021:1047:3011 +281:4294967295:1000:1006:1013:1021:1047:3011 +282:4294967295:1000:1006:1013:1021:1047:3011 +283:4294967295:1000:1006:1013:1021:1047:3011 +284:4294967295:1000:1006:1013:1021:1047:3011 +285:4294967295:1000:1006:1013:1021:1047:3011 +286:4294967295:1000:1006:1013:1021:1047:3011 +287:4294967295:1000:1006:1013:1021:1047:3011 +288:4294967295:1000:1006:1013:1021:1047:3011 +289:4294967295:1000:1006:1013:1021:1047:3011 +290:4294967295:1000:1006:1013:1021:1047:3011 +291:4294967295:1000:1006:1013:1021:1047:3011 +292:4294967295:1000:1006:1013:1021:1047:3011 +293:4294967295:1000:1006:1013:1021:1047:3011 +294:4294967295:1000:1006:1013:1021:1047:3011 +295:4294967295:1000:1006:1013:1021:1047:3011 +296:4294967295:1000:1006:1013:1021:1047:3011 +297:4294967295:1000:1006:1013:1021:1047:3011 +298:4294967295:1000:1006:1013:1021:1047:3011 +299:4294967295:1000:1006:1013:1021:1047:3011 +300:4294967295:1000:1006:1013:1021:1047:3011 +301:4294967295:1000:1006:1013:1021:1047:3011 +302:4294967295:1000:1006:1013:1021:1047:3011 +303:4294967295:1000:1006:1013:1021:1047:3011 +304:4294967295:1000:1006:1013:1021:1047:3011 +305:4294967295:1000:1006:1013:1021:1047:3011 +306:4294967295:1000:1006:1013:1021:1047:3011 +307:4294967295:1000:1006:1013:1021:1047:3011 +308:4294967295:1000:1006:1013:1021:1047:3011 +309:4294967295:1000:1006:1013:1021:1047:3011 +310:4294967295:1000:1006:1013:1021:1047:3011 +311:4294967295:1000:1006:1013:1021:1047:3011 +312:4294967295:1000:1006:1013:1021:1047:3011 +313:4294967295:1000:1006:1013:1021:1047:3011 +314:4294967295:1000:1006:1013:1021:1047:3011 +315:4294967295:1000:1006:1013:1021:1047:3011 +316:4294967295:1000:1006:1013:1021:1047:3011 +317:4294967295:1000:1006:1013:1021:1047:3011 +318:4294967295:1000:1006:1013:1021:1047:3011 +319:4294967295:1000:1006:1013:1021:1047:3011 +320:4294967295:1000:1006:1013:1021:1047:3011 +321:4294967295:1000:1006:1013:1021:1047:3011 +322:4294967295:1000:1006:1013:1021:1047:3011 +323:4294967295:1000:1006:1013:1021:1047:3011 +324:4294967295:1000:1006:1013:1021:1047:3011 +325:4294967295:1000:1006:1013:1021:1047:3011 +326:4294967295:1000:1006:1013:1021:1047:3011 +327:4294967295:1000:1006:1013:1021:1047:3011 +328:4294967295:1000:1006:1013:1021:1047:3011 +329:4294967295:1000:1006:1013:1021:1047:3011 +330:4294967295:1000:1006:1013:1021:1047:3011 +331:4294967295:1000:1006:1013:1021:1047:3011 +332:4294967295:1000:1006:1013:1021:1047:3011 +333:4294967295:1000:1006:1013:1021:1047:3011 +334:4294967295:1000:1006:1013:1021:1047:3011 +335:4294967295:1000:1006:1013:1021:1047:3011 +336:4294967295:1000:1006:1013:1021:1047:3011 +337:4294967295:1000:1006:1013:1021:1047:3011 +338:4294967295:1000:1006:1013:1021:1047:3011 +339:4294967295:1000:1006:1013:1021:1047:3011 +340:4294967295:1000:1006:1013:1021:1047:3011 +341:4294967295:1000:1006:1013:1021:1047:3011 +342:4294967295:1000:1006:1013:1021:1047:3011 +343:4294967295:1000:1006:1013:1021:1047:3011 +344:4294967295:1000:1006:1013:1021:1047:3011 +345:4294967295:1000:1006:1013:1021:1047:3011 +346:4294967295:1000:1006:1013:1021:1047:3011 +347:4294967295:1000:1006:1013:1021:1047:3011 +348:4294967295:1000:1006:1013:1021:1047:3011 +349:4294967295:1000:1006:1013:1021:1047:3011 +350:4294967295:1000:1006:1013:1021:1047:3011 +351:4294967295:1000:1006:1013:1021:1047:3011 +352:4294967295:1000:1006:1013:1021:1047:3011 +353:4294967295:1000:1006:1013:1021:1047:3011 +354:4294967295:1000:1006:1013:1021:1047:3011 +355:4294967295:1000:1006:1013:1021:1047:3011 +356:4294967295:1000:1006:1013:1021:1047:3011 +357:4294967295:1000:1006:1013:1021:1047:3011 +358:4294967295:1000:1006:1013:1021:1047:3011 +359:4294967295:1000:1006:1013:1021:1047:3011 +360:4294967295:1000:1006:1013:1021:1047:3011 +361:4294967295:1000:1006:1013:1021:1047:3011 +362:4294967295:1000:1006:1013:1021:1047:3011 +363:4294967295:1000:1006:1013:1021:1047:3011 +364:4294967295:1000:1006:1013:1021:1047:3011 +365:4294967295:1000:1006:1013:1021:1047:3011 +366:4294967295:1000:1006:1013:1021:1047:3011 +367:4294967295:1000:1006:1013:1021:1047:3011 +368:4294967295:1000:1006:1013:1021:1047:3011 +369:4294967295:1000:1006:1013:1021:1047:3011 +370:4294967295:1000:1006:1013:1021:1047:3011 +371:4294967295:1000:1006:1013:1021:1047:3011 +372:4294967295:1000:1006:1013:1021:1047:3011 +373:4294967295:1000:1006:1013:1021:1047:3011 +374:4294967295:1000:1006:1013:1021:1047:3011 +375:4294967295:1000:1006:1013:1021:1047:3011 +376:4294967295:1000:1006:1013:1021:1047:3011 +377:4294967295:1000:1006:1013:1021:1047:3011 +378:4294967295:1000:1006:1013:1021:1047:3011 +379:4294967295:1000:1006:1013:1021:1047:3011 +380:4294967295:1000:1006:1013:1021:1047:3011 +381:4294967295:1000:1006:1013:1021:1047:3011 +382:4294967295:1000:1006:1013:1021:1047:3011 +383:4294967295:1000:1006:1013:1021:1047:3011 +384:4294967295:1000:1006:1013:1021:1047:3011 +385:4294967295:1000:1006:1013:1021:1047:3011 +386:4294967295:1000:1006:1013:1021:1047:3011 +387:4294967295:1000:1006:1013:1021:1047:3011 +388:4294967295:1000:1006:1013:1021:1047:3011 +389:4294967295:1000:1006:1013:1021:1047:3011 +390:4294967295:1000:1006:1013:1021:1047:3011 +391:4294967295:1000:1006:1013:1021:1047:3011 +392:4294967295:1000:1006:1013:1021:1047:3011 +393:4294967295:1000:1006:1013:1021:1047:3011 +394:4294967295:1000:1006:1013:1021:1047:3011 +395:4294967295:1000:1006:1013:1021:1047:3011 +396:4294967295:1000:1006:1013:1021:1047:3011 +397:4294967295:1000:1006:1013:1021:1047:3011 +398:4294967295:1000:1006:1013:1021:1047:3011 +399:4294967295:1000:1006:1013:1021:1047:3011 +400:4294967295:1000:1006:1013:1021:1047:3011 +401:4294967295:1000:1006:1013:1021:1047:3011 +402:4294967295:1000:1006:1013:1021:1047:3011 +403:4294967295:1000:1006:1013:1021:1047:3011 +404:4294967295:1000:1006:1013:1021:1047:3011 +405:4294967295:1000:1006:1013:1021:1047:3011 +406:4294967295:1000:1006:1013:1021:1047:3011 +407:4294967295:1000:1006:1013:1021:1047:3011 +408:4294967295:1000:1006:1013:1021:1047:3011 +409:4294967295:1000:1006:1013:1021:1047:3011 +410:4294967295:1000:1006:1013:1021:1047:3011 +411:4294967295:1000:1006:1013:1021:1047:3011 +412:4294967295:1000:1006:1013:1021:1047:3011 +413:4294967295:1000:1006:1013:1021:1047:3011 +414:4294967295:1000:1006:1013:1021:1047:3011 +415:4294967295:1000:1006:1013:1021:1047:3011 +416:4294967295:1000:1006:1013:1021:1047:3011 +417:4294967295:1000:1006:1013:1021:1047:3011 +418:4294967295:1000:1006:1013:1021:1047:3011 +419:4294967295:1000:1006:1013:1021:1047:3011 +420:4294967295:1000:1006:1013:1021:1047:3011 +421:4294967295:1000:1006:1013:1021:1047:3011 +422:4294967295:1000:1006:1013:1021:1047:3011 +423:4294967295:1000:1006:1013:1021:1047:3011 +424:4294967295:1000:1006:1013:1021:1047:3011 +425:4294967295:1000:1006:1013:1021:1047:3011 +426:4294967295:1000:1006:1013:1021:1047:3011 +427:4294967295:1000:1006:1013:1021:1047:3011 +428:4294967295:1000:1006:1013:1021:1047:3011 +429:4294967295:1000:1006:1013:1021:1047:3011 +430:4294967295:1000:1006:1013:1021:1047:3011 +431:4294967295:1000:1006:1013:1021:1047:3011 +432:4294967295:1000:1006:1013:1021:1047:3011 +433:4294967295:1000:1006:1013:1021:1047:3011 +434:4294967295:1000:1006:1013:1021:1047:3011 +435:4294967295:1000:1006:1013:1021:1047:3011 +436:4294967295:1000:1006:1013:1021:1047:3011 +437:4294967295:1000:1006:1013:1021:1047:3011 +438:4294967295:1000:1006:1013:1021:1047:3011 +439:4294967295:1000:1006:1013:1021:1047:3011 +440:4294967295:1000:1006:1013:1021:1047:3011 +441:4294967295:1000:1006:1013:1021:1047:3011 +442:4294967295:1000:1006:1013:1021:1047:3011 +443:4294967295:1000:1006:1013:1021:1047:3011 +444:4294967295:1000:1006:1013:1021:1047:3011 +445:4294967295:1000:1006:1013:1021:1047:3011 +446:4294967295:1000:1006:1013:1021:1047:3011 +447:4294967295:1000:1006:1013:1021:1047:3011 +448:4294967295:1000:1006:1013:1021:1047:3011 +449:4294967295:1000:1006:1013:1021:1047:3011 +450:4294967295:1000:1006:1013:1021:1047:3011 +451:4294967295:1000:1006:1013:1021:1047:3011 +452:4294967295:1000:1006:1013:1021:1047:3011 +453:4294967295:1000:1006:1013:1021:1047:3011 +454:4294967295:1000:1006:1013:1021:1047:3011 +455:4294967295:1000:1006:1013:1021:1047:3011 +456:4294967295:1000:1006:1013:1021:1047:3011 +457:4294967295:1000:1006:1013:1021:1047:3011 +458:4294967295:1000:1006:1013:1021:1047:3011 +459:4294967295:1000:1006:1013:1021:1047:3011 +460:4294967295:1000:1006:1013:1021:1047:3011 +461:4294967295:1000:1006:1013:1021:1047:3011 +462:4294967295:1000:1006:1013:1021:1047:3011 +463:4294967295:1000:1006:1013:1021:1047:3011 +464:4294967295:1000:1006:1013:1021:1047:3011 +465:4294967295:1000:1006:1013:1021:1047:3011 +466:4294967295:1000:1006:1013:1021:1047:3011 +467:4294967295:1000:1006:1013:1021:1047:3011 +468:4294967295:1000:1006:1013:1021:1047:3011 +469:4294967295:1000:1006:1013:1021:1047:3011 +470:4294967295:1000:1006:1013:1021:1047:3011 +471:4294967295:1000:1006:1013:1021:1047:3011 +472:4294967295:1000:1006:1013:1021:1047:3011 +473:4294967295:1000:1006:1013:1021:1047:3011 +474:4294967295:1000:1006:1013:1021:1047:3011 +475:4294967295:1000:1006:1013:1021:1047:3011 +476:4294967295:1000:1006:1013:1021:1047:3011 +477:4294967295:1000:1006:1013:1021:1047:3011 +478:4294967295:1000:1006:1013:1021:1047:3011 +479:4294967295:1000:1006:1013:1021:1047:3011 +480:4294967295:1000:1006:1013:1021:1047:3011 +481:4294967295:1000:1006:1013:1021:1047:3011 +482:4294967295:1000:1006:1013:1021:1047:3011 +483:4294967295:1000:1006:1013:1021:1047:3011 +484:4294967295:1000:1006:1013:1021:1047:3011 +485:4294967295:1000:1006:1013:1021:1047:3011 +486:4294967295:1000:1006:1013:1021:1047:3011 +487:4294967295:1000:1006:1013:1021:1047:3011 +488:4294967295:1000:1006:1013:1021:1047:3011 +489:4294967295:1000:1006:1013:1021:1047:3011 +490:4294967295:1000:1006:1013:1021:1047:3011 +491:4294967295:1000:1006:1013:1021:1047:3011 +492:4294967295:1000:1006:1013:1021:1047:3011 +493:4294967295:1000:1006:1013:1021:1047:3011 +494:4294967295:1000:1006:1013:1021:1047:3011 +495:4294967295:1000:1006:1013:1021:1047:3011 +496:4294967295:1000:1006:1013:1021:1047:3011 +497:4294967295:1000:1006:1013:1021:1047:3011 +498:4294967295:1000:1006:1013:1021:1047:3011 +499:4294967295:1000:1006:1013:1021:1047:3011 +500:4294967295:1000:1006:1013:1021:1047:3011 +501:4294967295:1000:1006:1013:1021:1047:3011 +502:4294967295:1000:1006:1013:1021:1047:3011 +503:4294967295:1000:1006:1013:1021:1047:3011 +504:4294967295:1000:1006:1013:1021:1047:3011 +505:4294967295:1000:1006:1013:1021:1047:3011 +506:4294967295:1000:1006:1013:1021:1047:3011 +507:4294967295:1000:1006:1013:1021:1047:3011 +508:4294967295:1000:1006:1013:1021:1047:3011 +509:4294967295:1000:1006:1013:1021:1047:3011 +510:4294967295:1000:1006:1013:1021:1047:3011 +511:4294967295:1000:1006:1013:1021:1047:3011 +/* Allow RCS service to aquire net_raw permission */ +18:4294967295:1001:3004 +/* Allow RCS service to communicate to IMS QMI Priv Svc*/ +77:4294967295:1001:3003 +/* Allow SSGQMIGD to communicate to SSGCCS service*/ +76:4294967295:1001 +/* Allow cnd to accquire netbind */ +18:4294967295:1000:3003 +/* Allow QMID service to aquire net_raw permission */ +3:4294967295:1001:1021:3004 +2:4294967295:1000:1001:3004 +42:4294967295:1001:3004 +18:4294967295:1001:3004 +9:4294967295:1001:3004 +1:4294967295:1001:3004:1000 +4:4294967295:1001:3004 +7:4294967295:1001:3004 +8:4294967295:1001:3004:1000 +68:4294967295:1001:3004 +/* DPM */ +47:4294967295:1001:3004 +/* Allow communication to some QMI services with radio privilages */ +/* Format is :: */ +/* PBM */ +12:4294967295:1001 +/* WMS */ +5:4294967295:1001 +/* IMS VT */ +32:4294967295:1001 +/* IMSP */ +31:4294967295:1001 +/* PDC */ +36:4294967295:1001 +/* SAR */ +17:4294967295:1001 +/* RFRPE */ +41:4294967295:1001 +/*UIM*/ +11:4294967295:1001 +/*CAT*/ +10:4294967295:1001 +/*IMSA*/ +33:4294967295:1001 +/* CSVT */ +29:4294967295:1001 +/*SERVREG_NOTIF*/ +64:4294967295:1001 +66:4294967295:1001 +73:4294967295:1001 +/*LTE*/ +70:4294967295:1001 +/* Allow Data dpmd to access QMI DFS */ +48:4294967295:1000:3004 +/* DIAG */ +4097:4294967295:2002:2950:3009:2901 +/* :: */ +69:4294967295:1000 +/* :: */ +57:4294967295:1000 diff --git a/configs/telephony_product_privapp-permissions-qti.xml b/configs/telephony_product_privapp-permissions-qti.xml new file mode 100644 index 0000000..282854c --- /dev/null +++ b/configs/telephony_product_privapp-permissions-qti.xml @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/device.mk b/device.mk new file mode 100644 index 0000000..b2a6672 --- /dev/null +++ b/device.mk @@ -0,0 +1,198 @@ +# Audio +PRODUCT_COPY_FILES += \ + $(LOCAL_PATH)/audio/Bluetooth_split_audio_V1.cfg:$(TARGET_COPY_OUT_VENDOR)/etc/Bluetooth_split_audio_V1.cfg \ + $(LOCAL_PATH)/audio/MM_audio_playback_capture_v2.0.cfg:$(TARGET_COPY_OUT_VENDOR)/etc/MM_audio_playback_capture_v2.0.cfg \ + $(LOCAL_PATH)/audio/a2dp_audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/a2dp_audio_policy_configuration.xml \ + $(LOCAL_PATH)/audio/audio_effects.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_effects.xml \ + $(LOCAL_PATH)/audio/audio_ext_spkr.conf:$(TARGET_COPY_OUT_VENDOR)/etc/audio_ext_spkr.conf \ + $(LOCAL_PATH)/audio/audio_platform_info.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_platform_info.xml \ + $(LOCAL_PATH)/audio/audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_policy_configuration.xml \ + $(LOCAL_PATH)/audio/audio_policy_volumes.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_policy_volumes.xml \ + $(LOCAL_PATH)/audio/mixer_paths.xml:$(TARGET_COPY_OUT_VENDOR)/etc/mixer_paths.xml \ + $(LOCAL_PATH)/audio/r_submix_audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/r_submix_audio_policy_configuration.xml \ + $(LOCAL_PATH)/audio/usb_audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/usb_audio_policy_configuration.xml \ + +# Exclude sensor from InputManager +PRODUCT_COPY_FILES += \ + $(LOCAL_PATH)/configs/excluded-input-devices.xml:system/etc/excluded-input-devices.xml \ + +# GPS +PRODUCT_COPY_FILES += \ + $(LOCAL_PATH)/gps/apdr.conf:$(TARGET_COPY_OUT_VENDOR)/etc/apdr.conf \ + $(LOCAL_PATH)/gps/flp.conf:$(TARGET_COPY_OUT_VENDOR)/etc/flp.conf \ + $(LOCAL_PATH)/gps/gps.conf:$(TARGET_COPY_OUT_VENDOR)/etc/gps.conf \ + $(LOCAL_PATH)/gps/izat.conf:$(TARGET_COPY_OUT_VENDOR)/etc/izat.conf \ + $(LOCAL_PATH)/gps/lowi.conf:$(TARGET_COPY_OUT_VENDOR)/etc/lowi.conf \ + $(LOCAL_PATH)/gps/sap.conf:$(TARGET_COPY_OUT_VENDOR)/etc/sap.conf \ + $(LOCAL_PATH)/gps/xtwifi.conf:$(TARGET_COPY_OUT_VENDOR)/etc/xtwifi.conf \ + +# IDC +PRODUCT_COPY_FILES += \ + $(LOCAL_PATH)/idc/uinput-fpc.idc:$(TARGET_COPY_OUT_VENDOR)/usr/idc/uinput-fpc.idc \ + +# IRQ +PRODUCT_COPY_FILES += \ + $(LOCAL_PATH)/configs/msm_irqbalance.conf:$(TARGET_COPY_OUT_VENDOR)/etc/msm_irqbalance.conf \ + +# IRSC +PRODUCT_COPY_FILES += \ + $(LOCAL_PATH)/configs/sec_config:$(TARGET_COPY_OUT_VENDOR)/etc/sec_config \ + +# Keylayout +PRODUCT_COPY_FILES += \ + $(LOCAL_PATH)/keylayout/gpio-keys.kl:$(TARGET_COPY_OUT_VENDOR)/usr/keylayout/gpio-keys.kl \ + $(LOCAL_PATH)/keylayout/uinput-fpc.kl:$(TARGET_COPY_OUT_VENDOR)/usr/keylayout/uinput-fpc.kl \ + +# Low power Whitelist +PRODUCT_COPY_FILES += \ + $(LOCAL_PATH)/configs/qti_whitelist.xml:system/etc/sysconfig/qti_whitelist.xml \ + +# Media +PRODUCT_COPY_FILES += \ + $(LOCAL_PATH)/media/media_codecs.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs.xml \ + $(LOCAL_PATH)/media/media_codecs_google_audio.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_google_audio.xml \ + $(LOCAL_PATH)/media/media_codecs_google_c2.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_google_c2.xml \ + $(LOCAL_PATH)/media/media_codecs_google_c2_audio.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_google_c2_audio.xml \ + $(LOCAL_PATH)/media/media_codecs_google_c2_video.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_google_c2_video.xml \ + $(LOCAL_PATH)/media/media_codecs_google_telephony.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_google_telephony.xml \ + $(LOCAL_PATH)/media/media_codecs_google_video.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_google_video.xml \ + $(LOCAL_PATH)/media/media_codecs_google_video_le.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_google_video_le.xml \ + $(LOCAL_PATH)/media/media_codecs_performance.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_performance.xml \ + $(LOCAL_PATH)/media/media_codecs_performance_v1.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_performance_v1.xml \ + $(LOCAL_PATH)/media/media_codecs_performance_v2.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_performance_v2.xml \ + $(LOCAL_PATH)/media/media_codecs_vendor.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_vendor.xml \ + $(LOCAL_PATH)/media/media_codecs_vendor_audio.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_vendor_audio.xml \ + $(LOCAL_PATH)/media/media_codecs_vendor_v1.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_vendor_v1.xml \ + $(LOCAL_PATH)/media/media_codecs_vendor_v2.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_codecs_vendor_v2.xml \ + $(LOCAL_PATH)/media/media_profiles.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_profiles.xml \ + $(LOCAL_PATH)/media/media_profiles_V1_0.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_profiles_V1_0.xml \ + $(LOCAL_PATH)/media/media_profiles_scuba.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_profiles_scuba.xml \ + $(LOCAL_PATH)/media/media_profiles_vendor.xml:$(TARGET_COPY_OUT_VENDOR)/etc/media_profiles_vendor.xml \ + $(LOCAL_PATH)/media/system_properties.xml:$(TARGET_COPY_OUT_VENDOR)/etc/system_properties.xml \ + +# Overlays +DEVICE_PACKAGE_OVERLAYS += \ + $(LOCAL_PATH)/overlay + $(LOCAL_PATH)/overlay-lineage + +# Permissions +PRODUCT_COPY_FILES += \ + frameworks/native/data/etc/android.hardware.bluetooth.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.bluetooth.xml \ + frameworks/native/data/etc/android.hardware.bluetooth_le.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.bluetooth_le.xml \ + frameworks/native/data/etc/android.hardware.camera.flash-autofocus.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.camera.flash-autofocus.xml \ + frameworks/native/data/etc/android.hardware.camera.front.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.camera.front.xml \ + frameworks/native/data/etc/android.hardware.camera.full.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.camera.full.xml \ + frameworks/native/data/etc/android.hardware.camera.raw.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.camera.raw.xml \ + frameworks/native/data/etc/android.hardware.fingerprint.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.fingerprint.xml \ + frameworks/native/data/etc/android.hardware.location.gps.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.location.gps.xml \ + frameworks/native/data/etc/android.hardware.opengles.aep.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.opengles.aep.xml \ + frameworks/native/data/etc/android.hardware.sensor.accelerometer.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.sensor.accelerometer.xml \ + frameworks/native/data/etc/android.hardware.sensor.barometer.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.sensor.barometer.xml \ + frameworks/native/data/etc/android.hardware.sensor.compass.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.sensor.compass.xml \ + frameworks/native/data/etc/android.hardware.sensor.gyroscope.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.sensor.gyroscope.xml \ + frameworks/native/data/etc/android.hardware.sensor.light.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.sensor.light.xml \ + frameworks/native/data/etc/android.hardware.sensor.proximity.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.sensor.proximity.xml \ + frameworks/native/data/etc/android.hardware.sensor.stepcounter.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.sensor.stepcounter.xml \ + frameworks/native/data/etc/android.hardware.sensor.stepdetector.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.sensor.stepdetector.xml \ + frameworks/native/data/etc/android.hardware.telephony.cdma.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.telephony.cdma.xml \ + frameworks/native/data/etc/android.hardware.telephony.gsm.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.telephony.gsm.xml \ + frameworks/native/data/etc/android.hardware.telephony.ims.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.telephony.ims.xml \ + frameworks/native/data/etc/android.hardware.touchscreen.multitouch.jazzhand.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.touchscreen.multitouch.jazzhand.xml \ + frameworks/native/data/etc/android.hardware.usb.accessory.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.usb.accessory.xml \ + frameworks/native/data/etc/android.hardware.usb.host.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.usb.host.xml \ + frameworks/native/data/etc/android.hardware.vulkan.compute-0.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.vulkan.compute-0.xml \ + frameworks/native/data/etc/android.hardware.vulkan.level-1.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.vulkan.level-1.xml \ + frameworks/native/data/etc/android.hardware.vulkan.version-1_1.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.vulkan.version-1_1.xml \ + frameworks/native/data/etc/android.hardware.wifi.direct.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.wifi.direct.xml \ + frameworks/native/data/etc/android.hardware.wifi.passpoint.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.wifi.passpoint.xml \ + frameworks/native/data/etc/android.hardware.wifi.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.wifi.xml \ + frameworks/native/data/etc/android.software.device_id_attestation.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.device_id_attestation.xml \ + frameworks/native/data/etc/android.software.ipsec_tunnels.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.ipsec_tunnels.xml \ + frameworks/native/data/etc/android.software.midi.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.midi.xml \ + frameworks/native/data/etc/android.software.sip.voip.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.sip.voip.xml \ + frameworks/native/data/etc/handheld_core_hardware.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/handheld_core_hardware.xml \ + +# Public Libraries +PRODUCT_COPY_FILES += \ + $(LOCAL_PATH)/configs/public.libraries.txt:$(TARGET_COPY_OUT_VENDOR)/etc/public.libraries.txt \ + +# QTI +PRODUCT_COPY_FILES += \ + $(LOCAL_PATH)/configs/privapp-permissions-qti.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/privapp-permissions-qti.xml \ + +# Ramdisk +PRODUCT_PACKAGES += \ + apanic_annotate.sh \ + apanic_copy.sh \ + apanic_save.sh \ + hardware_revisions.sh \ + init.class_main.sh \ + init.crda.sh \ + init.gbmods.sh \ + init.mdm.sh \ + init.mmi.block_perm.sh \ + init.mmi.boot.sh \ + init.mmi.laser.sh \ + init.mmi.mdlog-getlogs.sh \ + init.mmi.modules.sh \ + init.mmi.shutdown.sh \ + init.mmi.touch.sh \ + init.mmi.usb.sh \ + init.mmi.wlan-getlogs.sh \ + init.oem.fingerprint.sh \ + init.oem.fingerprint2.sh \ + init.oem.hw.sh \ + init.qcom.class_core.sh \ + init.qcom.coex.sh \ + init.qcom.crashdata.sh \ + init.qcom.early_boot.sh \ + init.qcom.efs.sync.sh \ + init.qcom.post_boot.sh \ + init.qcom.sdio.sh \ + init.qcom.sensors.sh \ + init.qcom.sh \ + init.qti.chg_policy.sh \ + init.qti.fm.sh \ + init.qti.ims.sh \ + init.qti.media.sh \ + pstore_annotate.sh \ + qca6234-service.sh \ + init.mmi.charge_only.rc \ + init.mmi.chipset.rc \ + init.mmi.debug.rc \ + init.mmi.diag.rc \ + init.mmi.diag_mdlog.rc \ + init.mmi.overlay.rc \ + init.mmi.rc \ + init.mmi.tcmd.rc \ + init.mmi.usb.rc \ + init.mmi.wlan.rc \ + init.qcom.factory.rc \ + init.qcom.rc \ + init.target.rc \ + fstab.qcom \ + ueventd.qcom.rc \ + +# Seccomp +PRODUCT_COPY_FILES += \ + $(LOCAL_PATH)/seccomp/configstore@1.1.policy:$(TARGET_COPY_OUT_VENDOR)/etc/seccomp_policy/configstore@1.1.policy \ + $(LOCAL_PATH)/seccomp/mediacodec.policy:$(TARGET_COPY_OUT_VENDOR)/etc/seccomp_policy/mediacodec.policy \ + +# Sensors +PRODUCT_COPY_FILES += \ + $(LOCAL_PATH)/sensors/hals.conf:$(TARGET_COPY_OUT_VENDOR)/etc/sensors/hals.conf \ + +# WiFi +PRODUCT_COPY_FILES += \ + $(LOCAL_PATH)/wifi/WCNSS_qcom_cfg.ini:$(TARGET_COPY_OUT_VENDOR)/etc/wifi/WCNSS_qcom_cfg.ini \ + $(LOCAL_PATH)/wifi/aoa_cldb_falcon.bin:$(TARGET_COPY_OUT_VENDOR)/etc/wifi/aoa_cldb_falcon.bin \ + $(LOCAL_PATH)/wifi/aoa_cldb_swl14.bin:$(TARGET_COPY_OUT_VENDOR)/etc/wifi/aoa_cldb_swl14.bin \ + $(LOCAL_PATH)/wifi/icm.conf:$(TARGET_COPY_OUT_VENDOR)/etc/wifi/icm.conf \ + $(LOCAL_PATH)/wifi/p2p_supplicant_overlay.conf:$(TARGET_COPY_OUT_VENDOR)/etc/wifi/p2p_supplicant_overlay.conf \ + $(LOCAL_PATH)/wifi/wigig_p2p_supplicant.conf:$(TARGET_COPY_OUT_VENDOR)/etc/wifi/wigig_p2p_supplicant.conf \ + $(LOCAL_PATH)/wifi/wigig_supplicant.conf:$(TARGET_COPY_OUT_VENDOR)/etc/wifi/wigig_supplicant.conf \ + $(LOCAL_PATH)/wifi/wpa_supplicant.conf:$(TARGET_COPY_OUT_VENDOR)/etc/wifi/wpa_supplicant.conf \ + $(LOCAL_PATH)/wifi/wpa_supplicant_overlay.conf:$(TARGET_COPY_OUT_VENDOR)/etc/wifi/wpa_supplicant_overlay.conf \ + +# Inherit vendor +$(call inherit-product, vendor/motorola/guamp/guamp-vendor.mk) diff --git a/framework_compatibility_matrix.xml b/framework_compatibility_matrix.xml new file mode 100644 index 0000000..d9164df --- /dev/null +++ b/framework_compatibility_matrix.xml @@ -0,0 +1,781 @@ + + + + android.hardware.automotive.evs + 1.0 + + IEvsEnumerator + EvsEnumeratorHw + EvsEnumeratorHw-Mock + default + + + + android.hardware.gnss + 1.0-1 + 2.0 + + IGnss + default + + + + android.hardware.gnss + 1.0-1 + 2.0 + + IGnss + gnss_vendor + + + + android.hardware.media.c2 + 1.0 + + IComponentStore + default + software + + + + android.hardware.nfc + 1.0 + + INfc + default + + + + android.hardware.radio + 1.0-4 + + IRadio + slot1 + slot2 + + + ISap + slot1 + slot2 + + + + android.hardware.radio.config + 1.0-1 + + IRadioConfig + default + + + + android.hardware.wifi.supplicant + 1.0-2 + + ISupplicant + default + wigigp2p + + + + com.motorola.hardware.display.panel + 1.0 + + IDisplayPanel + default + + + + com.qualcomm.qti.ant + 1.0 + + IAntHci + default + + + + com.qualcomm.qti.imscmservice + 2.0-2 + + IImsCmService + qti.ims.connectionmanagerservice + + + + com.qualcomm.qti.uceservice + 2.0-1 + + IUceService + com.qualcomm.qti.uceservice + + + + com.qualcomm.qti.wifidisplayhal + 1.0 + + IDSManager + wifidisplaydshal + + + IHDCPSession + wifidisplayhdcphal + + + + com.quicinc.cne.api + 1.0-1 + + IApiService + cnd + + + + com.quicinc.cne.server + 2.0-2 + + IServer + cnd + + + + motorola.hardware.camera.imgtuner + 1.0 + + IImageTuning + default + + + + vendor.display.color + 1.0-5 + + IDisplayColor + default + + + + vendor.display.config + 1.0-15 + + IDisplayConfig + default + + + + vendor.display.postproc + 1.0 + + IDisplayPostproc + default + + + + vendor.nxp.hardware.nfc + 1.0-1 + + INqNfc + default + + + + vendor.qti.automotive.qcarcam + 1.0 + + IQcarCamera + default + + + + vendor.qti.data.factory + 1.0 + 2.0-1 + + IFactory + default + + + + vendor.qti.dvr + 1.0 + + IDvrDisplay + default + + + + vendor.qti.esepowermanager + 1.0 + + IEsePowerManager + default + + + + vendor.qti.gnss + 1.0-2 + 2.0-1 + 3.0 + + ILocHidlGnss + gnss_vendor + + + + vendor.qti.hardware.alarm + 1.0 + + IAlarm + default + + + + vendor.qti.hardware.audiohalext + 1.0 + + IAudioHalExt + default + + + + vendor.qti.hardware.bluetooth_audio + 2.0 + + IBluetoothAudioProvidersFactory + default + + + + vendor.qti.hardware.bluetooth_dun + 1.0 + + IBluetoothDunServer + default + + + + vendor.qti.hardware.bluetooth_sar + 1.0 + + IBluetoothSar + default + + + + vendor.qti.hardware.btconfigstore + 1.0 + + IBTConfigStore + default + + + + vendor.qti.hardware.cacert + 1.0 + + IService + default + + + + vendor.qti.hardware.camera.postproc + 1.0 + + IPostProcService + camerapostprocservice + + + + vendor.qti.hardware.capabilityconfigstore + 1.0 + + ICapabilityConfigStore + default + + + + vendor.qti.hardware.cryptfshw + 1.0 + + ICryptfsHw + default + + + + vendor.qti.hardware.cvp + 1.0 + + ICvp + cvphalservice + + + + vendor.qti.hardware.data.connection + 1.0-1 + + IDataConnection + slot1 + slot2 + + + + vendor.qti.hardware.data.iwlan + 1.0 + + IIWlan + slot1 + slot2 + + + + vendor.qti.hardware.data.latency + 1.0 + + ILinkLatency + default + + + + vendor.qti.hardware.display.allocator + 1.0 + 3.0 + + IQtiAllocator + default + + + + vendor.qti.hardware.display.composer + 2.0-1 + + IQtiComposer + default + + + + vendor.qti.hardware.display.mapper + 2.0 + 3.0 + + IQtiMapper + default + + + + vendor.qti.hardware.embmssl + 1.0-1 + + IEmbms + embmsslServer0 + + + + vendor.qti.hardware.factory + 1.0-1 + + IFactory + default + + + + vendor.qti.hardware.fingerprint + 1.0 + + IQtiExtendedFingerprint + default + + + + vendor.qti.hardware.fm + 1.0 + + IFmHci + default + + + + vendor.qti.hardware.fstman + 1.0 + + IFstManager + default + + + + vendor.qti.hardware.improvetouch.blobmanager + 1.0 + + IBlobManager + BlobManagerService + + + + vendor.qti.hardware.improvetouch.gesturemanager + 1.0 + + IGestureManager + GestureManagerService + + + + vendor.qti.hardware.improvetouch.touchcompanion + 1.0 + + ITouchCompanion + TouchCompanionService + + + + vendor.qti.hardware.iop + 2.0 + + IIop + default + + + + vendor.qti.hardware.perf + 2.0-1 + + IPerf + default + + + + vendor.qti.hardware.qdutils_disp + 1.0 + + IQdutilsDisp + default + + + + vendor.qti.hardware.qseecom + 1.0 + + IQSEECom + default + + + + vendor.qti.hardware.qteeconnector + 1.0 + + IAppConnector + default + + + IGPAppConnector + default + + + + vendor.qti.hardware.radio.am + 1.0 + + IQcRilAudio + slot1 + slot2 + + + + vendor.qti.hardware.radio.ims + 1.0-6 + + IImsRadio + imsradio0 + imsradio1 + + + + vendor.qti.hardware.radio.internal.deviceinfo + 1.0 + + IDeviceInfo + deviceinfo + + + + vendor.qti.hardware.radio.lpa + 1.0 + + IUimLpa + UimLpa0 + UimLpa1 + + + + vendor.qti.hardware.radio.qcrilhook + 1.0 + + IQtiOemHook + oemhook0 + oemhook1 + + + + vendor.qti.hardware.radio.qtiradio + 1.0 + 2.0-4 + + IQtiRadio + slot1 + slot2 + + + + vendor.qti.hardware.radio.uim + 1.1-2 + + IUim + Uim0 + Uim1 + + + + vendor.qti.hardware.radio.uim_remote_client + 1.0 + + IUimRemoteServiceClient + uimRemoteClient0 + uimRemoteClient1 + + + + vendor.qti.hardware.radio.uim_remote_server + 1.0 + + IUimRemoteServiceServer + uimRemoteServer0 + uimRemoteServer1 + + + + vendor.qti.hardware.scve.objecttracker + 1.0 + + IObjectTracker + objectTracker + + + + vendor.qti.hardware.scve.panorama + 1.0 + + IPanoramaStitching + panoStitching + + + IPanoramaTracking + panoTracking + + + + vendor.qti.hardware.seccam + 1.0 + + ISecCam + default + + + + vendor.qti.hardware.sensorscalibrate + 1.0 + + ISensorsCalibrate + default + + + + vendor.qti.hardware.servicetracker + 1.0-1 + + IServicetracker + default + + + + vendor.qti.hardware.slmadapter + 1.0 + + ISlmAdapter + SlmAdapter + + + + vendor.qti.hardware.soter + 1.0 + + ISoter + default + + + + vendor.qti.hardware.systemhelper + 1.0 + + ISystemEvent + default + + + ISystemResource + default + + + + vendor.qti.hardware.trustedui + 1.0 + + ITrustedInput + default + + + ITrustedUI + default + + + + vendor.qti.hardware.tui_comm + 1.0 + + ITuiComm + default + + + + vendor.qti.hardware.vpp + 1.1-3 + + IHidlVppService + vppService + + + + vendor.qti.hardware.wifi.hostapd + 1.0-2 + + IHostapdVendor + default + + + + vendor.qti.hardware.wifi.supplicant + 2.0 + + ISupplicantVendor + default + + + + vendor.qti.hardware.wifi.wifilearner + 1.0 + + IWifiStats + wifiStats + + + + vendor.qti.hardware.wifidisplaysession + 1.0 + + IWifiDisplaySession + wifidisplaysession + + + IWifiDisplaySessionAudioTrack + wifidisplaysessionaudiotrack + + + IWifiDisplaySessionImageTrack + wifidisplaysessionimagetrack + + + IWifiDisplaySessionVideoTrack + wifidisplaysessionvideotrack + + + + vendor.qti.hardware.wigig.netperftuner + 1.0 + + INetPerfTuner + default + + + + vendor.qti.hardware.wigig.supptunnel + 1.0 + + ISuppTunnelProvider + default + + + + vendor.qti.hardware.wipower + 1.0 + + IWipower + default + + + + vendor.qti.ims.callinfo + 1.0 + + IService + default + + + + vendor.qti.imsrtpservice + 2.0-1 + + IRTPService + imsrtpservice + + + + vendor.qti.power.pasrmanager + 1.0 + + IPasrManager + default + + + + vendor.qti.qspmhal + 1.0 + + IQspmhal + default + + + + vendor.qti.spu + 1.0 + + ISPUManager + default + + + + vendor.qti.voiceprint + 1.0 + + IQtiVoicePrintService + default + + + + 30 + 26.0 + 27.0 + 28.0 + 29.0 + + + 1.0 + + diff --git a/gps/apdr.conf b/gps/apdr.conf new file mode 100644 index 0000000..ce5ba78 --- /dev/null +++ b/gps/apdr.conf @@ -0,0 +1,205 @@ +# AP DR SENSOR Configuration file +# +# SENSOR_SERVICE options are one of below +# accel,gyro,vehicle_accel,vehicle_gyro,pedometer,vehicle_odometry,accel_temp, +# gyro_temp,baro,mag_calib,mag_uncalib,amd,rmd. +# +# SENSOR_PROVIDER options is one of -- default,native,ssc,samlite. +# +# SENSOR_RATE = 1~100 (Hz) +# +# SENSOR_SAMPLES = 1~N +# +# SENSOR_STATISTIC_ENABLED +# bit 0: Diag Print Enabled +# bit 1: Adb Print Enabled +# SENSOR_STATISTIC_PRINT_COUNT +# Skip Number of Print +# +# QDR_DYNAMIC_LOADING = 1~3 +# Configure QDR library to be loaded +# 1: QDR3 +# 2: QDR2-GYRO +# 3: QDR2-DWT +# +# + + +###################################### +# # +# Default Configuration # +# (GNSS only,QDR Disabled) # +# # +# For QDR enablement, comment # +# this section and enabled # +# either QDR3 OR # +# QDR2-DWT OR QDR2-Gyro related # +# configuration section in below. # +# # +###################################### + +SENSOR_SERVICE = accel +SENSOR_PROVIDER = native +SENSOR_RATE = 100 +SENSOR_SAMPLES = 1 + +SENSOR_SERVICE = gyro +SENSOR_PROVIDER = native +SENSOR_RATE = 100 +SENSOR_SAMPLES = 1 + +SENSOR_SERVICE = vehicle_gear +SENSOR_PROVIDER = native +SENSOR_RATE = 100 +SENSOR_SAMPLES = 1 + + +###################################### +# # +# QDR3 Configuration # +# # +# For QDR3, # +# comment default configuration above# +# and # +# uncomment below configuration # +# settings. # +# # +###################################### +# +#SENSOR_SERVICE = accel +#SENSOR_PROVIDER = native +#SENSOR_RATE = 10 +#SENSOR_SAMPLES = 10 +# +#SENSOR_SERVICE = vehicle_speed +#SENSOR_PROVIDER = native +#SENSOR_RATE = 100 +#SENSOR_SAMPLES = 1 +# +#SENSOR_SERVICE = gyro +#SENSOR_PROVIDER = native +#SENSOR_RATE = 10 +#SENSOR_SAMPLES = 10 +# +#SENSOR_SERVICE = vehicle_gear +#SENSOR_PROVIDER = native +#SENSOR_RATE = 100 +#SENSOR_SAMPLES = 1 +# +# +##Enable/disable sensor data flashback feature +#QDR_FLASHBACK_ENABLED = 0 +##Configure QDR library to be loaded 1: QDR3 2: QDR2-GYRO 3: QDR2-DWS +#QDR_DYNAMIC_LOADING = 1 +##Enable/disable sensor data batching feature +#QDR_BATCHING_ENABLED = 2 +##Reporting offset before PPS boundary +#QDR_REPORTING_OFFSET = 0 +##Sensor dispatch threshold declaration +#QDR_SENSDISPATCH_MS = 30 +# + +###################################### +# # +# QDR2-DWT Configuration # +# # +# For QDR2-DWT, # +# comment default configuration above# +# and # +# uncomment below configuration # +# settings. # +# # +###################################### +# +#SENSOR_SERVICE = vehicle_speed +#SENSOR_PROVIDER = native +#SENSOR_RATE = 100 +#SENSOR_SAMPLES = 1 +#SENSOR_STATISTIC_ENABLED = 3 +#SENSOR_STATISTIC_PRINT_COUNT = 50 +# +#SENSOR_SERVICE = vehicle_dws +#SENSOR_PROVIDER = native +#SENSOR_RATE = 100 +#SENSOR_SAMPLES = 1 +#SENSOR_STATISTIC_ENABLED = 3 +#SENSOR_STATISTIC_PRINT_COUNT = 50 +# +#SENSOR_SERVICE = vehicle_gear +#SENSOR_PROVIDER = native +#SENSOR_RATE = 100 +#SENSOR_SAMPLES = 1 +#SENSOR_STATISTIC_ENABLED = 3 +#SENSOR_STATISTIC_PRINT_COUNT = 50 +# +#GNSS_POS_STATISTIC_ENABLED = 3 +#GNSS_POS_STATISTIC_PRNTCNT = 10 +#GNSS_MSR_STATISTIC_ENABLED = 3 +#GNSS_MSR_STATISTIC_PRNTCNT = 10 +# +##Enable/disable sensor data flashback feature +#QDR_FLASHBACK_ENABLED = 0 +##Configure QDR library to be loaded 1: QDR3 2: QDR2-GYRO 3: QDR2-DWS +#QDR_DYNAMIC_LOADING = 3 +##Enable/disable sensor data batching feature +#QDR_BATCHING_ENABLED = 0 +##Reporting offset before PPS boundary +#QDR_REPORTING_OFFSET = 0 +##Sensor dispatch threshold declaration +#QDR_SENSDISPATCH_MS = 30 +##QDR_ENABLE_QG shall be set as 1 +#QDR_ENABLE_QG = 1 +##Select Wheel set (E.g.: Front two wheels, Rear two wheels OR All four wheels) +##To be used for differential wheel tick OR speed service. +##This configuration is applicable when QDR_CAN_TYPE configured as +##ODO_DWS(3) or ODO_DWT(2). +##Value "0": Use Front two wheels +##Value "1": Use Rear two wheels +##Value "2": Use All four wheels +#QG_DRIVE_WHEEL_FW_RW_AW = 2 +##Max Wheel tick value above which wheel tick rolls over +##This configuration is applicable when QDR_CAN_TYPE configured as ODO_DWT(2) +#QG_DWT_MAX_WHEEL_TICK_COUNT = 255.0 +##Configure Wheel constant for DWT based below equation +##(2 * pi * WHEEL_RADIUS / Pulses Per revolution) +##This configuration is applicable when QDR_CAN_TYPE configured as ODO_DWT(2) +#QG_DWT_WHEEL_CONSTANT = 0.044 + +###################################### +# # +# QDR2-GYRO Configuration # +# # +# For QDR2-GYRO, # +# comment default configuration above# +# and # +# uncomment below configuration # +# settings. # +# # +###################################### +# +#SENSOR_SERVICE = vehicle_speed +#SENSOR_PROVIDER = native +#SENSOR_RATE = 100 +#SENSOR_SAMPLES = 1 +# +#SENSOR_SERVICE = vehicle_gyro +#SENSOR_PROVIDER = native +#SENSOR_RATE = 100 +#SENSOR_SAMPLES = 1 +# +#SENSOR_SERVICE = vehicle_gear +#SENSOR_PROVIDER = native +#SENSOR_RATE = 100 +#SENSOR_SAMPLES = 1 +# +##Enable/disable sensor data flashback feature +#QDR_FLASHBACK_ENABLED = 0 +##Configure QDR library to be loaded 1: QDR3 2: QDR2-GYRO 3: QDR2-DWS +#QDR_DYNAMIC_LOADING = 2 +##Enable/disable sensor data batching feature +#QDR_BATCHING_ENABLED = 0 +##Reporting offset before PPS boundary +#QDR_REPORTING_OFFSET = 0 +##Sensor dispatch threshold declaration +#QDR_SENSDISPATCH_MS = 30 +# diff --git a/gps/flp.conf b/gps/flp.conf new file mode 100644 index 0000000..65d54d3 --- /dev/null +++ b/gps/flp.conf @@ -0,0 +1,60 @@ +################################### +##### FLP settings ##### +################################### + +################################### +# FLP BATCH SIZE +################################### +# The number of batched locations +# requested to modem. The desired number +# defined below may not be satisfied, as +# the modem can only return the number +# of batched locations that can be allocated, +# which is limited by memory. The default +# batch size defined as 20 as below. +BATCH_SIZE=20 + +################################### +# FLP OUTDOOR TRIP BATCH SIZE +################################### +# The number of batched locations +# requested to modem for outdoor +# trip batching. The desired number +# defined below may not be satisfied, as +# the modem can only return the number +# of batched locations that can be allocated, +# which is limited by memory. The default +# trip batch size defined as 600 as below. +OUTDOOR_TRIP_BATCH_SIZE=600 + +################################### +# FLP BATCHING SESSION TIMEOUT +################################### +# Duration with which batch session timeout +# happens in milliseconds. If not specified +# or set to zero, batching session timeout +# defaults to 20 seconds by the modem. +# BATCH_SESSION_TIMEOUT=20000 + +################################### +# FLP BATCHING ACCURACY +################################### +# Set to one of the defined values below +# to define the accuracy of batching. +# If not specified, accuracy defaults +# to LOW. +# FLP BATCHING ACCURACY values: +# Low accuracy = 0 +# Medium accuracy = 1 +# High accuracy = 2 +ACCURACY=1 + +#################################### +# By default if network fixes are not sensor assisted +# these fixes must be dropped. This parameter adds an exception +# for targets where there is no PDR and we still want to +# report out network fixes +# 0: MUST NOT ALLOW NETWORK FIXES +# 1: ALLOW NETWORK FIXES +#################################### +ALLOW_NETWORK_FIXES = 0 diff --git a/gps/gps.conf b/gps/gps.conf new file mode 100644 index 0000000..5e67c9b --- /dev/null +++ b/gps/gps.conf @@ -0,0 +1,313 @@ +#hardware/qcom/gps/loc_api/conf/gps.conf + +NI_SUPL_DENY_ON_NFW_LOCKED = 1 + +##################################### +# proxyAppPackageName +##################################### +# This is a string that is sent to the framework +# in nfwNotifyCb callback +# Add NFW package name +PROXY_APP_PACKAGE_NAME = com.motorola.nfwlocationattribution + +#Version check for XTRA +#DISABLE = 0 +#AUTO = 1 +#XTRA2 = 2 +#XTRA3 = 3 +XTRA_VERSION_CHECK=0 + +# Error Estimate +# _SET = 1 +# _CLEAR = 0 +ERR_ESTIMATE=0 + +#NTP server +NTP_SERVER=time.izatcloud.net + +#XTRA CA path +XTRA_CA_PATH=/usr/lib/ssl/certs + +# DEBUG LEVELS: 0 - none, 1 - Error, 2 - Warning, 3 - Info +# 4 - Debug, 5 - Verbose +# If DEBUG_LEVEL is commented, Android's logging levels will be used +DEBUG_LEVEL = 2 + +# Intermediate position report, 1=enable, 0=disable +#INTERMEDIATE_POS=0 + +# supl version 1.0 +#SUPL_VER=0x10000 + +# Emergency SUPL, 1=enable, 0=disable +#SUPL_ES=1 + +#Choose PDN for Emergency SUPL +#1 - Use emergency PDN +#0 - Use regular SUPL PDN for Emergency SUPL +#USE_EMERGENCY_PDN_FOR_EMERGENCY_SUPL=0 + +#SUPL_MODE is a bit mask set in config.xml per carrier by default. +#If it is uncommented here, this value will overwrite the value from +#config.xml. +#MSA=0X2 +#MSB=0X1 +#SUPL_MODE= + +# GPS Capabilities bit mask +# SCHEDULING = 0x01 +# MSB = 0x02 +# MSA = 0x04 +# ON_DEMAND_TIME = 0x10 +# default = ON_DEMAND_TIME | MSA | MSB | SCHEDULING +CAPABILITIES=0x77 + +# Accuracy threshold for intermediate positions +# less accurate positions are ignored, 0 for passing all positions +# ACCURACY_THRES=5000 + +################################ +##### AGPS server settings ##### +################################ + +# FOR SUPL SUPPORT, set the following +# SUPL_HOST=supl.host.com or IP +# SUPL_PORT=1234 + +# FOR MO SUPL SUPPORT, set the following +# MO_SUPL_HOST=supl.host.com or IP +# MO_SUPL_PORT=1234 + +# FOR C2K PDE SUPPORT, set the following +# C2K_HOST=c2k.pde.com or IP +# C2K_PORT=1234 + +# Bitmask of slots that are available +# for write/install to, where 1s indicate writable, +# and the default value is 0 where no slots +# are writable. For example, AGPS_CERT_WRITABLE_MASK +# of b1000001010 makes 3 slots available +# and the remaining 7 slots unwritable. +#AGPS_CERT_WRITABLE_MASK=0 + +#################################### + # LTE Positioning Profile Settings +#################################### +# 0: Enable RRLP on LTE(Default) +# 1: Enable LPP_User_Plane on LTE +# 2: Enable CP LPP, UP RRLP +# 3: Enable both LPP_User_Plane and LPP_Control_Plane +# 4: Enable CP LPP and LPPe DBH, UP RRLP (TMO) +# 5: Enable CP & UP - LPP and LPPe DBH (VzW) +# 6: Enable CP LPP and LPPe DBH, LPPe WLAN, UP RRLP (TMO) +# 7: Enable CP & UP - LPP and LPPe DBH, LPPe WLAN (VzW) +# 8: Enable CP LPP and LPPe DBH, LPPe WLAN, LPPe UBP, UP RRLP (TMO) +# 9: Enable CP & UP - LPP and LPPe DBH, LPPe WLAN, LPPe UBP(VzW) +# 10: Enable CP LPP and LPPe DBH, UP LPP - disable UP LPPe(AT&T ) +# 11: Enable CP LPP and LPPe DBH/WLAN, UP LPP - disable UP LPPe (AT&T) +# 12: Enable CP LPP and LPPe DBH/WLAN/UBP, UP LPP - disable UP LPPe (AT&T) +#LPP_PROFILE = 2 + +#################################### +#Datum Type +#################################### +# 0: WGS-84 +# 1: PZ-90 +#DATUM_TYPE = 0 + +################################ +# EXTRA SETTINGS +################################ +# NMEA provider (1=Modem Processor, 0=Application Processor) +#NMEA_PROVIDER=0 +# Mark if it is a SGLTE target (1=SGLTE, 0=nonSGLTE) +#SGLTE_TARGET=0 + +################################################## +# Select Positioning Protocol on A-GLONASS system +################################################## +# 0x1: RRC CPlane +# 0x2: RRLP UPlane +# 0x4: LLP Uplane +#A_GLONASS_POS_PROTOCOL_SELECT = 0 +# +################################################## +# Select technology for LPPe Control Plane +################################################## +# 0x1: DBH for LPPe CP +# 0x2: WLAN AP Measurements for LPPe CP +# 0x4: SRN AP measurement for CP +# 0x8: Sensor Barometer Measurement LPPe CP +#LPPE_CP_TECHNOLOGY = 0 + +################################################## +# Select technology for LPPe User Plane +################################################## +# 0x1: DBH for LPPe UP +# 0x2: WLAN AP Measurements for LPPe UP +# 0x4: SRN AP measurement for UP +# 0x8: Sensor Barometer Measurement LPPe UP +#LPPE_UP_TECHNOLOGY = 0 + +################################################## +# AGPS_CONFIG_INJECT +################################################## +# enable/disable injection of AGPS configurations: +# SUPL_VER +# SUPL_HOST +# SUPL_PORT +# MO_SUPL_HOST +# MO_SUPL_PORT +# C2K_HOST +# C2K_PORT +# LPP_PROFILE +# A_GLONASS_POS_PROTOCOL_SELECT +# 0: disable +# 1: enable +#AGPS_CONFIG_INJECT = 1 + +################################################## +# GNSS settings for automotive use cases +# Configurations in following section are +# specific to automotive use cases, others +# please do not change, keep the default values +################################################## + +# AP Coarse Timestamp Uncertainty +################################################## +# default : 10 +# AP time stamp uncertainty, until GNSS receiver +# is able to acquire better timing information +#AP_TIMESTAMP_UNCERTAINTY = 10 + +################################################## +# QDR engine availability status +################################################## +# 0 : NO QDR (default) +# 1 : QDR enabled +# This settings enables QDR Configuration for +# automotive use case, if enabled then +# DR_AP_Service needs to be enabled in izat.conf +#EXTERNAL_DR_ENABLED = 0 + +##################################### +# DR_SYNC Pulse Availability +##################################### +# 0 : DR_SYNC pulse not available (default) +# 1 : DR_SYNC pulse available +# This configuration enables the driver to make use +# of PPS events generated by DR_SYNC pulse +# Standard Linux PPS driver needs to be enabled +#DR_SYNC_ENABLED = 0 + +##################################### +# PPS Device name +##################################### +#PPS_DEVICENAME = /dev/pps0 + +##################################### +# Ignore PPS at Startup and after long outage +##################################### +#IGNORE_PPS_PULSE_COUNT = 1 + +##################################### +# Long GNSS RF outage in seconds +##################################### +#GNSS_OUTAGE_DURATION = 10 + +##################################### +# AP Clock Accuracy +##################################### +# Quality of APPS processor clock (in PPM). +# Value specified is used for calculation of +# APPS time stamp uncertainty +#AP_CLOCK_PPM = 100 + +##################################### +# MAX ms difference to detect missing pulse +##################################### +# Specifies time threshold in ms to validate any missing PPS pulses +#MISSING_PULSE_TIME_DELTA = 900 + +##################################### +# Propagation time uncertainty +##################################### +# This settings enables time uncertainty propagation +# logic incase of missing PPS pulse +#PROPAGATION_TIME_UNCERTAINTY = 1 + +####################################### +# APN / IP Type Configuration +# APN and IP Type to use for setting +# up WWAN call. +# Use below values for IP Type: +# v4 = 4 +# v6 = 6 +# v4v6 = 10 +####################################### +# INTERNET_APN = abc.xyz +# INTERNET_IP_TYPE = 4 +# SUPL_APN = abc.xyz +# SUPL_IP_TYPE = 4 + +##################################### +# Modem type +##################################### +# This setting configures modem type +# (external=0 or internal=1) +# comment out the next line to vote +# for the first modem in the list +MODEM_TYPE = 1 + +################################################## +# CONSTRAINED TIME UNCERTAINTY MODE +################################################## +# 0 : disabled (default) +# 1 : enabled +# This setting enables GPS engine to keep its time +# uncertainty below the specified constraint +#CONSTRAINED_TIME_UNCERTAINTY_ENABLED = 0 + +# If constrained time uncertainty mode is enabled, +# this setting specifies the time uncertainty +# threshold that gps engine need to maintain. +# In unit of milli-seconds. +# Default is 0.0 meaning that modem default value +# of time uncertainty threshold will be used. +#CONSTRAINED_TIME_UNCERTAINTY_THRESHOLD = 0.0 + +# If constrained time uncertainty mode is enabled, +# this setting specifies the power budget that +# gps engine is allowed to spend to maintain the time +# uncertainty. +# Default is 0 meaning that GPS engine is not constained +# by power budget and can spend as much power as needed. +# In unit of 0.1 milli watt second. +#CONSTRAINED_TIME_UNCERTAINTY_ENERGY_BUDGET = 0 + +################################################## +# POSITION ASSISTED CLOCK ESTIMATOR +################################################## +# 0 : disabled (default) +# 1 : enabled +# This setting enables GPS engine to estimate clock +# bias and drift when the signal from at least 1 +# SV is available and the UEs position is known by +# other position engines. +#POSITION_ASSISTED_CLOCK_ESTIMATOR_ENABLED = 0 + +##################################### +# CP_MTLR_ES +##################################### +# CP MTLR ES, 1=enable, 0=disable +#CP_MTLR_ES=0 + +################################################## +# GNSS_DEPLOYMENT +################################################## +# 0 : Enable QTI GNSS (default) +# 1 : Enable QCSR SS5 +# This setting use to select between QTI GNSS +# and QCSR SS5 hardware receiver. +# By default QTI GNSS receiver is enabled. +# GNSS_DEPLOYMENT = 0 diff --git a/gps/izat.conf b/gps/izat.conf new file mode 100644 index 0000000..f6a3ad6 --- /dev/null +++ b/gps/izat.conf @@ -0,0 +1,282 @@ +######################################### +# Log verbosity control for izat modules +######################################### +# OFF = 0, ERROR = 1, WARNING = 2, INFO = 3, DEBUG = 4, VERBOSE = 5 +IZAT_DEBUG_LEVEL = 5 + +################################################## +# Select WIFI Wait Timeout value in seconds for SUPL +################################################## +WIFI_WAIT_TIMEOUT_SELECT = 0 + +################################################## +# Time interval of injecting SRN scan data to modem +# time in seconds. +# Note: recommended value is between 1-5 sec +################################################## +LPPE_SRN_DATA_SCAN_INJECT_TIME=2 + +################################################## +# Identify this target as OTA updated or new +# 0 - New target +# 1 - OTA updated +################################################## +OTA_UPDATED_TARGET=0 + +################################ +# NLP Settings +################################ +# NLP_MODE 1: OSNLP Only, 2: QNP Only, 3: Combo, 4: QNP preferred +# For Automotive products, please use NLP_MODE = 4 only. +# NLP_TOLERANCE_TIME_FIRST: Time in ms used in Combo mode +# to determine how much Tolerance for first position +# NLP_TOLERANCE_TIME_AFTER: Time in ms used in Combo mode +# to determine how much Tolerance for positions after first +# NLP_THRESHOLD: Sets how many failures needed before +# switching preferred NLP in Combo mode +# NLP_ACCURACY_MULTIPLE: Determines how far off the accuracy +# must be, in multiples, between two NLP location reports to +# be considered much worse accuracy. Used in switching logic +# NLP COMBO MODE USES QNP WITH NO EULA CONSENT: Determines +# whether or not to still send network location requests to +# QNP when the EULA is not consented to by the user. QNP can +# still return ZPP locations or injected locations even +# without EULA consent, but the uncertainty can be high. +# QNP preferred mode prefers QNP when there is EULA consent, +# otherwise OSNLP is used. +NLP_MODE = 1 +NLP_MODE_EMERGENCY = 2 +NLP_TOLERANCE_TIME_FIRST = 5000 +NLP_TOLERANCE_TIME_AFTER = 20000 +NLP_THRESHOLD = 3 +NLP_ACCURACY_MULTIPLE = 2 +NLP_COMBO_MODE_USES_QNP_WITH_NO_EULA_CONSENT = 1 + +######################################### +# NLP PACKAGE SETTINGS +######################################### +# OSNLP_PACKAGE: name of default NLP package +OSNLP_PACKAGE = com.google.android.gms +# REGION_OSNLP_PACKAGE: +# This value will be used as alternative +# for particular region where default NLP is not functional. +#REGION_OSNLP_PACKAGE = + +################################### +# GEOFENCE SERVICES +################################### +# If set to one of the defined values below, it will override +# the responsiveness for geofence services, which implements +# the Proximity Alert API. If not set to a value defined below, +# which is default, it will not override the responsivness. +# The geofence HAL API is unaffected by this value. +# GEOFENCE_SERVICES_RESPONSIVENESS_OVERRIDE Values: +# 1: LOW responsiveness +# 2: MEDIUM responsiveness +# 3: HIGH responsiveness +GEOFENCE_SERVICES_RESPONSIVENESS_OVERRIDE = 0 + +##################################### +#GTP Opt-In app +##################################### + +#GTP privacy policy version url +#https support is required +GTP_PRIVACY_VERSION_URL = https://info.izatcloud.net/privacy/version.html + +#GTP privacy policy version download retry interval +#unit is second. default is 86400 +GTP_PRIVACY_RETRY_INTERVAL = 86400 + +##################################### +# IZAT PREMIUM FEATURE SETTINGS +##################################### +#Possible states of a feature: +#DISABLED +#BASIC +#PREMIUM + +#GTP_MODE valid modes: +# DISABLED +# LEGACY_WWAN +# SDK (WWAN not available for Modems before LocTech 10.0) +GTP_MODE=DISABLED + +#GTP_WAA valid modes: +# DISABLED +# BASIC +GTP_WAA=DISABLED + +#SAP valid modes: +# DISABLED +# BASIC +# PREMIUM +# MODEM_DEFAULT +SAP=MODEM_DEFAULT + +#FREE_WIFI_SCAN_INJECT valid modes: +#DISABLED +#BASIC +FREE_WIFI_SCAN_INJECT=BASIC + +#SUPL_WIFI valid modes: +#DISABLED +#BASIC +SUPL_WIFI=BASIC + +#WIFI_SUPPLICANT_INFO valid modes: +#DISABLED +#BASIC +WIFI_SUPPLICANT_INFO=BASIC + +##################################### +# Location process launcher settings +##################################### + +# DO NOT MODIFY +# Modifying below attributes without +# caution can have serious implications. + +#Values for PROCESS_STATE: +# ENABLED +# DISABLED + +#Values for LOW_RAM_TARGETS: +# ENABLED +# DISABLED +# Property to enable/disable processes for low ram targets. Uses ro.config.low_ram property +# to identify low ram targets. + +#PROCESS_NAME +# Name of the executable file. + +#FEATURE MASKS: +# GTP-WIFI 0X03 +# GTP-MP-CELL 0xc00 +# GTP-WAA 0x100 +# SAP 0Xc0 +# ODCPI 0x1000 +# FREE_WIFI_SCAN_INJECT 0x2000 +# SUPL_WIFI 0x4000 +# WIFI_SUPPLICANT_INFO 0x8000 + +#Values for PLATFORMS can be: +#1. Any valid values obtained from ro.board.platform separated by single space. For example: msm8960 msm8226 +#2. 'all' or 'all exclude' -> for All platforms +#3. 'all exclude XXXX' -> All platforms exclude XXXX. For example: all exclude msm8937 + +#Values for SOC_IDS can be: +#1. Any valid values obtained from soc_id node separated by single space. For example: 339 386 436 +## soc_id value can be obtained from any one of below node: +## - /sys/devices/soc0/soc_id +## - /sys/devices/system/soc/soc0/id +#2. 'all' or 'all exclude' -> for All soc id's +#3. 'all exclude XXXX' -> All soc id's exclude XXXX. For example: all exclude 339 386 + +#Values for BASEBAND can be: +#1. Any valid values obtained from ro.baseband separated by single space. For example: sglte sglte2 +#2. 'all' or 'all exclude' -> for all basebands +#3. 'all exclude XXXX' -> All basebands exclude XXXX. For example: all exclude sglte +PROCESS_NAME=lowi-server +PROCESS_ARGUMENT= +PROCESS_STATE=ENABLED +PROCESS_GROUPS=gps wifi inet oem_2901 +PREMIUM_FEATURE=0 +IZAT_FEATURE_MASK=0xf303 +PLATFORMS=all +SOC_IDS=all +BASEBAND=all +LOW_RAM_TARGETS=DISABLED +HARDWARE_TYPE=all +VENDOR_ENHANCED_PROCESS=0 + +PROCESS_NAME=xtwifi-inet-agent +PROCESS_ARGUMENT= +PROCESS_STATE=ENABLED +PROCESS_GROUPS=inet gps +PREMIUM_FEATURE=1 +IZAT_FEATURE_MASK=0xc03 +PLATFORMS=all +SOC_IDS=all exclude 386 436 +BASEBAND=all +LOW_RAM_TARGETS=DISABLED +HARDWARE_TYPE=all +VENDOR_ENHANCED_PROCESS=1 + +PROCESS_NAME=xtwifi-client +PROCESS_ARGUMENT= +PROCESS_STATE=ENABLED +PROCESS_GROUPS=wifi inet gps system oem_2904 +PREMIUM_FEATURE=1 +IZAT_FEATURE_MASK=0xd03 +PLATFORMS=all +SOC_IDS=all exclude 386 436 +BASEBAND=all +LOW_RAM_TARGETS=DISABLED +HARDWARE_TYPE=all +VENDOR_ENHANCED_PROCESS=1 + +PROCESS_NAME=slim_daemon +PROCESS_ARGUMENT= +PROCESS_STATE=ENABLED +PROCESS_GROUPS=gps oem_2901 can plugdev diag sensors +PREMIUM_FEATURE=1 +IZAT_FEATURE_MASK=0xf0 +PLATFORMS=all +SOC_IDS=all exclude 386 436 +BASEBAND=all +LOW_RAM_TARGETS=DISABLED +HARDWARE_TYPE=all +VENDOR_ENHANCED_PROCESS=1 + +PROCESS_NAME=xtra-daemon +PROCESS_ARGUMENT= +PROCESS_STATE=ENABLED +PROCESS_GROUPS=inet gps system +PREMIUM_FEATURE=0 +IZAT_FEATURE_MASK=0 +PLATFORMS=all +SOC_IDS=all +BASEBAND=all +LOW_RAM_TARGETS=ENABLED +HARDWARE_TYPE=all +VENDOR_ENHANCED_PROCESS=0 + +######################################## +# Engine Service which host DRE module # +# To enable DRE engine service, change # +# PROCESS_STATE=ENABLED # +######################################## +PROCESS_NAME=engine-service +PROCESS_ARGUMENT=DRE-INT libloc_epDr.so +PROCESS_STATE=DISABLED +PROCESS_GROUPS=gps diag inet qwes oem_2901 system +PREMIUM_FEATURE=0 +IZAT_FEATURE_MASK=0 +PLATFORMS=all +SOC_IDS=all +BASEBAND=all +LOW_RAM_TARGETS=DISABLED +HARDWARE_TYPE=all +VENDOR_ENHANCED_PROCESS=1 + +######################################## +# Engine Service which host PPE module # +# To enable PPE engine service, change # +# PROCESS_STATE=ENABLED # +# and update process arugements # +# with PPE library name # +#PROCESS_ARGUMENT=PPE libepsimulator.so# +######################################## +PROCESS_NAME=engine-service +PROCESS_ARGUMENT=PPE libepsimulator.so +PROCESS_STATE=DISABLED +PROCESS_GROUPS=gps diag inet oem_2901 +PREMIUM_FEATURE=0 +IZAT_FEATURE_MASK=0 +PLATFORMS=all +SOC_IDS=all +BASEBAND=all +LOW_RAM_TARGETS=DISABLED +HARDWARE_TYPE=all +VENDOR_ENHANCED_PROCESS=1 diff --git a/gps/lowi.conf b/gps/lowi.conf new file mode 100644 index 0000000..5006b59 --- /dev/null +++ b/gps/lowi.conf @@ -0,0 +1,27 @@ +#*====*====*====*====*====*====*====*====*====*====*====*====*====*====*====* +# +# LOWI Config file +# +# GENERAL DESCRIPTION +# This file contains the config params for LOWI +# +# Copyright (c) 2019 Qualcomm Technologies, Inc. +# All Rights Reserved. +# Confidential and Proprietary - Qualcomm Technologies, Inc. +# +# 2012-2013 Qualcomm Atheros, Inc. +# All Rights Reserved. +# Qualcomm Atheros Confidential and Proprietary. +# +# Export of this technology or software is regulated by the U.S. Government. +# Diversion contrary to U.S. law prohibited. +#=============================================================================*/ + +# X86 ONLY - UBUNTU: +# Copy this file in the same directory where the executable is + +# Log level +# EL_LOG_OFF = 0, EL_ERROR = 1, EL_WARNING = 2, EL_INFO = 3, EL_DEBUG = 4, EL_VERBOSE = 5, EL_LOG_ALL = 100 +LOWI_LOG_LEVEL = 3 +LOWI_USE_LOWI_LP = 0 + diff --git a/gps/sap.conf b/gps/sap.conf new file mode 100644 index 0000000..a077b3c --- /dev/null +++ b/gps/sap.conf @@ -0,0 +1,161 @@ +################################ +# Sensor Settings +################################ +#The following parameters are optional. +#Internal defaults support MEMS sensors +#native to most handset devices. +#Device specific sensor characterization +#for improved performance is possible as +#described in SAP application notes. +#GYRO_BIAS_RANDOM_WALK= +#ACCEL_RANDOM_WALK_SPECTRAL_DENSITY= +#ANGLE_RANDOM_WALK_SPECTRAL_DENSITY= +#RATE_RANDOM_WALK_SPECTRAL_DENSITY= +#VELOCITY_RANDOM_WALK_SPECTRAL_DENSITY= + +# Sensor Sampling Rate Parameters for Low-Data Rate Filter (should be greater than 0) +# used in loc_eng_reinit +SENSOR_ACCEL_BATCHES_PER_SEC=2 +SENSOR_ACCEL_SAMPLES_PER_BATCH=5 +SENSOR_GYRO_BATCHES_PER_SEC=2 +SENSOR_GYRO_SAMPLES_PER_BATCH=5 +# Sensor Sampling Rate Parameters for High-Data Rate Filter (should be greater than 0) +SENSOR_ACCEL_BATCHES_PER_SEC_HIGH=4 +SENSOR_ACCEL_SAMPLES_PER_BATCH_HIGH=25 +SENSOR_GYRO_BATCHES_PER_SEC_HIGH=4 +SENSOR_GYRO_SAMPLES_PER_BATCH_HIGH=25 + +# Sensor Control Mode (0=AUTO, 1=FORCE_ON, 2=MODEM_DEFAULT) +# used in loc_eng_reinit +SENSOR_CONTROL_MODE=2 + +# Bit mask used to define which sensor algorithms are used. +# Setting each bit has the following definition: +# 0x1 - DISABLE_INS_POSITIONING_FILTER +# 0x0 - ENABLE_INS_POSITIONING_FILTER +SENSOR_ALGORITHM_CONFIG_MASK=0x1 + +#Vehicle Network Provider configuration + +#Service configuration strings +#The number before colon in VN_X items defines version of the format of the rest of the string +#VN_ACCEL_CFG=0:5 +#VN_GYRO_CFG=0:5.5 +#VN_ODOMETRY_CFG=0:2,4.5 + +################################################ +# QDR3 configurations # +################################################ +VN_SPEED_CFG=1:131,5,8,1,2,3,1,1,9,2,14,2 +VN_GEAR_CFG=1:422,20,4,0,4,1,9,0,1,2,3,4,5,6,7,8 + +################################################ +# QDR2-Gyro configurations # +################################################ +#VN_GYRO_CFG=1:555,0,1,0,0,0,0,-6.5,6.6066,-6.5,-1.00,2,6.607,6.6068,0,0,16,0.0002,0,16,0.0002,0,16,0.0002 +#VN_SPEED_CFG=1:555,0,0,1,2,1,0.01,0,56,8,48,8 +#VN_GEAR_CFG=1:555,16,4,0,1,1,9,0,1,2,3,4,5,6,7,8 + +################################################ +# QDR2-DWT configurations # +################################################ +#VN_SPEED_CFG=1:555,22,1,2,1,1,1,0,8,8,23,1,2,0,1,0,8,8,23,1 +#VN_GEAR_CFG=1:555,12,4,16,14,16,8,1,2,3,4,5,6,7,8 +#VN_DWS_CFG=1:555,0,0,1,3,1,1,0,0,8,0,0,8,8,0,0,16,8,0,0,24,8,0,0 +#VN_GYRO_CFG=1:555,40,16,1.0,40,16,1.0,40,16,1.0 + +##################################################################################### +# VNW service batching configuration strings # +# VNW provider will initialize default type as Time based batching # +# Each service batch value is configured to be 100 # +# VN_ACCEL_CFG_BATCH_VALUE will be treated as time in Ms if VN_CFG_BATCH_TYPE # +# is set to time based batching # +# VN_ACCEL_CFG_BATCH_VALUE will be treated as sample count if VN_CFG_BATCH_TYPE # +# is set to count based batching # +# Uncomment and update batch time /sample count as per selected batching type # +##################################################################################### +# Batching type +# 1 - Time based (default) +# 2 - Count based +#VN_CFG_BATCH_TYPE=1 + +#Vehicle Accel batching value, it can either accept time in milli seconds or sample count +#VN_ACCEL_CFG_BATCH_VALUE=100 + +#Vehicle Gyro batching value, it can either accept time in milli seconds or sample count +#VN_GYRO_CFG_BATCH_VALUE=100 + +#Vehicle Odo batching value, it can either accept time in milli seconds or sample count +#VN_ODOMETRY_CFG_BATCH_VALUE=100 + +#Vehicle Speed batching value, it can either accept time in milli seconds or sample count +#VN_SPEED_CFG_BATCH_VALUE=100 + +#Vehicle Gear batching value, it can either accept time in milli seconds or sample count +#VN_GEAR_CFG_BATCH_VALUE=100 + +#Vehicle DWS batching value, it can either accept time in milli seconds or sample count +#VN_DWS_CFG_BATCH_VALUE=100 +#################################################################################### + +#Procesors clock ratio: AP and CAN bus microcontroller +################################################ +# QDR3 configurations # +################################################ +VN_PROC_CLOCK_RATIO=1.0 + +################################################ +# QDR2-DWT OR QDR2-Gyro configurations # +################################################ +#VN_PROC_CLOCK_RATIO = 1.0 + +# Time source used by Sensor HAL +# Setting this value controls accuracy of location sensor services. +# 0 - Unknown +# 1 - CLOCK_BOOTTIME +# 2 - CLOCK_MONOTONIC +# 3 - CLOCK_REALTIME +# 4 - CLOCK_BOOTTIME using Alarm timer interface +NDK_PROVIDER_TIME_SOURCE=1 + +# Sensor Batching Configuration +# 0 - Time based +# 1 - Fixed count based +# 2 - Variable count based +COUNT_BASED_BATCHING=1 +SYNC_ONCE=0 + +#Sensor HAL Provider Configuration HAL Library name including path +################################################ +# # +# Configuration for BMI 160 Sensor # +# # +################################################ +SENSOR_TYPE=2 +SENSOR_HAL_LIB_PATH=/usr/lib/libbmi160sensors.so.1 + +################################################ +# # +# Configuration for ASM330 Sensor # +# # +################################################ +#SENSOR_TYPE=1 +#SENSOR_HAL_LIB_PATH=/usr/lib/libasm330sensors.so.1 + + +################################################ +# # +# Configuration for IAM20680 Sensor # +# # +################################################ +#SENSOR_TYPE=3 +#SENSOR_HAL_LIB_PATH=/usr/lib/libiam20680sensors.so.1 + + +################################################ +# # +# Configuration for SMI130 Sensor # +# # +################################################ +#SENSOR_TYPE=4 +#SENSOR_HAL_LIB_PATH=/usr/lib/libsmi130sensors.so.1 diff --git a/gps/xtwifi.conf b/gps/xtwifi.conf new file mode 100644 index 0000000..5d7df9e --- /dev/null +++ b/gps/xtwifi.conf @@ -0,0 +1,78 @@ +#GTP AP Project client core config file +# +#GENERAL DESCRIPTION +#This is used by client core +# +#Copyright (c) 2012-2014 Qualcomm Atheros, Inc. +#All Rights Reserved. +#Qualcomm Atheros Confidential and Proprietary. +# +#Copyright (c) 2017 Qualcomm Technologies, Inc. +#All Rights Reserved. +#Confidential and Proprietary - Qualcomm Technologies, Inc. + +############################################################################## +# non-IOT devices configuration items # +# For non-IOT devices, configure below configuration items # +# according to the app note: 80-NK218-1 and remove the configuration items # +# in section of "IOT devices configuration items". # +############################################################################## + +# ASN URI v2 to be used by some GTP AP modules that +# need to run with ASN URI v2 protocol. +XT_SERVER_ROOT_URL = https://gtp1.izatcloud.net:443/uds/v2 + +# ASN URI v3 to be used by GTP AP modules that +# can support ASN URI v3 protocol. +XT_SERVER_ROOT_URL_V3 = https://gtp1.izatcloud.net:443/uds/v3 + +# size, in bytes, of the cache on device +SIZE_BYTE_TOTAL_CACHE = 5000000 + +############################################################################## +# IOT devices configuration items # +# For IOT devices, configure below configuration items # +# according to the app note and remove the configuration items in section of # +# "non-IOT devices configuration items". # +############################################################################## + +# ASN URI v3 to be used by GTP AP modules that +# can support ASN URI v3 protocol. +# XT_SERVER_ROOT_URL_V3 = https://gtpma1.izatcloud.net:443/uds/v3 + +# 3: Wi-Fi APDB injection via Izat SDK. GTP server is not accessed +# for any GTP requests, instead notification is sent to Izat SDK. +# WiFi crowdsourcing module is disabled. +# 4: Wi-Fi APDB injection via Izat SDK. GTP server is not accessed +# for any GTP requests, instead notification is sent to Izat SDK. +# WiFi crowdsourcing module is active, also accessed via Izat SDK. +# GTP_AP_MODE = 4 + +# 1: MP cell features relies on GTP AP for either download or upload +# 0: MP cell features does not rely on GTP AP +# GTP_AP_NEEDED_BY_MP_CELL = 1 + +############################################################################## +# Configuration items applicable to all devices # +############################################################################## + +# Log verbosity control for most of the GTP WiFi system, including native and +# Java componenets +# OFF = 0, ERROR = 1, WARNING = 2, INFO = 3, DEBUG = 4, VERBOSE = 5, ALL = 100 +DEBUG_GLOBAL_LOG_LEVEL = 2 + +# this is used at the server side to distinguish uploads from different maker/model +# default "Qualcomm" +OEM_ID_IN_REQUEST_TO_SERVER = "Qualcomm" + +# this is used at the server side to distinguish uploads from different maker/model +# default "UNKNOWN" +MODEL_ID_IN_REQUEST_TO_SERVER = "UNKNOWN" + +############################################################################## +# Qualcomm Network Location Provider config # +############################################################################## + +# Accuracy Threshold for NLP position. Position exceeds thsi threshold will be filtered out. +# Default is 25000 meters. +LARGE_ACCURACY_THRESHOLD_TO_FILTER_NLP_POSITION = 25000 diff --git a/idc/uinput-fpc.idc b/idc/uinput-fpc.idc new file mode 100644 index 0000000..8412e48 --- /dev/null +++ b/idc/uinput-fpc.idc @@ -0,0 +1,16 @@ +# +# FPC1020 Touch sensor driver +# +# Copyright (c) 2013,2014 Fingerprint Cards AB +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License Version 2 +# as published by the Free Software Foundation. +# + +device.internal = 1 + +keyboard.layout = uinput-fpc +keyboard.builtIn = 1 +keyboard.orientationAware = 1 + diff --git a/keylayout/gpio-keys.kl b/keylayout/gpio-keys.kl new file mode 100644 index 0000000..c9fa75b --- /dev/null +++ b/keylayout/gpio-keys.kl @@ -0,0 +1,34 @@ +# Copyright (c) 2013, 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. + +key 115 VOLUME_UP +key 114 VOLUME_DOWN +key 102 HOME +key 217 ASSIST +key 528 FOCUS +key 766 CAMERA +key 158 BACK diff --git a/keylayout/uinput-fpc.kl b/keylayout/uinput-fpc.kl new file mode 100644 index 0000000..bbfe617 --- /dev/null +++ b/keylayout/uinput-fpc.kl @@ -0,0 +1,15 @@ +# +# FPC1020 Touch sensor driver +# +# Copyright (c) 2013,2014 Fingerprint Cards AB +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License Version 2 +# as published by the Free Software Foundation. +# + +# fpc1020 "finger present" +key 618 SYSTEM_NAVIGATION_DOWN +key 619 SYSTEM_NAVIGATION_UP +key 620 SYSTEM_NAVIGATION_RIGHT +key 621 SYSTEM_NAVIGATION_LEFT diff --git a/lineage_guamp.mk b/lineage_guamp.mk new file mode 100644 index 0000000..973b7d3 --- /dev/null +++ b/lineage_guamp.mk @@ -0,0 +1,23 @@ +# Inherit from those products. Most specific first. +$(call inherit-product, $(SRC_TARGET_DIR)/product/core_64_bit.mk) +$(call inherit-product, $(SRC_TARGET_DIR)/product/full_base_telephony.mk) + +# Inherit some common Lineage stuff +$(call inherit-product, vendor/lineage/config/common_full_phone.mk) + +# Inherit from guamp device +$(call inherit-product, $(LOCAL_PATH)/device.mk) + +PRODUCT_BRAND := motorola +PRODUCT_DEVICE := guamp +PRODUCT_MANUFACTURER := motorola +PRODUCT_NAME := lineage_guamp +PRODUCT_MODEL := moto g(9) play + +PRODUCT_GMS_CLIENTID_BASE := android-motorola +TARGET_VENDOR := motorola +TARGET_VENDOR_PRODUCT_NAME := guamp +PRODUCT_BUILD_PROP_OVERRIDES += PRIVATE_BUILD_DESC="msi-user 10 QP1A.191005.002 b961a release-keys" + +# Set BUILD_FINGERPRINT variable to be picked up by both system and vendor build.prop +BUILD_FINGERPRINT := motorola/msi/msi:10/QP1A.191005.002/b961a:user/release-keys diff --git a/manifest.xml b/manifest.xml new file mode 100644 index 0000000..ceb6d39 --- /dev/null +++ b/manifest.xml @@ -0,0 +1,800 @@ + + + + android.hardware.audio + hwbinder + 5.0 + + IDevicesFactory + default + + @5.0::IDevicesFactory/default + + + android.hardware.audio.effect + hwbinder + 5.0 + + IEffectsFactory + default + + @5.0::IEffectsFactory/default + + + android.hardware.biometrics.fingerprint + hwbinder + 2.1 + + IBiometricsFingerprint + default + + @2.1::IBiometricsFingerprint/default + + + android.hardware.bluetooth + hwbinder + 1.0 + + IBluetoothHci + default + + @1.0::IBluetoothHci/default + + + android.hardware.bluetooth.audio + hwbinder + 2.0 + + IBluetoothAudioProvidersFactory + default + + @2.0::IBluetoothAudioProvidersFactory/default + + + android.hardware.boot + hwbinder + 1.0 + + IBootControl + default + + @1.0::IBootControl/default + + + android.hardware.camera.provider + hwbinder + 2.4 + + ICameraProvider + legacy/0 + + @2.4::ICameraProvider/legacy/0 + + + android.hardware.configstore + hwbinder + 1.1 + + ISurfaceFlingerConfigs + default + + @1.1::ISurfaceFlingerConfigs/default + + + android.hardware.drm + hwbinder + 1.0 + + ICryptoFactory + default + + + IDrmFactory + default + + @1.0::ICryptoFactory/default + @1.0::IDrmFactory/default + @1.2::ICryptoFactory/clearkey + @1.2::ICryptoFactory/widevine + @1.2::IDrmFactory/clearkey + @1.2::IDrmFactory/widevine + + + android.hardware.gatekeeper + hwbinder + 1.0 + + IGatekeeper + default + + @1.0::IGatekeeper/default + + + android.hardware.health + hwbinder + 2.0 + + IHealth + default + + @2.0::IHealth/default + + + android.hardware.keymaster + hwbinder + 4.0 + + IKeymasterDevice + default + + @4.0::IKeymasterDevice/default + + + android.hardware.light + hwbinder + 2.0 + + ILight + default + + @2.0::ILight/default + + + android.hardware.media.omx + hwbinder + 1.0 + + IOmx + default + + + IOmxStore + default + + @1.0::IOmx/default + @1.0::IOmxStore/default + + + android.hardware.memtrack + hwbinder + 1.0 + + IMemtrack + default + + @1.0::IMemtrack/default + + + android.hardware.neuralnetworks + hwbinder + 1.2 + + IDevice + qti-default + qti-dsp + qti-gpu + + @1.2::IDevice/qti-default + @1.2::IDevice/qti-dsp + @1.2::IDevice/qti-gpu + + + android.hardware.nfc + hwbinder + 1.2 + + INfc + default + + @1.2::INfc/default + + + android.hardware.power + hwbinder + 1.2 + + IPower + default + + @1.2::IPower/default + + + android.hardware.radio + hwbinder + @1.2::ISap/slot1 + @1.2::ISap/slot2 + @1.4::IRadio/slot1 + @1.4::IRadio/slot2 + + + android.hardware.radio.config + hwbinder + 1.1 + + IRadioConfig + default + + @1.1::IRadioConfig/default + + + android.hardware.renderscript + passthrough + 1.0 + + IDevice + default + + @1.0::IDevice/default + + + android.hardware.secure_element + hwbinder + 1.0 + + ISecureElement + SIM1 + SIM2 + + @1.0::ISecureElement/SIM1 + @1.0::ISecureElement/SIM2 + + + android.hardware.sensors + hwbinder + 1.0 + + ISensors + default + + @1.0::ISensors/default + + + android.hardware.soundtrigger + hwbinder + 2.2 + + ISoundTriggerHw + default + + @2.2::ISoundTriggerHw/default + + + android.hardware.tetheroffload.config + hwbinder + 1.0 + + IOffloadConfig + default + + @1.0::IOffloadConfig/default + + + android.hardware.tetheroffload.control + hwbinder + 1.0 + + IOffloadControl + default + + @1.0::IOffloadControl/default + + + android.hardware.thermal + hwbinder + 1.0 + + IThermal + default + + @1.0::IThermal/default + + + android.hardware.vibrator + hwbinder + 1.0 + + IVibrator + default + + @1.0::IVibrator/default + + + android.hardware.wifi + hwbinder + 1.3 + + IWifi + default + + @1.3::IWifi/default + + + android.hardware.wifi.hostapd + hwbinder + 1.1 + + IHostapd + default + + @1.1::IHostapd/default + + + android.hardware.wifi.supplicant + hwbinder + 1.2 + + ISupplicant + default + + @1.2::ISupplicant/default + + + com.motorola.hardware.biometric.fingerprint + hwbinder + 1.0 + + IMotoFingerPrint + default + + @1.0::IMotoFingerPrint/default + + + com.motorola.hardware.display.panel + hwbinder + 1.0 + + IDisplayPanel + default + + @1.0::IDisplayPanel/default + + + com.qualcomm.qti.dpm.api + hwbinder + 1.0 + + IdpmQmi + dpmQmiService + + @1.0::IdpmQmi/dpmQmiService + + + com.qualcomm.qti.imscmservice + hwbinder + 2.2 + + IImsCmService + qti.ims.connectionmanagerservice + + @2.2::IImsCmService/qti.ims.connectionmanagerservice + + + com.qualcomm.qti.uceservice + hwbinder + 2.1 + + IUceService + com.qualcomm.qti.uceservice + + @2.1::IUceService/com.qualcomm.qti.uceservice + + + motorola.hardware.camera.imgtuner + hwbinder + 1.0 + + IImageTuning + default + + @1.0::IImageTuning/default + + + motorola.hardware.health + hwbinder + 2.0 + + IMotHealth + default + + @2.0::IMotHealth/default + + + motorola.hardware.vibrator + hwbinder + 1.0 + + IMotVibrator + default + + @1.0::IMotVibrator/default + + + motorola.hardware.wifi.supplicant + hwbinder + 1.0 + + ISupplicantMot + default + + @1.0::ISupplicantMot/default + + + vendor.qti.data.factory + hwbinder + 2.1 + + IFactory + default + + @2.1::IFactory/default + + + vendor.qti.hardware.alarm + hwbinder + 1.0 + + IAlarm + default + + @1.0::IAlarm/default + + + vendor.qti.hardware.bluetooth_audio + hwbinder + 2.0 + + IBluetoothAudioProvidersFactory + default + + @2.0::IBluetoothAudioProvidersFactory/default + + + vendor.qti.hardware.bluetooth_sar + hwbinder + 1.0 + + IBluetoothSar + default + + @1.0::IBluetoothSar/default + + + vendor.qti.hardware.btconfigstore + hwbinder + 1.0 + + IBTConfigStore + default + + @1.0::IBTConfigStore/default + + + vendor.qti.hardware.cacert + hwbinder + 1.0 + + IService + default + + @1.0::IService/default + + + vendor.qti.hardware.camera.postproc + hwbinder + 1.0 + + IPostProcService + camerapostprocservice + + @1.0::IPostProcService/camerapostprocservice + + + vendor.qti.hardware.capabilityconfigstore + hwbinder + 1.0 + + ICapabilityConfigStore + default + + @1.0::ICapabilityConfigStore/default + + + vendor.qti.hardware.data.connection + hwbinder + 1.1 + + IDataConnection + slot1 + slot2 + + @1.1::IDataConnection/slot1 + @1.1::IDataConnection/slot2 + + + vendor.qti.hardware.data.latency + hwbinder + 1.0 + + ILinkLatency + default + + @1.0::ILinkLatency/default + + + vendor.qti.hardware.factory + hwbinder + 1.1 + + IFactory + default + + @1.1::IFactory/default + + + vendor.qti.hardware.fm + hwbinder + 1.0 + + IFmHci + default + + @1.0::IFmHci/default + + + vendor.qti.hardware.iop + hwbinder + 2.0 + + IIop + default + + @2.0::IIop/default + + + vendor.qti.hardware.perf + hwbinder + 2.1 + + IPerf + default + + @2.1::IPerf/default + + + vendor.qti.hardware.qseecom + hwbinder + 1.0 + + IQSEECom + default + + @1.0::IQSEECom/default + + + vendor.qti.hardware.qteeconnector + hwbinder + 1.0 + + IAppConnector + default + + + IGPAppConnector + default + + @1.0::IAppConnector/default + @1.0::IGPAppConnector/default + + + vendor.qti.hardware.radio.am + hwbinder + 1.0 + + IQcRilAudio + slot1 + slot2 + + @1.0::IQcRilAudio/slot1 + @1.0::IQcRilAudio/slot2 + + + vendor.qti.hardware.radio.ims + hwbinder + 1.6 + + IImsRadio + imsradio0 + imsradio1 + + @1.6::IImsRadio/imsradio0 + @1.6::IImsRadio/imsradio1 + + + vendor.qti.hardware.radio.lpa + hwbinder + 1.0 + + IUimLpa + UimLpa0 + UimLpa1 + + @1.0::IUimLpa/UimLpa0 + @1.0::IUimLpa/UimLpa1 + + + vendor.qti.hardware.radio.qcrilhook + hwbinder + 1.0 + + IQtiOemHook + oemhook0 + oemhook1 + + @1.0::IQtiOemHook/oemhook0 + @1.0::IQtiOemHook/oemhook1 + + + vendor.qti.hardware.radio.qtiradio + hwbinder + 1.0 + + IQtiRadio + slot1 + slot2 + + @1.0::IQtiRadio/slot1 + @1.0::IQtiRadio/slot2 + + + vendor.qti.hardware.radio.qtiradio + hwbinder + 2.4 + + IQtiRadio + slot1 + slot2 + + @2.4::IQtiRadio/slot1 + @2.4::IQtiRadio/slot2 + + + vendor.qti.hardware.radio.uim + hwbinder + 1.2 + + IUim + Uim0 + Uim1 + + @1.2::IUim/Uim0 + @1.2::IUim/Uim1 + + + vendor.qti.hardware.radio.uim_remote_client + hwbinder + 1.0 + + IUimRemoteServiceClient + uimRemoteClient0 + uimRemoteClient1 + + @1.0::IUimRemoteServiceClient/uimRemoteClient0 + @1.0::IUimRemoteServiceClient/uimRemoteClient1 + + + vendor.qti.hardware.radio.uim_remote_server + hwbinder + 1.0 + + IUimRemoteServiceServer + uimRemoteServer0 + uimRemoteServer1 + + @1.0::IUimRemoteServiceServer/uimRemoteServer0 + @1.0::IUimRemoteServiceServer/uimRemoteServer1 + + + vendor.qti.hardware.sensorscalibrate + hwbinder + 1.0 + + ISensorsCalibrate + default + + @1.0::ISensorsCalibrate/default + + + vendor.qti.hardware.servicetracker + hwbinder + 1.1 + + IServicetracker + default + + @1.1::IServicetracker/default + + + vendor.qti.hardware.soter + hwbinder + 1.0 + + ISoter + default + + @1.0::ISoter/default + + + vendor.qti.hardware.tui_comm + hwbinder + 1.0 + + ITuiComm + default + + @1.0::ITuiComm/default + + + vendor.qti.hardware.wifi.hostapd + hwbinder + 1.1 + + IHostapdVendor + default + + @1.1::IHostapdVendor/default + + + vendor.qti.hardware.wifi.supplicant + hwbinder + 2.0 + + ISupplicantVendor + default + + @2.0::ISupplicantVendor/default + + + vendor.qti.hardware.wifi.wifilearner + hwbinder + 1.0 + + IWifiStats + wifiStats + + @1.0::IWifiStats/wifiStats + + + vendor.qti.ims.callinfo + hwbinder + 1.0 + + IService + default + + @1.0::IService/default + + + vendor.qti.imsrtpservice + hwbinder + 2.1 + + IRTPService + imsrtpservice + + @2.1::IRTPService/imsrtpservice + + + vendor.qti.power.pasrmanager + hwbinder + + + 29.0 + + diff --git a/media/media_codecs.xml b/media/media_codecs.xml new file mode 100644 index 0000000..ee5cb64 --- /dev/null +++ b/media/media_codecs.xml @@ -0,0 +1,345 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/media/media_codecs_google_audio.xml b/media/media_codecs_google_audio.xml new file mode 100644 index 0000000..8899adc --- /dev/null +++ b/media/media_codecs_google_audio.xml @@ -0,0 +1,97 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/media/media_codecs_google_c2.xml b/media/media_codecs_google_c2.xml new file mode 100644 index 0000000..bb78013 --- /dev/null +++ b/media/media_codecs_google_c2.xml @@ -0,0 +1,19 @@ + + + + + + diff --git a/media/media_codecs_google_c2_audio.xml b/media/media_codecs_google_c2_audio.xml new file mode 100644 index 0000000..509f7a9 --- /dev/null +++ b/media/media_codecs_google_c2_audio.xml @@ -0,0 +1,118 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/media/media_codecs_google_c2_video.xml b/media/media_codecs_google_c2_video.xml new file mode 100644 index 0000000..04041eb --- /dev/null +++ b/media/media_codecs_google_c2_video.xml @@ -0,0 +1,155 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/media/media_codecs_google_telephony.xml b/media/media_codecs_google_telephony.xml new file mode 100644 index 0000000..5ad90d9 --- /dev/null +++ b/media/media_codecs_google_telephony.xml @@ -0,0 +1,25 @@ + + + + + + + + + + + + diff --git a/media/media_codecs_google_video.xml b/media/media_codecs_google_video.xml new file mode 100644 index 0000000..829f403 --- /dev/null +++ b/media/media_codecs_google_video.xml @@ -0,0 +1,122 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/media/media_codecs_google_video_le.xml b/media/media_codecs_google_video_le.xml new file mode 100644 index 0000000..d7c6570 --- /dev/null +++ b/media/media_codecs_google_video_le.xml @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/media/media_codecs_performance.xml b/media/media_codecs_performance.xml new file mode 100644 index 0000000..2e94378 --- /dev/null +++ b/media/media_codecs_performance.xml @@ -0,0 +1,176 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/media/media_codecs_performance_v1.xml b/media/media_codecs_performance_v1.xml new file mode 100644 index 0000000..2e94378 --- /dev/null +++ b/media/media_codecs_performance_v1.xml @@ -0,0 +1,176 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/media/media_codecs_performance_v2.xml b/media/media_codecs_performance_v2.xml new file mode 100644 index 0000000..cab3712 --- /dev/null +++ b/media/media_codecs_performance_v2.xml @@ -0,0 +1,173 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/media/media_codecs_vendor.xml b/media/media_codecs_vendor.xml new file mode 100644 index 0000000..dc7a1a4 --- /dev/null +++ b/media/media_codecs_vendor.xml @@ -0,0 +1,346 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/media/media_codecs_vendor_audio.xml b/media/media_codecs_vendor_audio.xml new file mode 100644 index 0000000..7b0c960 --- /dev/null +++ b/media/media_codecs_vendor_audio.xml @@ -0,0 +1,26 @@ + + + + + + + + + + diff --git a/media/media_codecs_vendor_v1.xml b/media/media_codecs_vendor_v1.xml new file mode 100644 index 0000000..e674234 --- /dev/null +++ b/media/media_codecs_vendor_v1.xml @@ -0,0 +1,351 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/media/media_codecs_vendor_v2.xml b/media/media_codecs_vendor_v2.xml new file mode 100644 index 0000000..e674234 --- /dev/null +++ b/media/media_codecs_vendor_v2.xml @@ -0,0 +1,351 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/media/media_profiles.xml b/media/media_profiles.xml new file mode 100644 index 0000000..0fd1de9 --- /dev/null +++ b/media/media_profiles.xml @@ -0,0 +1,643 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/media/media_profiles_V1_0.xml b/media/media_profiles_V1_0.xml new file mode 100644 index 0000000..66128d6 --- /dev/null +++ b/media/media_profiles_V1_0.xml @@ -0,0 +1,867 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/media/media_profiles_scuba.xml b/media/media_profiles_scuba.xml new file mode 100644 index 0000000..25e9f09 --- /dev/null +++ b/media/media_profiles_scuba.xml @@ -0,0 +1,1197 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/media/media_profiles_vendor.xml b/media/media_profiles_vendor.xml new file mode 100644 index 0000000..8035107 --- /dev/null +++ b/media/media_profiles_vendor.xml @@ -0,0 +1,1206 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/media/system_properties.xml b/media/system_properties.xml new file mode 100644 index 0000000..545b5f4 --- /dev/null +++ b/media/system_properties.xml @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + diff --git a/overlay-lineage/lineage-sdk/lineage/res/res/values/config.xml b/overlay-lineage/lineage-sdk/lineage/res/res/values/config.xml new file mode 100644 index 0000000..ebfa78e --- /dev/null +++ b/overlay-lineage/lineage-sdk/lineage/res/res/values/config.xml @@ -0,0 +1,8 @@ + + + + + 308203c2308202aaa00302010202021387300d06092a864886f70d01010b05003076310b30090603550406130255533111300f06035504080c08496c6c696e6f69733115301306035504070c0c4c69626572747976696c6c653111300f060355040a0c084d6f746f726f6c61310c300a060355040b0c034d4462311c301a06035504030c134d41503420506c6174666f726d203436362d31301e170d3230303132323134343731395a170d3435303132323134343731395a3075310b30090603550406130255533111300f06035504080c08496c6c696e6f69733110300e06035504070c074368696361676f3111300f060355040a0c084d6f746f726f6c61310c300a060355040b0c034d42473120301e06035504030c174d41503520506c6174666f726d203436362d312d32343630820122300d06092a864886f70d01010105000382010f003082010a0282010100a423208a6f02a47f04ca4cde96ea1f4cae4b1d837239a361ac7f282fb9ff70e6096ae34b648470bd8e7c86572ef9a09192d335455d0ebb67b53ea9ddaa88c3f1fa2d296ae1bfe6251ca4532a3ea1964e0b3f07afe8ea80f4e2c546b3f92c116ac94375941b57e9eb1a71a2d62f85f8e851c62f300579995a920d9cb221e7378bb89be6fb05a97fa5133cf755b9ad1ba07ccfbc61130b19df8ded21ce84d9e4a545c5a1419922f666b24612fe678b82587591ba4c75c2eb6a6ac67e2886101992be51e6353e48e91a8d03c7e2ae816667911c138b160d80ec9a797b561de2caf264fa9fe3c278e579910bac986f3a7d0ee8ecac851c56bc83286b17cab002844f0203010001a35b3059301f0603551d23041830168014a4b3e27d57c49a05b1c5578d791e7779aea18ebb301106096086480186f8420101040403020410300e0603551d0f0101ff0404030205e030130603551d25040c300a06082b06010505070303300d06092a864886f70d01010b050003820101009fad7dbe07b724f75ebddf51cdbc2648c5e311f1cc86374cc0bae73ae726fc3ad152eed3b7e39233680121329e90cd357170f9c782ce95e6d0bb662ea612d332d76be13bcfa303cc8771c26b81611beffa6c9a4d4810dcf1b503af51aeebc43bcfed781ac0acb426e437ed032e78a646bf7d6808a8eb2ab2b33b35d4b233514fddef78eae77bbe68ff5ea2691421e67082561096201c841188b35397898f70d5f5a5edf10f818635eb7f85d2239851df0aaf8425004339dd2b2bfa11e6cff761a36c1a45fa84181edb60322a4b859a01ed41789bbc09f12b07b9598cd8df14a49452d58e7014b16f8cdbaf44292468970154b1312598cbe7eb582659e929d999 + + \ No newline at end of file diff --git a/overlay/frameworks/base/core/res/res/values/config.xml b/overlay/frameworks/base/core/res/res/values/config.xml new file mode 100644 index 0000000..f08d06d --- /dev/null +++ b/overlay/frameworks/base/core/res/res/values/config.xml @@ -0,0 +1,25 @@ + + + + + + + + \ No newline at end of file diff --git a/overlay/packages/apps/Bluetooth/res/values/bools.xml b/overlay/packages/apps/Bluetooth/res/values/bools.xml new file mode 100644 index 0000000..1e3413c --- /dev/null +++ b/overlay/packages/apps/Bluetooth/res/values/bools.xml @@ -0,0 +1,31 @@ + + + false + true + true + true + true + false + false + true + true + true + false + true + false + true + true + false + false + true + true + true + false + true + true + true + false + true + true + true + diff --git a/overlay/packages/apps/CarrierConfig/res/xml/vendor.xml b/overlay/packages/apps/CarrierConfig/res/xml/vendor.xml new file mode 100644 index 0000000..2ab1238 --- /dev/null +++ b/overlay/packages/apps/CarrierConfig/res/xml/vendor.xml @@ -0,0 +1,3868 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.summit.motorola.rcs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + [PNN] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.summit.motorola.rcs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 30047 + vvm_type_omtp + + + + + + + + + + + + + + + + + + + + + + + + + + + Vodafone + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 21101 + com.orange.vvm + vvm_type_omtp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Virgin + + + + + + + + + + + + + + + + + + + EE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + AT&T\.\.\.[12]$ + connected_mmwave:5G_Plus,connected:5G,not_restricted:5G,restricted:None + + + com.summit.motorola.rcs + + + + + + + + + + + + + + + + + + 1 + h-slp.mnc007.mcc722.pub.3gppnetwork.org + 0x20000 + 3 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + http://www.rogers.com/AndroidWiFi/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + rscp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + rscp + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + NONE + 0x20000 + 2 + 0 + + + + + + + + + + + + + + +48601222222 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.google.android.wfcactivation/.WfcActivationActivity + + + 0 + NONE + 0x20000 + 7 + 300 + + + 0 + NONE + 0x20000 + 7 + 300 + + + + + + + + 0 + NONE + 0x20000 + 7 + 300 + + + com.google.android.wfcactivation/.WfcActivationActivity + 0 + NONE + 0x20000 + 7 + 300 + + + 0 + NONE + 0x20000 + 7 + 300 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + NONE + 0x20000 + 7 + 300 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + supl.attmex.mx + 0x20000 + 3 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + supl.attmex.mx + 0x20000 + 3 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + NONE + 0x20000 + 2 + 0 + 0 + 0 + + + + + + + + + + com.summit.motorola.rcs + + + com.google.android.wfcactivation/.WfcActivationActivity + 0 + NONE + 0x20000 + 7 + 300 + + + + + eri_usc.xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.motorola.callredirectionservice/.usc.UscCallRedirectionService + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Project Fi + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + NONE + 0x20000 + 7 + 300 + + + + + + [PNN] + + + + + [PNN] + Virgin + + + + + + + + [PNN] + CC Network + + + vvm_type_disable + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + BT + + + + BT + + + + + + FirstNet\.\.\.[12]$ + connected_mmwave:5G_Plus,connected:5G,not_restricted:5G,restricted:None + 1 + NONE + 0x20000 + 11 + 0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.summit.motorola.rcs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.summit.motorola.rcs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.google.android.wfcactivation/.WfcActivationActivity + + + [PNN] + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 0 + NONE + 0x20000 + 7 + 300 + + + + + + + + + + + + + + + + + + + + + 0 + NONE + 0x20000 + 7 + 300 + + + 0 + NONE + 0x20000 + 7 + 300 + + + 0 + NONE + 0x20000 + 7 + 300 + + + + + + + + + + + + + + + + + + + + + + + + + + + + +48602950000 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + iD Mobile + + + + + + com.google.android.wfcactivation/.WfcActivationActivity + + + + + + + + + + + + EMPTY + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + com.google.android.ims + + + + + + + + EMPTY + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/proprietary-files-system.txt b/proprietary-files-system.txt new file mode 100644 index 0000000..0276697 --- /dev/null +++ b/proprietary-files-system.txt @@ -0,0 +1,352 @@ +-framework/audiosphere.jar +-framework/com.qti.location.sdk.jar +-framework/izat.xt.srv.jar +-framework/tcmclient.jar +-product/app/QtiTelephonyService/QtiTelephonyService.apk +-product/app/datastatusnotification/datastatusnotification.apk +-product/app/embms/embms.apk +-product/app/uceShimService/uceShimService.apk +-product/framework/QtiTelephonyServicelibrary.jar +-product/framework/com.nxp.nfc.jar +-product/framework/com.qti.dpmframework.jar +-product/framework/com.qualcomm.qti.imscmservice-V2.0-java.jar +-product/framework/com.qualcomm.qti.imscmservice-V2.1-java.jar +-product/framework/com.qualcomm.qti.imscmservice-V2.2-java.jar +-product/framework/com.qualcomm.qti.uceservice-V2.0-java.jar +-product/framework/com.qualcomm.qti.uceservice-V2.1-java.jar +-product/framework/dpmapi.jar +-product/framework/embmslibrary.jar +-product/framework/qcrilhook.jar +-product/framework/qti-telephony-common.jar +-product/framework/vendor.qti.data.factory-V1.0-java.jar +-product/framework/vendor.qti.data.factory-V2.0-java.jar +-product/framework/vendor.qti.data.factory-V2.1-java.jar +-product/framework/vendor.qti.data.slm-V1.0-java.jar +-product/framework/vendor.qti.hardware.alarm-V1.0-java.jar +-product/framework/vendor.qti.hardware.bluetooth_dun-V1.0-java.jar +-product/framework/vendor.qti.hardware.capabilityconfigstore-V1.0-java.jar +-product/framework/vendor.qti.hardware.data.connection-V1.0-java.jar +-product/framework/vendor.qti.hardware.data.connection-V1.1-java.jar +-product/framework/vendor.qti.hardware.data.dynamicdds-V1.0-java.jar +-product/framework/vendor.qti.hardware.data.iwlan-V1.0-java.jar +-product/framework/vendor.qti.hardware.data.latency-V1.0-java.jar +-product/framework/vendor.qti.hardware.factory-V1.0-java.jar +-product/framework/vendor.qti.hardware.factory-V1.1-java.jar +-product/framework/vendor.qti.hardware.sensorscalibrate-V1.0-java.jar +-product/framework/vendor.qti.hardware.soter-V1.0-java.jar +-product/framework/vendor.qti.hardware.wigig.netperftuner-V1.0-java.jar +-product/framework/vendor.qti.hardware.wigig.supptunnel-V1.0-java.jar +-product/framework/vendor.qti.ims.callinfo-V1.0-java.jar +-product/framework/vendor.qti.ims.rcsconfig-V1.0-java.jar +-product/framework/vendor.qti.ims.rcsconfig-V1.1-java.jar +-product/framework/vendor.qti.latency-V2.0-java.jar +-product/framework/vendor.qti.voiceprint-V1.0-java.jar +-product/priv-app/dpmserviceapp/dpmserviceapp.apk +-product/priv-app/ims/ims.apk +-product/priv-app/qcrilmsgtunnel/qcrilmsgtunnel.apk +bin/wfdservice +etc/cne/Nexus/ATT/ATT_profiles.xml +etc/cne/Nexus/ROW/ROW_profiles.xml +etc/cne/Nexus/VZW/VZW_profiles.xml +etc/init/wfdservice.rc +etc/permissions/audiosphere.xml +etc/permissions/com.qti.location.sdk.xml +etc/permissions/com.qualcomm.location.xml +etc/permissions/com.qualcomm.qti.imscmservice.xml +etc/permissions/izat.xt.srv.xml +etc/permissions/privapp-permissions-com.qualcomm.location.xml +etc/permissions/privapp-permissions-qti.xml +etc/permissions/qti_libpermissions.xml +etc/permissions/qti_permissions.xml +etc/sysconfig/qti_whitelist.xml +lib/com.qualcomm.qti.wifidisplayhal@1.0.so +lib/fm_helium.so +lib/libFileMux.so +lib/libOmxMux.so +lib/libfm-hci.so +lib/libmmosal.so +lib/libmmparser_lite.so +lib/libmmrtpdecoder.so +lib/libmmrtpencoder.so +lib/libqti-perfd-client_system.so +lib/libqti-util_system.so +lib/libqti_performance.so +lib/libwfdaac.so +lib/libwfdavenhancements.so +lib/libwfdclient.so +lib/libwfdcommonutils.so +lib/libwfdmminterface.so +lib/libwfdmmsink.so +lib/libwfdmmsrc_system.so +lib/libwfdrtsp.so +lib/libwfdservice.so +lib/libwfdsinksm.so +lib/libwfdsm.so +lib/libwfduibcinterface.so +lib/libwfduibcsink.so +lib/libwfduibcsinkinterface.so +lib/libwfduibcsrc.so +lib/libwfduibcsrcinterface.so +lib64/fm_helium.so +lib64/libFileMux.so +lib64/libOmxMux.so +lib64/libaptXHD_encoder.so +lib64/libaptX_encoder.so +lib64/libfm-hci.so +lib64/liblocationservice_jni.so +lib64/libmmosal.so +lib64/libmmparser_lite.so +lib64/libmmrtpdecoder.so +lib64/libmmrtpencoder.so +lib64/libqti-perfd-client_system.so +lib64/libqti-util_system.so +lib64/libqti_performance.so +lib64/libwfdclient.so +lib64/libwfdcommonutils.so +lib64/libwfdmminterface.so +lib64/libwfdmmsink.so +lib64/libwfdrtsp.so +lib64/libwfdsinksm.so +lib64/libwfdsm.so +lib64/libwfduibcinterface.so +lib64/libwfduibcsink.so +lib64/libwfduibcsinkinterface.so +lib64/libwfduibcsrc.so +lib64/libwfduibcsrcinterface.so +lib64/libxt_native.so +product/bin/dpmd +product/etc/dpm/dpm.conf +product/etc/init/dpmd.rc +product/etc/permissions/com.nxp.nfc.xml +product/etc/permissions/com.qti.dpmframework.xml +product/etc/permissions/com.qualcomm.qti.imscmservice-V2.0-java.xml +product/etc/permissions/com.qualcomm.qti.imscmservice-V2.1-java.xml +product/etc/permissions/com.qualcomm.qti.imscmservice-V2.2-java.xml +product/etc/permissions/dpmapi.xml +product/etc/permissions/embms.xml +product/etc/permissions/qcrilhook.xml +product/etc/permissions/qti_telephony_hidl_wrapper.xml +product/etc/permissions/qti_telephony_utils.xml +product/etc/permissions/telephonyservice.xml +product/etc/permissions/vendor.qti.hardware.data.connection-V1.0-java.xml +product/etc/permissions/vendor.qti.hardware.data.connection-V1.1-java.xml +product/lib/com.qualcomm.qti.ant@1.0.so +product/lib/com.qualcomm.qti.bluetooth_audio@1.0.so +product/lib/com.qualcomm.qti.dpm.api@1.0.so +product/lib/com.qualcomm.qti.imscmservice@1.0.so +product/lib/com.qualcomm.qti.imscmservice@2.0.so +product/lib/com.qualcomm.qti.imscmservice@2.1.so +product/lib/com.qualcomm.qti.imscmservice@2.2.so +product/lib/com.qualcomm.qti.uceservice@2.0.so +product/lib/com.qualcomm.qti.uceservice@2.1.so +product/lib/lib-imsvideocodec.so +product/lib/lib-imsvt.so +product/lib/lib-imsvtextutils.so +product/lib/lib-imsvtutils.so +product/lib/libdiag_system.so +product/lib/libdpmctmgr.so +product/lib/libdpmfdmgr.so +product/lib/libdpmframework.so +product/lib/libdpmtcm.so +product/lib/libimscamera_jni.so +product/lib/libimsmedia_jni.so +product/lib/vendor.display.color@1.0.so +product/lib/vendor.display.color@1.1.so +product/lib/vendor.display.color@1.2.so +product/lib/vendor.display.color@1.3.so +product/lib/vendor.display.config@1.0.so +product/lib/vendor.display.config@1.1.so +product/lib/vendor.display.config@1.10.so +product/lib/vendor.display.config@1.11.so +product/lib/vendor.display.config@1.12.so +product/lib/vendor.display.config@1.13.so +product/lib/vendor.display.config@1.14.so +product/lib/vendor.display.config@1.15.so +product/lib/vendor.display.config@1.16.so +product/lib/vendor.display.config@1.2.so +product/lib/vendor.display.config@1.3.so +product/lib/vendor.display.config@1.4.so +product/lib/vendor.display.config@1.5.so +product/lib/vendor.display.config@1.6.so +product/lib/vendor.display.config@1.7.so +product/lib/vendor.display.config@1.8.so +product/lib/vendor.display.config@1.9.so +product/lib/vendor.display.postproc@1.0.so +product/lib/vendor.qti.data.factory@1.0.so +product/lib/vendor.qti.data.factory@2.0.so +product/lib/vendor.qti.data.factory@2.1.so +product/lib/vendor.qti.data.slm@1.0.so +product/lib/vendor.qti.gnss@1.0.so +product/lib/vendor.qti.gnss@1.1.so +product/lib/vendor.qti.gnss@1.2.so +product/lib/vendor.qti.gnss@2.0.so +product/lib/vendor.qti.gnss@2.1.so +product/lib/vendor.qti.gnss@3.0.so +product/lib/vendor.qti.hardware.alarm@1.0.so +product/lib/vendor.qti.hardware.bluetooth_audio@2.0.so +product/lib/vendor.qti.hardware.btconfigstore@1.0.so +product/lib/vendor.qti.hardware.capabilityconfigstore@1.0.so +product/lib/vendor.qti.hardware.cvp@1.0-adapter-helper.so +product/lib/vendor.qti.hardware.cvp@1.0.so +product/lib/vendor.qti.hardware.data.connection@1.0.so +product/lib/vendor.qti.hardware.data.connection@1.1.so +product/lib/vendor.qti.hardware.data.dynamicdds@1.0.so +product/lib/vendor.qti.hardware.data.iwlan@1.0.so +product/lib/vendor.qti.hardware.data.latency@1.0.so +product/lib/vendor.qti.hardware.factory@1.0.so +product/lib/vendor.qti.hardware.factory@1.1.so +product/lib/vendor.qti.hardware.fm@1.0.so +product/lib/vendor.qti.hardware.iop@2.0.so +product/lib/vendor.qti.hardware.perf@2.0.so +product/lib/vendor.qti.hardware.perf@2.1.so +product/lib/vendor.qti.hardware.qdutils_disp@1.0.so +product/lib/vendor.qti.hardware.radio.am@1.0.so +product/lib/vendor.qti.hardware.radio.ims@1.0.so +product/lib/vendor.qti.hardware.radio.ims@1.1.so +product/lib/vendor.qti.hardware.radio.ims@1.2.so +product/lib/vendor.qti.hardware.radio.ims@1.3.so +product/lib/vendor.qti.hardware.radio.ims@1.4.so +product/lib/vendor.qti.hardware.radio.internal.deviceinfo@1.0.so +product/lib/vendor.qti.hardware.radio.lpa@1.0.so +product/lib/vendor.qti.hardware.radio.qcrilhook@1.0.so +product/lib/vendor.qti.hardware.radio.qtiradio@1.0.so +product/lib/vendor.qti.hardware.radio.qtiradio@2.0.so +product/lib/vendor.qti.hardware.radio.qtiradio@2.1.so +product/lib/vendor.qti.hardware.radio.qtiradio@2.2.so +product/lib/vendor.qti.hardware.radio.qtiradio@2.3.so +product/lib/vendor.qti.hardware.radio.qtiradio@2.4.so +product/lib/vendor.qti.hardware.radio.uim@1.0.so +product/lib/vendor.qti.hardware.radio.uim@1.1.so +product/lib/vendor.qti.hardware.radio.uim@1.2.so +product/lib/vendor.qti.hardware.radio.uim_remote_client@1.0.so +product/lib/vendor.qti.hardware.radio.uim_remote_client@1.1.so +product/lib/vendor.qti.hardware.radio.uim_remote_client@1.2.so +product/lib/vendor.qti.hardware.radio.uim_remote_server@1.0.so +product/lib/vendor.qti.hardware.scve.objecttracker@1.0-adapter-helper.so +product/lib/vendor.qti.hardware.scve.objecttracker@1.0.so +product/lib/vendor.qti.hardware.scve.panorama@1.0-adapter-helper.so +product/lib/vendor.qti.hardware.scve.panorama@1.0.so +product/lib/vendor.qti.hardware.sensorscalibrate@1.0.so +product/lib/vendor.qti.hardware.sigma_miracast@1.0.so +product/lib/vendor.qti.hardware.soter@1.0.so +product/lib/vendor.qti.hardware.tui_comm@1.0.so +product/lib/vendor.qti.hardware.vpp@1.1.so +product/lib/vendor.qti.hardware.wifidisplaysession@1.0.so +product/lib/vendor.qti.hardware.wigig.netperftuner@1.0.so +product/lib/vendor.qti.hardware.wigig.supptunnel@1.0.so +product/lib/vendor.qti.ims.callinfo@1.0.so +product/lib/vendor.qti.ims.rcsconfig@1.0.so +product/lib/vendor.qti.ims.rcsconfig@1.1.so +product/lib/vendor.qti.imsrtpservice@2.0.so +product/lib/vendor.qti.imsrtpservice@2.1.so +product/lib/vendor.qti.latency@2.0.so +product/lib64/com.qualcomm.qti.ant@1.0.so +product/lib64/com.qualcomm.qti.bluetooth_audio@1.0.so +product/lib64/com.qualcomm.qti.dpm.api@1.0.so +product/lib64/com.qualcomm.qti.imscmservice@1.0.so +product/lib64/com.qualcomm.qti.imscmservice@2.0.so +product/lib64/com.qualcomm.qti.imscmservice@2.1.so +product/lib64/com.qualcomm.qti.imscmservice@2.2.so +product/lib64/com.qualcomm.qti.uceservice@2.0.so +product/lib64/com.qualcomm.qti.uceservice@2.1.so +product/lib64/lib-imsvideocodec.so +product/lib64/lib-imsvt.so +product/lib64/lib-imsvtextutils.so +product/lib64/lib-imsvtutils.so +product/lib64/libdiag_system.so +product/lib64/libdpmctmgr.so +product/lib64/libdpmfdmgr.so +product/lib64/libdpmframework.so +product/lib64/libdpmtcm.so +product/lib64/libimscamera_jni.so +product/lib64/libimsmedia_jni.so +product/lib64/vendor.display.color@1.0.so +product/lib64/vendor.display.color@1.1.so +product/lib64/vendor.display.color@1.2.so +product/lib64/vendor.display.color@1.3.so +product/lib64/vendor.display.config@1.0.so +product/lib64/vendor.display.config@1.1.so +product/lib64/vendor.display.config@1.10.so +product/lib64/vendor.display.config@1.11.so +product/lib64/vendor.display.config@1.12.so +product/lib64/vendor.display.config@1.13.so +product/lib64/vendor.display.config@1.14.so +product/lib64/vendor.display.config@1.15.so +product/lib64/vendor.display.config@1.16.so +product/lib64/vendor.display.config@1.2.so +product/lib64/vendor.display.config@1.3.so +product/lib64/vendor.display.config@1.4.so +product/lib64/vendor.display.config@1.5.so +product/lib64/vendor.display.config@1.6.so +product/lib64/vendor.display.config@1.7.so +product/lib64/vendor.display.config@1.8.so +product/lib64/vendor.display.config@1.9.so +product/lib64/vendor.display.postproc@1.0.so +product/lib64/vendor.qti.data.factory@1.0.so +product/lib64/vendor.qti.data.factory@2.0.so +product/lib64/vendor.qti.data.factory@2.1.so +product/lib64/vendor.qti.data.slm@1.0.so +product/lib64/vendor.qti.gnss@1.0.so +product/lib64/vendor.qti.gnss@1.1.so +product/lib64/vendor.qti.gnss@1.2.so +product/lib64/vendor.qti.gnss@2.0.so +product/lib64/vendor.qti.gnss@2.1.so +product/lib64/vendor.qti.gnss@3.0.so +product/lib64/vendor.qti.hardware.alarm@1.0.so +product/lib64/vendor.qti.hardware.bluetooth_audio@2.0.so +product/lib64/vendor.qti.hardware.btconfigstore@1.0.so +product/lib64/vendor.qti.hardware.capabilityconfigstore@1.0.so +product/lib64/vendor.qti.hardware.cvp@1.0-adapter-helper.so +product/lib64/vendor.qti.hardware.cvp@1.0.so +product/lib64/vendor.qti.hardware.data.connection@1.0.so +product/lib64/vendor.qti.hardware.data.connection@1.1.so +product/lib64/vendor.qti.hardware.data.dynamicdds@1.0.so +product/lib64/vendor.qti.hardware.data.iwlan@1.0.so +product/lib64/vendor.qti.hardware.data.latency@1.0.so +product/lib64/vendor.qti.hardware.factory@1.0.so +product/lib64/vendor.qti.hardware.factory@1.1.so +product/lib64/vendor.qti.hardware.fm@1.0.so +product/lib64/vendor.qti.hardware.iop@2.0.so +product/lib64/vendor.qti.hardware.perf@2.0.so +product/lib64/vendor.qti.hardware.perf@2.1.so +product/lib64/vendor.qti.hardware.qdutils_disp@1.0.so +product/lib64/vendor.qti.hardware.radio.am@1.0.so +product/lib64/vendor.qti.hardware.radio.ims@1.0.so +product/lib64/vendor.qti.hardware.radio.ims@1.1.so +product/lib64/vendor.qti.hardware.radio.ims@1.2.so +product/lib64/vendor.qti.hardware.radio.ims@1.3.so +product/lib64/vendor.qti.hardware.radio.ims@1.4.so +product/lib64/vendor.qti.hardware.radio.internal.deviceinfo@1.0.so +product/lib64/vendor.qti.hardware.radio.lpa@1.0.so +product/lib64/vendor.qti.hardware.radio.qcrilhook@1.0.so +product/lib64/vendor.qti.hardware.radio.qtiradio@1.0.so +product/lib64/vendor.qti.hardware.radio.qtiradio@2.0.so +product/lib64/vendor.qti.hardware.radio.qtiradio@2.1.so +product/lib64/vendor.qti.hardware.radio.qtiradio@2.2.so +product/lib64/vendor.qti.hardware.radio.qtiradio@2.3.so +product/lib64/vendor.qti.hardware.radio.qtiradio@2.4.so +product/lib64/vendor.qti.hardware.radio.uim@1.0.so +product/lib64/vendor.qti.hardware.radio.uim@1.1.so +product/lib64/vendor.qti.hardware.radio.uim@1.2.so +product/lib64/vendor.qti.hardware.radio.uim_remote_client@1.0.so +product/lib64/vendor.qti.hardware.radio.uim_remote_client@1.1.so +product/lib64/vendor.qti.hardware.radio.uim_remote_client@1.2.so +product/lib64/vendor.qti.hardware.radio.uim_remote_server@1.0.so +product/lib64/vendor.qti.hardware.scve.objecttracker@1.0-adapter-helper.so +product/lib64/vendor.qti.hardware.scve.objecttracker@1.0.so +product/lib64/vendor.qti.hardware.scve.panorama@1.0-adapter-helper.so +product/lib64/vendor.qti.hardware.scve.panorama@1.0.so +product/lib64/vendor.qti.hardware.sensorscalibrate@1.0.so +product/lib64/vendor.qti.hardware.sigma_miracast@1.0.so +product/lib64/vendor.qti.hardware.soter@1.0.so +product/lib64/vendor.qti.hardware.tui_comm@1.0.so +product/lib64/vendor.qti.hardware.vpp@1.1.so +product/lib64/vendor.qti.hardware.wifidisplaysession@1.0.so +product/lib64/vendor.qti.hardware.wigig.netperftuner@1.0.so +product/lib64/vendor.qti.hardware.wigig.supptunnel@1.0.so +product/lib64/vendor.qti.ims.callinfo@1.0.so +product/lib64/vendor.qti.ims.rcsconfig@1.0.so +product/lib64/vendor.qti.ims.rcsconfig@1.1.so +product/lib64/vendor.qti.imsrtpservice@2.0.so +product/lib64/vendor.qti.imsrtpservice@2.1.so +product/lib64/vendor.qti.latency@2.0.so diff --git a/proprietary-files.txt b/proprietary-files.txt new file mode 100644 index 0000000..77ab09f --- /dev/null +++ b/proprietary-files.txt @@ -0,0 +1,2396 @@ + +# ADSP +vendor/bin/adsprpcd +vendor/lib/libadspd.so +vendor/lib/libadsprpc.so +vendor/lib/libadsp_default_listener.so +vendor/lib/libfastcvdsp_stub.so +vendor/lib/libfastcvopt.so +vendor/lib/libmdsprpc.so +vendor/lib/libsdsprpc.so +vendor/lib64/libadspd.so +vendor/lib64/libadsprpc.so +vendor/lib64/libadsp_default_listener.so +vendor/lib64/libfastcvdsp_stub.so +vendor/lib64/libfastcvopt.so +vendor/lib64/libmdsprpc.so +vendor/lib64/libsdsprpc.so + +# ADSP-Modules +vendor/lib/rfsa/adsp/capi_v2_aptX_Classic.so +vendor/lib/rfsa/adsp/capi_v2_aptX_HD.so +vendor/lib/rfsa/adsp/libadsp_jpege_skel.so +vendor/lib/rfsa/adsp/libapps_mem_heap.so +vendor/lib/rfsa/adsp/libbitml_nsp_skel.so +vendor/lib/rfsa/adsp/libcamera_nn_skel.so +vendor/lib/rfsa/adsp/libcvpdsp_skel.so +vendor/lib/rfsa/adsp/libdspCV_skel.so +vendor/lib/rfsa/adsp/libdsp_streamer_binning.so +vendor/lib/rfsa/adsp/libfastcvadsp.so +vendor/lib/rfsa/adsp/libfastcvdsp_skel.so +vendor/lib/rfsa/adsp/libhexagon_nn_skel.so +vendor/lib/rfsa/adsp/libmctfengine_skel.so +vendor/lib/rfsa/adsp/libsns_device_mode_skel.so +vendor/lib/rfsa/adsp/libsns_low_lat_stream_skel.so + +# ANT +product/lib/com.qualcomm.qti.ant@1.0.so +product/lib64/com.qualcomm.qti.ant@1.0.so +vendor/lib/com.qualcomm.qti.ant@1.0.so +vendor/lib64/com.qualcomm.qti.ant@1.0.so + +# Alarm +-product/framework/vendor.qti.hardware.alarm-V1.0-java.jar +product/lib/vendor.qti.hardware.alarm@1.0.so +product/lib64/vendor.qti.hardware.alarm@1.0.so +vendor/bin/hw/vendor.qti.hardware.alarm@1.0-service +vendor/bin/power_off_alarm +vendor/etc/init/vendor.qti.hardware.alarm@1.0-service.rc +vendor/lib/hw/vendor.qti.hardware.alarm@1.0-impl.so +vendor/lib/vendor.qti.hardware.alarm@1.0.so +vendor/lib64/hw/vendor.qti.hardware.alarm@1.0-impl.so +vendor/lib64/vendor.qti.hardware.alarm@1.0.so + +# Atrace +vendor/bin/hw/android.hardware.atrace@1.0-service +vendor/etc/init/android.hardware.atrace@1.0-service.rc +-vendor/etc/vintf/manifest/android.hardware.atrace@1.0-service.xml + +# Audio +etc/permissions/audiosphere.xml +-framework/audiosphere.jar +vendor/bin/audioflacapp +vendor/lib/libacdb-fts.so +vendor/lib/libacdbloader.so +vendor/lib/libacdbrtac.so +vendor/lib/libadiertac.so +vendor/lib/libadm.so +vendor/lib/libaudcal.so +vendor/lib/libaudioalsa.so +vendor/lib/libaudioconfigstore.so +vendor/lib/libaudioparsers.so +vendor/lib/libdrc.so +vendor/lib/libqtigef.so +vendor/lib/libsurround_3mic_proc.so +vendor/lib/libtinycompress_vendor.so +vendor/lib/soundfx/libasphere.so +vendor/lib/soundfx/libaudiopreprocessing.so +vendor/lib/soundfx/libqcbassboost.so +vendor/lib/soundfx/libqcreverb.so +vendor/lib/soundfx/libqcvirt.so +vendor/lib/soundfx/libshoebox.so +vendor/lib64/libacdb-fts.so +vendor/lib64/libacdbloader.so +vendor/lib64/libacdbrtac.so +vendor/lib64/libadiertac.so +vendor/lib64/libaudcal.so +vendor/lib64/libaudioalsa.so +vendor/lib64/libaudioconfigstore.so +vendor/lib64/libaudioparsers.so +vendor/lib64/libqtigef.so +vendor/lib64/libtinycompress.so +vendor/lib64/soundfx/libasphere.so +vendor/lib64/soundfx/libaudiopreprocessing.so +vendor/lib64/soundfx/libqcbassboost.so +vendor/lib64/soundfx/libqcreverb.so +vendor/lib64/soundfx/libqcvirt.so +vendor/lib64/soundfx/libshoebox.so + +# Audio-ACDB +vendor/etc/acdbdata/adsp_avs_config.acdb +vendor/etc/acdbdata/Bluetooth_cal.acdb +vendor/etc/acdbdata/General_cal.acdb +vendor/etc/acdbdata/Global_cal.acdb +vendor/etc/acdbdata/Handset_cal.acdb +vendor/etc/acdbdata/Hdmi_cal.acdb +vendor/etc/acdbdata/Headset_cal.acdb +vendor/etc/acdbdata/QRD/bengal-scubaqrd-snd-card/QRD_Scuba_Bluetooth_cal.acdb +vendor/etc/acdbdata/QRD/bengal-scubaqrd-snd-card/QRD_Scuba_General_cal.acdb +vendor/etc/acdbdata/QRD/bengal-scubaqrd-snd-card/QRD_Scuba_Global_cal.acdb +vendor/etc/acdbdata/QRD/bengal-scubaqrd-snd-card/QRD_Scuba_Handset_cal.acdb +vendor/etc/acdbdata/QRD/bengal-scubaqrd-snd-card/QRD_Scuba_Hdmi_cal.acdb +vendor/etc/acdbdata/QRD/bengal-scubaqrd-snd-card/QRD_Scuba_Headset_cal.acdb +vendor/etc/acdbdata/QRD/bengal-scubaqrd-snd-card/QRD_Scuba_Speaker_cal.acdb +vendor/etc/acdbdata/QRD/bengal-scubaqrd-snd-card/QRD_Scuba_workspaceFile.qwsp +vendor/etc/acdbdata/Speaker_cal.acdb + +# Audio-Hardware +vendor/bin/hw/android.hardware.audio@2.0-service +vendor/etc/init/android.hardware.audio@2.0-service.rc +vendor/lib/android.hardware.audio.common-util.so +vendor/lib/android.hardware.audio.common@5.0-util.so +vendor/lib/hw/android.hardware.audio.effect@5.0-impl.so +vendor/lib/hw/android.hardware.audio@5.0-impl.so +vendor/lib/hw/audio.primary.bengal.so +vendor/lib/hw/audio.primary.default.so +vendor/lib/hw/audio.r_submix.default.so +vendor/lib/hw/audio.usb.default.so +vendor/lib/soundfx/libqcomvisualizer.so +vendor/lib/soundfx/libqcomvoiceprocessing.so +vendor/lib64/hw/audio.primary.default.so +vendor/lib64/hw/audio.r_submix.default.so +vendor/lib64/hw/audio.usb.default.so +vendor/lib64/soundfx/libqcomvisualizer.so +vendor/lib64/soundfx/libqcomvoiceprocessing.so + +# Bluetooth +-product/framework/vendor.qti.hardware.bluetooth_dun-V1.0-java.jar +product/lib/com.qualcomm.qti.bluetooth_audio@1.0.so +product/lib/vendor.qti.hardware.bluetooth_audio@2.0.so +product/lib/vendor.qti.hardware.btconfigstore@1.0.so +product/lib64/com.qualcomm.qti.bluetooth_audio@1.0.so +product/lib64/vendor.qti.hardware.bluetooth_audio@2.0.so +product/lib64/vendor.qti.hardware.btconfigstore@1.0.so +vendor/bin/hw/android.hardware.bluetooth@1.0-service-qti +vendor/etc/diag_mdlog/Bluetooth-WLAN-coex_V01.cfg +vendor/etc/diag_mdlog/Bluetooth_split_audio_V1.cfg +vendor/etc/diag_mdlog/Bluetooth_V1.cfg +vendor/etc/init/android.hardware.bluetooth@1.0-service-qti.rc +vendor/lib/com.qualcomm.qti.bluetooth_audio@1.0.so +vendor/lib/hw/android.hardware.bluetooth.audio@2.0-impl.so +vendor/lib/hw/android.hardware.bluetooth@1.0-impl-qti.so +vendor/lib/hw/audio.bluetooth.default.so +vendor/lib/hw/audio.bluetooth_qti.default.so +vendor/lib/hw/vendor.qti.hardware.bluetooth_audio@2.0-impl.so +vendor/lib/hw/vendor.qti.hardware.bluetooth_sar@1.0-impl.so +vendor/lib/hw/vendor.qti.hardware.btconfigstore@1.0-impl.so +vendor/lib/libbluetooth_audio_session.so +vendor/lib/libbluetooth_audio_session_qti.so +vendor/lib/libbt-hidlclient.so +vendor/lib/libbtnv.so +vendor/lib/vendor.qti.hardware.bluetooth_audio@2.0.so +vendor/lib/vendor.qti.hardware.bluetooth_dun@1.0.so +vendor/lib/vendor.qti.hardware.bluetooth_sar@1.0.so +vendor/lib/vendor.qti.hardware.btconfigstore@1.0.so +vendor/lib64/com.qualcomm.qti.bluetooth_audio@1.0.so +vendor/lib64/hw/android.hardware.bluetooth.audio@2.0-impl.so +vendor/lib64/hw/android.hardware.bluetooth@1.0-impl-qti.so +vendor/lib64/hw/audio.bluetooth.default.so +vendor/lib64/hw/audio.bluetooth_qti.default.so +vendor/lib64/hw/vendor.qti.hardware.bluetooth_audio@2.0-impl.so +vendor/lib64/hw/vendor.qti.hardware.bluetooth_sar@1.0-impl.so +vendor/lib64/hw/vendor.qti.hardware.btconfigstore@1.0-impl.so +vendor/lib64/libbluetooth_audio_session.so +vendor/lib64/libbluetooth_audio_session_qti.so +vendor/lib64/libbt-hidlclient.so +vendor/lib64/libbtnv.so +vendor/lib64/vendor.qti.hardware.bluetooth_audio@2.0.so +vendor/lib64/vendor.qti.hardware.bluetooth_dun@1.0.so +vendor/lib64/vendor.qti.hardware.bluetooth_sar@1.0.so +vendor/lib64/vendor.qti.hardware.btconfigstore@1.0.so + +# Bluetooth-AptX +lib64/libaptXHD_encoder.so +lib64/libaptX_encoder.so + +# CDSP +vendor/bin/cdsprpcd +vendor/lib/libcdsprpc.so +vendor/lib/libcdsp_default_listener.so +vendor/lib/libsysmon_cdsp_skel.so +vendor/lib64/libcdsprpc.so +vendor/lib64/libcdsp_default_listener.so +vendor/lib64/libsysmon_cdsp_skel.so + +# CNE +etc/cne/Nexus/ATT/ATT_profiles.xml +etc/cne/Nexus/ROW/ROW_profiles.xml +etc/cne/Nexus/VZW/VZW_profiles.xml +product/etc/permissions/vendor.qti.hardware.data.connection-V1.0-java.xml +product/etc/permissions/vendor.qti.hardware.data.connection-V1.1-java.xml +-product/framework/vendor.qti.data.factory-V1.0-java.jar +-product/framework/vendor.qti.data.factory-V2.0-java.jar +-product/framework/vendor.qti.data.factory-V2.1-java.jar +-product/framework/vendor.qti.data.slm-V1.0-java.jar +-product/framework/vendor.qti.hardware.data.connection-V1.0-java.jar +-product/framework/vendor.qti.hardware.data.connection-V1.1-java.jar +-product/framework/vendor.qti.hardware.data.dynamicdds-V1.0-java.jar +-product/framework/vendor.qti.hardware.data.iwlan-V1.0-java.jar +product/lib/vendor.qti.data.factory@1.0.so +product/lib/vendor.qti.data.factory@2.0.so +product/lib/vendor.qti.data.factory@2.1.so +product/lib/vendor.qti.data.slm@1.0.so +product/lib/vendor.qti.hardware.data.connection@1.0.so +product/lib/vendor.qti.hardware.data.connection@1.1.so +product/lib/vendor.qti.hardware.data.dynamicdds@1.0.so +product/lib/vendor.qti.hardware.data.iwlan@1.0.so +product/lib64/vendor.qti.data.factory@1.0.so +product/lib64/vendor.qti.data.factory@2.0.so +product/lib64/vendor.qti.data.factory@2.1.so +product/lib64/vendor.qti.data.slm@1.0.so +product/lib64/vendor.qti.hardware.data.connection@1.0.so +product/lib64/vendor.qti.hardware.data.connection@1.1.so +product/lib64/vendor.qti.hardware.data.dynamicdds@1.0.so +product/lib64/vendor.qti.hardware.data.iwlan@1.0.so +-vendor/app/CneApp/CneApp.apk +-vendor/app/IWlanService/IWlanService.apk +vendor/bin/cnd +vendor/etc/cne/profileSlm.xml +vendor/etc/cne/slm.conf +vendor/etc/cne/wqeclient/ATT/ATT_profile1.xml +vendor/etc/cne/wqeclient/ATT/ATT_profile2.xml +vendor/etc/cne/wqeclient/ATT/ATT_profile3.xml +vendor/etc/cne/wqeclient/ATT/ATT_profile4.xml +vendor/etc/cne/wqeclient/ATT/ATT_profile5.xml +vendor/etc/cne/wqeclient/ATT/ATT_profile6.xml +vendor/etc/cne/wqeclient/ROW/ROW_profile1.xml +vendor/etc/cne/wqeclient/ROW/ROW_profile15.xml +vendor/etc/cne/wqeclient/ROW/ROW_profile16.xml +vendor/etc/cne/wqeclient/ROW/ROW_profile17.xml +vendor/etc/cne/wqeclient/ROW/ROW_profile18.xml +vendor/etc/cne/wqeclient/ROW/ROW_profile19.xml +vendor/etc/cne/wqeclient/ROW/ROW_profile2.xml +vendor/etc/cne/wqeclient/ROW/ROW_profile20.xml +vendor/etc/cne/wqeclient/ROW/ROW_profile21.xml +vendor/etc/cne/wqeclient/ROW/ROW_profile3.xml +vendor/etc/cne/wqeclient/ROW/ROW_profile32.xml +vendor/etc/cne/wqeclient/ROW/ROW_profile4.xml +vendor/etc/cne/wqeclient/ROW/ROW_profile5.xml +vendor/etc/cne/wqeclient/ROW/ROW_profile6.xml +vendor/etc/cne/wqeclient/ROW/ROW_profile7.xml +vendor/etc/cne/wqeclient/VZW/VZW_profile1.xml +vendor/etc/cne/wqeclient/VZW/VZW_profile2.xml +vendor/etc/cne/wqeclient/VZW/VZW_profile3.xml +vendor/etc/cne/wqeclient/VZW/VZW_profile4.xml +vendor/etc/cne/wqeclient/VZW/VZW_profile5.xml +vendor/etc/cne/wqeclient/VZW/VZW_profile6.xml +vendor/etc/init/cnd.rc +vendor/lib/libcne.so +vendor/lib/libcneapiclient.so +vendor/lib/libcneoplookup.so +vendor/lib/libcneqmiutils.so +vendor/lib/libwms.so +vendor/lib/libwqe.so +vendor/lib/libxml.so +vendor/lib/vendor.qti.data.factory@2.0.so +vendor/lib/vendor.qti.data.factory@2.1.so +vendor/lib/vendor.qti.data.slm@1.0.so +vendor/lib/vendor.qti.hardware.data.cne.internal.api@1.0.so +vendor/lib/vendor.qti.hardware.data.cne.internal.constants@1.0.so +vendor/lib/vendor.qti.hardware.data.cne.internal.server@1.0.so +vendor/lib/vendor.qti.hardware.data.connection@1.0.so +vendor/lib/vendor.qti.hardware.data.connection@1.1.so +vendor/lib/vendor.qti.hardware.data.dynamicdds@1.0.so +vendor/lib/vendor.qti.hardware.data.iwlan@1.0.so +vendor/lib/vendor.qti.hardware.data.qmi@1.0.so +vendor/lib64/libcne.so +vendor/lib64/libcneapiclient.so +vendor/lib64/libcneoplookup.so +vendor/lib64/libcneqmiutils.so +vendor/lib64/libwms.so +vendor/lib64/libwqe.so +vendor/lib64/libxml.so +vendor/lib64/vendor.qti.data.factory@2.0.so +vendor/lib64/vendor.qti.data.factory@2.1.so +vendor/lib64/vendor.qti.data.slm@1.0.so +vendor/lib64/vendor.qti.hardware.data.cne.internal.api@1.0.so +vendor/lib64/vendor.qti.hardware.data.cne.internal.constants@1.0.so +vendor/lib64/vendor.qti.hardware.data.cne.internal.server@1.0.so +vendor/lib64/vendor.qti.hardware.data.connection@1.0.so +vendor/lib64/vendor.qti.hardware.data.connection@1.1.so +vendor/lib64/vendor.qti.hardware.data.dynamicdds@1.0.so +vendor/lib64/vendor.qti.hardware.data.iwlan@1.0.so +vendor/lib64/vendor.qti.hardware.data.qmi@1.0.so + +# CVP +product/lib/vendor.qti.hardware.cvp@1.0-adapter-helper.so +product/lib/vendor.qti.hardware.cvp@1.0.so +product/lib64/vendor.qti.hardware.cvp@1.0-adapter-helper.so +product/lib64/vendor.qti.hardware.cvp@1.0.so +vendor/lib/hw/vendor.qti.hardware.cvp@1.0-impl.so +vendor/lib/libcvp.so +vendor/lib/libcvpcpuRev_skel.so +vendor/lib/libcvp_common.so +vendor/lib/libcvp_stub.so +vendor/lib/vendor.qti.hardware.cvp@1.0.so +vendor/lib64/hw/vendor.qti.hardware.cvp@1.0-impl.so +vendor/lib64/libcvp.so +vendor/lib64/libcvpcpuRev_skel.so +vendor/lib64/libcvp_common.so +vendor/lib64/libcvp_stub.so +vendor/lib64/vendor.qti.hardware.cvp@1.0.so + +# Camera +vendor/bin/hw/android.hardware.camera.provider@2.4-service_64 +vendor/bin/hw/motorola.hardware.camera.imgtuner@1.0-service +vendor/etc/init/android.hardware.camera.provider@2.4-service_64.rc +vendor/etc/init/motorola.hardware.camera.imgtuner@1.0-service.rc +vendor/lib/android.hardware.camera.provider@2.4-external.so +vendor/lib/android.hardware.camera.provider@2.4-legacy.so +vendor/lib/camera/com.mot.eeprom.mot_dw9767_s5kgm1st_eeprom.so +vendor/lib/camera/com.mot.eeprom.mot_gt24p64b_ov02b10_eeprom.so +vendor/lib/camera/com.mot.eeprom.mot_ov02b1b_otp.so +vendor/lib/camera/com.mot.eeprom.mot_s5k4h7_otp_eeprom.so +vendor/lib/camera/com.qti.sensor.mot_ov02b10.so +vendor/lib/camera/com.qti.sensor.mot_ov02b1b.so +vendor/lib/camera/com.qti.sensor.mot_s5k4h7.so +vendor/lib/camera/com.qti.sensor.mot_s5kgm1st.so +vendor/lib/camera/com.qti.sensormodule.mot_guamp_ov02b10_ofilm.bin +vendor/lib/camera/com.qti.sensormodule.mot_guamp_ov02b1b_ofilm.bin +vendor/lib/camera/com.qti.sensormodule.mot_guamp_s5k4h7_ofilm.bin +vendor/lib/camera/com.qti.sensormodule.mot_guamp_s5kgm1st_ofilm.bin +vendor/lib/camera/com.qti.tuned.default.bin +vendor/lib/camera/com.qti.tuned.mot_guamp_ov02b10.bin +vendor/lib/camera/com.qti.tuned.mot_guamp_ov02b1b.bin +vendor/lib/camera/com.qti.tuned.mot_guamp_s5k4h7.bin +vendor/lib/camera/com.qti.tuned.mot_guamp_s5kgm1st.bin +vendor/lib/camera/components/com.qti.camx.chiiqutils.so +vendor/lib/camera/components/com.qti.eisv2.so +vendor/lib/camera/components/com.qti.eisv3.so +vendor/lib/camera/components/com.qti.hvx.addconstant.so +vendor/lib/camera/components/com.qti.hvx.binning.so +vendor/lib/camera/components/com.qti.node.customhwnode.so +vendor/lib/camera/components/com.qti.node.depth.so +vendor/lib/camera/components/com.qti.node.dewarp.so +vendor/lib/camera/components/com.qti.node.dummyrtb.so +vendor/lib/camera/components/com.qti.node.dummysat.so +vendor/lib/camera/components/com.qti.node.eisv2.so +vendor/lib/camera/components/com.qti.node.eisv3.so +vendor/lib/camera/components/com.qti.node.fcv.so +vendor/lib/camera/components/com.qti.node.gpu.so +vendor/lib/camera/components/com.qti.node.memcpy.so +vendor/lib/camera/components/com.qti.node.remosaic.so +vendor/lib/camera/components/com.qti.node.stich.so +vendor/lib/camera/components/com.qti.node.swaidenoiser.so +vendor/lib/camera/components/com.qti.node.swcac.so +vendor/lib/camera/components/com.qti.node.swlsc.so +vendor/lib/camera/components/com.qti.node.swmctf.so +vendor/lib/camera/components/com.qti.node.swmfnr.so +vendor/lib/camera/components/com.qti.node.swregistration.so +vendor/lib/camera/components/com.qti.stats.aec.so +vendor/lib/camera/components/com.qti.stats.aecwrapper.so +vendor/lib/camera/components/com.qti.stats.af.so +vendor/lib/camera/components/com.qti.stats.afd.so +vendor/lib/camera/components/com.qti.stats.afwrapper.so +vendor/lib/camera/components/com.qti.stats.asd.so +vendor/lib/camera/components/com.qti.stats.awb.so +vendor/lib/camera/components/com.qti.stats.awbwrapper.so +vendor/lib/camera/components/com.qti.stats.haf.so +vendor/lib/camera/components/com.qti.stats.hafoverride.so +vendor/lib/camera/components/com.qti.stats.pdlib.so +vendor/lib/camera/components/com.qti.stats.pdlibsony.so +vendor/lib/camera/components/com.qti.stats.pdlibwrapper.so +vendor/lib/camera/components/com.qti.stats.tracker.so +vendor/lib/camera/components/com.qtistatic.stats.aec.so +vendor/lib/camera/components/com.qtistatic.stats.af.so +vendor/lib/camera/components/com.qtistatic.stats.awb.so +vendor/lib/camera/components/com.qtistatic.stats.pdlib.so +vendor/lib/camera/components/com.vidhance.node.processing.so +vendor/lib/camera/components/com.vidhance.stats.aec_dmbr.so +vendor/lib/camera/fdconfigpreview.bin +vendor/lib/camera/fdconfigpreviewlite.bin +vendor/lib/camera/fdconfigvideo.bin +vendor/lib/camera/fdconfigvideolite.bin +vendor/lib/hw/android.hardware.camera.provider@2.4-impl.so +vendor/lib/hw/camera.qcom.so +vendor/lib/hw/com.qti.chi.override.so +vendor/lib/hw/motorola.hardware.camera.imgtuner@1.0-impl.so +vendor/lib/libcamera2ndk_vendor.so +vendor/lib/libcamerapostproc.so +vendor/lib/libcamera_nn_stub.so +vendor/lib/libcamxexternalformatutils.so +vendor/lib/libcamxfacialfeatures.so +vendor/lib/libcamxfdalgo.so +vendor/lib/libcamxfdengine.so +vendor/lib/libcamxifestriping.so +vendor/lib/libcamximageformatutils.so +vendor/lib/libcamxncs.so +vendor/lib/libcamxstatscore.so +vendor/lib/libcamxswispiqmodule.so +vendor/lib/libcamxswprocessalgo.so +vendor/lib/libcamxtintlessalgo.so +vendor/lib/libcapiv2svacnn.so +vendor/lib/libcapiv2svarnn.so +vendor/lib/libcapiv2vop.so +vendor/lib/libcom.qti.chinodeutils.so +vendor/lib/libDxHdcp.so +vendor/lib/libgui_vendor.so +vendor/lib/libsnsapi.so +vendor/lib/libsnsdiaglog.so +vendor/lib/libsns_device_mode_stub.so +vendor/lib/libsns_fastRPC_util.so +vendor/lib/libsns_low_lat_stream_stub.so +vendor/lib/libswregistrationalgo.so +vendor/lib/libswvdec.so +vendor/lib/libvideoutils.so +vendor/lib/libvidhance.so +vendor/lib/motorola.hardware.camera.imgtuner@1.0.so +vendor/lib/vendor.qti.hardware.camera.postproc@1.0-service-impl.so +vendor/lib/vendor.qti.hardware.camera.postproc@1.0.so +vendor/lib64/android.hardware.camera.provider@2.4-external.so +vendor/lib64/android.hardware.camera.provider@2.4-legacy.so +vendor/lib64/camera/com.mot.eeprom.mot_dw9767_s5kgm1st_eeprom.so +vendor/lib64/camera/com.mot.eeprom.mot_gt24p64b_ov02b10_eeprom.so +vendor/lib64/camera/com.mot.eeprom.mot_ov02b1b_otp.so +vendor/lib64/camera/com.mot.eeprom.mot_s5k4h7_otp_eeprom.so +vendor/lib64/camera/com.qti.sensor.mot_ov02b10.so +vendor/lib64/camera/com.qti.sensor.mot_ov02b1b.so +vendor/lib64/camera/com.qti.sensor.mot_s5k4h7.so +vendor/lib64/camera/com.qti.sensor.mot_s5kgm1st.so +vendor/lib64/camera/com.qti.sensormodule.mot_guamp_ov02b10_ofilm.bin +vendor/lib64/camera/com.qti.sensormodule.mot_guamp_ov02b1b_ofilm.bin +vendor/lib64/camera/com.qti.sensormodule.mot_guamp_s5k4h7_ofilm.bin +vendor/lib64/camera/com.qti.sensormodule.mot_guamp_s5kgm1st_ofilm.bin +vendor/lib64/camera/com.qti.tuned.default.bin +vendor/lib64/camera/com.qti.tuned.mot_guamp_ov02b10.bin +vendor/lib64/camera/com.qti.tuned.mot_guamp_ov02b1b.bin +vendor/lib64/camera/com.qti.tuned.mot_guamp_s5k4h7.bin +vendor/lib64/camera/com.qti.tuned.mot_guamp_s5kgm1st.bin +vendor/lib64/camera/components/com.qti.camx.chiiqutils.so +vendor/lib64/camera/components/com.qti.eisv2.so +vendor/lib64/camera/components/com.qti.eisv3.so +vendor/lib64/camera/components/com.qti.hvx.addconstant.so +vendor/lib64/camera/components/com.qti.hvx.binning.so +vendor/lib64/camera/components/com.qti.node.customhwnode.so +vendor/lib64/camera/components/com.qti.node.depth.so +vendor/lib64/camera/components/com.qti.node.dewarp.so +vendor/lib64/camera/components/com.qti.node.dummyrtb.so +vendor/lib64/camera/components/com.qti.node.dummysat.so +vendor/lib64/camera/components/com.qti.node.eisv2.so +vendor/lib64/camera/components/com.qti.node.eisv3.so +vendor/lib64/camera/components/com.qti.node.fcv.so +vendor/lib64/camera/components/com.qti.node.gpu.so +vendor/lib64/camera/components/com.qti.node.memcpy.so +vendor/lib64/camera/components/com.qti.node.remosaic.so +vendor/lib64/camera/components/com.qti.node.stich.so +vendor/lib64/camera/components/com.qti.node.swaidenoiser.so +vendor/lib64/camera/components/com.qti.node.swcac.so +vendor/lib64/camera/components/com.qti.node.swlsc.so +vendor/lib64/camera/components/com.qti.node.swmctf.so +vendor/lib64/camera/components/com.qti.node.swmfnr.so +vendor/lib64/camera/components/com.qti.node.swregistration.so +vendor/lib64/camera/components/com.qti.stats.aec.so +vendor/lib64/camera/components/com.qti.stats.aecwrapper.so +vendor/lib64/camera/components/com.qti.stats.af.so +vendor/lib64/camera/components/com.qti.stats.afd.so +vendor/lib64/camera/components/com.qti.stats.afwrapper.so +vendor/lib64/camera/components/com.qti.stats.asd.so +vendor/lib64/camera/components/com.qti.stats.awb.so +vendor/lib64/camera/components/com.qti.stats.awbwrapper.so +vendor/lib64/camera/components/com.qti.stats.haf.so +vendor/lib64/camera/components/com.qti.stats.hafoverride.so +vendor/lib64/camera/components/com.qti.stats.pdlib.so +vendor/lib64/camera/components/com.qti.stats.pdlibsony.so +vendor/lib64/camera/components/com.qti.stats.pdlibwrapper.so +vendor/lib64/camera/components/com.qti.stats.tracker.so +vendor/lib64/camera/components/com.qtistatic.stats.aec.so +vendor/lib64/camera/components/com.qtistatic.stats.af.so +vendor/lib64/camera/components/com.qtistatic.stats.awb.so +vendor/lib64/camera/components/com.qtistatic.stats.pdlib.so +vendor/lib64/camera/components/com.vidhance.node.processing.so +vendor/lib64/camera/components/com.vidhance.stats.aec_dmbr.so +vendor/lib64/camera/fdconfigpreview.bin +vendor/lib64/camera/fdconfigpreviewlite.bin +vendor/lib64/camera/fdconfigvideo.bin +vendor/lib64/camera/fdconfigvideolite.bin +vendor/lib64/hw/android.hardware.camera.provider@2.4-impl.so +vendor/lib64/hw/camera.qcom.so +vendor/lib64/hw/com.qti.chi.override.so +vendor/lib64/hw/motorola.hardware.camera.imgtuner@1.0-impl.so +vendor/lib64/libcamera2ndk_vendor.so +vendor/lib64/libcamerapostproc.so +vendor/lib64/libcamera_nn_stub.so +vendor/lib64/libcamxexternalformatutils.so +vendor/lib64/libcamxfacialfeatures.so +vendor/lib64/libcamxfdalgo.so +vendor/lib64/libcamxfdengine.so +vendor/lib64/libcamxifestriping.so +vendor/lib64/libcamximageformatutils.so +vendor/lib64/libcamxncs.so +vendor/lib64/libcamxstatscore.so +vendor/lib64/libcamxswispiqmodule.so +vendor/lib64/libcamxswprocessalgo.so +vendor/lib64/libcamxtintlessalgo.so +vendor/lib64/libcapiv2svacnn.so +vendor/lib64/libcapiv2svarnn.so +vendor/lib64/libcapiv2vop.so +vendor/lib64/libcom.qti.chinodeutils.so +vendor/lib64/libsnsapi.so +vendor/lib64/libsnsdiaglog.so +vendor/lib64/libsns_device_mode_stub.so +vendor/lib64/libsns_fastRPC_util.so +vendor/lib64/libsns_low_lat_stream_stub.so +vendor/lib64/libswregistrationalgo.so +vendor/lib64/libswvdec.so +vendor/lib64/libvidhance.so +vendor/lib64/motorola.hardware.camera.imgtuner@1.0.so +vendor/lib64/vendor.qti.hardware.camera.postproc@1.0-service-impl.so +vendor/lib64/vendor.qti.hardware.camera.postproc@1.0.so + +# Camera-configs +vendor/etc/camera/dual_golden_depth.bin +vendor/etc/camera/vidhance_calibration + +# Camera-sensors +vendor/lib/libmmcamera_cac3.so +vendor/lib/libmmcamera_faceproc.so +vendor/lib/libmmcamera_faceproc2.so +vendor/lib/libmmcamera_lscv35.so +vendor/lib/libmmcamera_mfnr.so +vendor/lib64/libmmcamera_cac3.so +vendor/lib64/libmmcamera_faceproc.so +vendor/lib64/libmmcamera_faceproc2.so +vendor/lib64/libmmcamera_lscv35.so +vendor/lib64/libmmcamera_mfnr.so + +# Charger +vendor/bin/hvdcp_opti + +# Configstore +-product/framework/vendor.qti.hardware.capabilityconfigstore-V1.0-java.jar +product/lib/vendor.qti.hardware.capabilityconfigstore@1.0.so +product/lib64/vendor.qti.hardware.capabilityconfigstore@1.0.so +vendor/bin/hw/android.hardware.configstore@1.1-service +vendor/bin/hw/vendor.qti.hardware.capabilityconfigstore@1.0-service +vendor/etc/init/android.hardware.configstore@1.1-service.rc +vendor/etc/init/vendor.qti.hardware.capabilityconfigstore@1.0-service.rc +vendor/lib/hw/vendor.qti.hardware.capabilityconfigstore@1.0-impl.so +vendor/lib/vendor.qti.hardware.capabilityconfigstore@1.0.so +vendor/lib64/hw/vendor.qti.hardware.capabilityconfigstore@1.0-impl.so +vendor/lib64/vendor.qti.hardware.capabilityconfigstore@1.0.so + +# DPM +-framework/tcmclient.jar +product/bin/dpmd +product/etc/dpm/dpm.conf +product/etc/init/dpmd.rc +product/etc/permissions/com.qti.dpmframework.xml +product/etc/permissions/dpmapi.xml +-product/framework/com.qti.dpmframework.jar +-product/framework/dpmapi.jar +product/lib/com.qualcomm.qti.dpm.api@1.0.so +product/lib/libdpmctmgr.so +product/lib/libdpmfdmgr.so +product/lib/libdpmframework.so +product/lib/libdpmtcm.so +product/lib64/com.qualcomm.qti.dpm.api@1.0.so +product/lib64/libdpmctmgr.so +product/lib64/libdpmfdmgr.so +product/lib64/libdpmframework.so +product/lib64/libdpmtcm.so +-product/priv-app/dpmserviceapp/dpmserviceapp.apk +vendor/bin/dpmQmiMgr +vendor/lib/com.qualcomm.qti.dpm.api@1.0.so +vendor/lib/libdpmqmihal.so +vendor/lib64/com.qualcomm.qti.dpm.api@1.0.so +vendor/lib64/libdpmqmihal.so + +# DRM +vendor/bin/qseecomd +vendor/lib/libbase64.so +vendor/lib/libcpion.so +vendor/lib/libcppf.so +vendor/lib/libdrmfs.so +vendor/lib/libdrmtime.so +vendor/lib/libGPQTEEC_vendor.so +vendor/lib/libGPreqcancel.so +vendor/lib/libGPreqcancel_svc.so +vendor/lib/libGPTEE_vendor.so +vendor/lib/liboemcrypto.so +vendor/lib/libops.so +vendor/lib/libqisl.so +vendor/lib/libQSEEComAPI.so +vendor/lib/librpmb.so +vendor/lib/libsdedrm.so +vendor/lib/libsecureui.so +vendor/lib/libSecureUILib.so +vendor/lib/libsecureui_svcsock.so +vendor/lib/libsi.so +vendor/lib/libssd.so +vendor/lib/libStDrvInt.so +vendor/lib/libtzdrmgenprov.so +vendor/lib64/libbase64.so +vendor/lib64/libcpion.so +vendor/lib64/libdrmfs.so +vendor/lib64/libdrmtime.so +vendor/lib64/libGPQTEEC_vendor.so +vendor/lib64/libGPreqcancel.so +vendor/lib64/libGPreqcancel_svc.so +vendor/lib64/libGPTEE_vendor.so +vendor/lib64/liboemcrypto.so +vendor/lib64/libops.so +vendor/lib64/libqisl.so +vendor/lib64/libQSEEComAPI.so +vendor/lib64/librpmb.so +vendor/lib64/libsdedrm.so +vendor/lib64/libsecureui.so +vendor/lib64/libSecureUILib.so +vendor/lib64/libsecureui_svcsock.so +vendor/lib64/libsi.so +vendor/lib64/libssd.so +vendor/lib64/libStDrvInt.so +vendor/lib64/libtzdrmgenprov.so + +# DRM-HDCP +vendor/lib/libhdcpsrm.so +vendor/lib/libmm-hdcpmgr.so +vendor/lib64/libhdcpsrm.so +vendor/lib64/libmm-hdcpmgr.so + +# DRM-Hardware +vendor/bin/hw/android.hardware.drm@1.0-service +vendor/bin/hw/android.hardware.drm@1.2-service.clearkey +vendor/bin/hw/android.hardware.drm@1.2-service.widevine +vendor/etc/init/android.hardware.drm@1.0-service.rc +vendor/etc/init/android.hardware.drm@1.2-service.clearkey.rc +vendor/etc/init/android.hardware.drm@1.2-service.widevine.rc +vendor/lib/hw/android.hardware.drm@1.0-impl.so +vendor/lib64/hw/android.hardware.drm@1.0-impl.so + +# DRM-Qteeconnector +vendor/bin/hw/vendor.qti.hardware.qteeconnector@1.0-service +vendor/etc/init/vendor.qti.hardware.qteeconnector@1.0-service.rc +vendor/lib/hw/vendor.qti.hardware.qteeconnector@1.0-impl.so +vendor/lib/libQTEEConnector_vendor.so +vendor/lib/vendor.qti.hardware.qteeconnector@1.0.so +vendor/lib64/hw/vendor.qti.hardware.qteeconnector@1.0-impl.so +vendor/lib64/libQTEEConnector_vendor.so +vendor/lib64/vendor.qti.hardware.qteeconnector@1.0.so + +# DRM-Widevine +vendor/lib/mediadrm/libdrmclearkeyplugin.so +vendor/lib64/libwvhidl.so +vendor/lib64/mediadrm/libdrmclearkeyplugin.so + +# Display-Hardware +product/lib/vendor.display.config@1.0.so +product/lib/vendor.display.config@1.1.so +product/lib/vendor.display.config@1.10.so +product/lib/vendor.display.config@1.11.so +product/lib/vendor.display.config@1.12.so +product/lib/vendor.display.config@1.13.so +product/lib/vendor.display.config@1.14.so +product/lib/vendor.display.config@1.15.so +product/lib/vendor.display.config@1.16.so +product/lib/vendor.display.config@1.2.so +product/lib/vendor.display.config@1.3.so +product/lib/vendor.display.config@1.4.so +product/lib/vendor.display.config@1.5.so +product/lib/vendor.display.config@1.6.so +product/lib/vendor.display.config@1.7.so +product/lib/vendor.display.config@1.8.so +product/lib/vendor.display.config@1.9.so +product/lib64/vendor.display.config@1.0.so +product/lib64/vendor.display.config@1.1.so +product/lib64/vendor.display.config@1.10.so +product/lib64/vendor.display.config@1.11.so +product/lib64/vendor.display.config@1.12.so +product/lib64/vendor.display.config@1.13.so +product/lib64/vendor.display.config@1.14.so +product/lib64/vendor.display.config@1.15.so +product/lib64/vendor.display.config@1.16.so +product/lib64/vendor.display.config@1.2.so +product/lib64/vendor.display.config@1.3.so +product/lib64/vendor.display.config@1.4.so +product/lib64/vendor.display.config@1.5.so +product/lib64/vendor.display.config@1.6.so +product/lib64/vendor.display.config@1.7.so +product/lib64/vendor.display.config@1.8.so +product/lib64/vendor.display.config@1.9.so +vendor/bin/hw/android.hardware.memtrack@1.0-service +vendor/bin/hw/com.motorola.hardware.display.panel@1.0-service +vendor/bin/hw/vendor.qti.hardware.display.allocator-service +vendor/bin/hw/vendor.qti.hardware.display.composer-service +vendor/etc/init/android.hardware.memtrack@1.0-service.rc +vendor/etc/init/com.motorola.hardware.display.panel@1.0-service.rc +vendor/etc/init/vendor.qti.hardware.display.allocator-service.rc +vendor/etc/init/vendor.qti.hardware.display.composer-service.rc +-vendor/etc/vintf/manifest/android.hardware.graphics.mapper-impl-qti-display.xml +-vendor/etc/vintf/manifest/vendor.qti.hardware.display.allocator-service.xml +-vendor/etc/vintf/manifest/vendor.qti.hardware.display.composer-service.xml +vendor/lib/com.motorola.hardware.display.panel@1.0.so +vendor/lib/hw/android.hardware.graphics.mapper@3.0-impl-qti-display.so +vendor/lib/hw/android.hardware.memtrack@1.0-impl.so +vendor/lib/hw/com.motorola.hardware.display.panel@1.0-impl.so +vendor/lib/hw/gralloc.bengal.so +vendor/lib/hw/gralloc.default.so +vendor/lib/hw/memtrack.bengal.so +vendor/lib/libdisplaydebug.so +vendor/lib/libdisplayqos.so +vendor/lib/libdpps.so +vendor/lib/libdrm.so +vendor/lib/libdrmutils.so +vendor/lib/libgralloccore.so +vendor/lib/libgrallocutils.so +vendor/lib/libqdMetaData.so +vendor/lib/libqdutils.so +vendor/lib/libqservice.so +vendor/lib/libsdm-colormgr-algo.so +vendor/lib/libsdmcore.so +vendor/lib/libsdmextension.so +vendor/lib/libsdmutils.so +vendor/lib/vendor.display.config@1.0.so +vendor/lib/vendor.display.config@1.1.so +vendor/lib/vendor.display.config@1.10.so +vendor/lib/vendor.display.config@1.11.so +vendor/lib/vendor.display.config@1.12.so +vendor/lib/vendor.display.config@1.13.so +vendor/lib/vendor.display.config@1.14.so +vendor/lib/vendor.display.config@1.15.so +vendor/lib/vendor.display.config@1.2.so +vendor/lib/vendor.display.config@1.3.so +vendor/lib/vendor.display.config@1.4.so +vendor/lib/vendor.display.config@1.5.so +vendor/lib/vendor.display.config@1.6.so +vendor/lib/vendor.display.config@1.7.so +vendor/lib/vendor.display.config@1.8.so +vendor/lib/vendor.display.config@1.9.so +vendor/lib/vendor.qti.hardware.display.allocator@1.0.so +vendor/lib/vendor.qti.hardware.display.allocator@3.0.so +vendor/lib/vendor.qti.hardware.display.composer@1.0.so +vendor/lib/vendor.qti.hardware.display.composer@2.0.so +vendor/lib/vendor.qti.hardware.display.mapper@1.0.so +vendor/lib/vendor.qti.hardware.display.mapper@1.1.so +vendor/lib/vendor.qti.hardware.display.mapper@2.0.so +vendor/lib/vendor.qti.hardware.display.mapper@3.0.so +vendor/lib/vendor.qti.hardware.display.mapperextensions@1.0.so +vendor/lib/vendor.qti.hardware.display.mapperextensions@1.1.so +vendor/lib64/com.motorola.hardware.display.panel@1.0.so +vendor/lib64/hw/android.hardware.graphics.mapper@3.0-impl-qti-display.so +vendor/lib64/hw/android.hardware.memtrack@1.0-impl.so +vendor/lib64/hw/com.motorola.hardware.display.panel@1.0-impl.so +vendor/lib64/hw/gralloc.bengal.so +vendor/lib64/hw/gralloc.default.so +vendor/lib64/hw/memtrack.bengal.so +vendor/lib64/libdisplaydebug.so +vendor/lib64/libdisplayqos.so +vendor/lib64/libdpps.so +vendor/lib64/libdrm.so +vendor/lib64/libdrmutils.so +vendor/lib64/libgpu_tonemapper.so +vendor/lib64/libgralloccore.so +vendor/lib64/libgrallocutils.so +vendor/lib64/libqdMetaData.so +vendor/lib64/libqdutils.so +vendor/lib64/libqservice.so +vendor/lib64/libsdm-colormgr-algo.so +vendor/lib64/libsdmcore.so +vendor/lib64/libsdmextension.so +vendor/lib64/libsdmutils.so +vendor/lib64/vendor.display.config@1.0.so +vendor/lib64/vendor.display.config@1.1.so +vendor/lib64/vendor.display.config@1.10.so +vendor/lib64/vendor.display.config@1.11.so +vendor/lib64/vendor.display.config@1.12.so +vendor/lib64/vendor.display.config@1.13.so +vendor/lib64/vendor.display.config@1.14.so +vendor/lib64/vendor.display.config@1.15.so +vendor/lib64/vendor.display.config@1.2.so +vendor/lib64/vendor.display.config@1.3.so +vendor/lib64/vendor.display.config@1.4.so +vendor/lib64/vendor.display.config@1.5.so +vendor/lib64/vendor.display.config@1.6.so +vendor/lib64/vendor.display.config@1.7.so +vendor/lib64/vendor.display.config@1.8.so +vendor/lib64/vendor.display.config@1.9.so +vendor/lib64/vendor.qti.hardware.display.allocator@1.0.so +vendor/lib64/vendor.qti.hardware.display.allocator@3.0.so +vendor/lib64/vendor.qti.hardware.display.composer@1.0.so +vendor/lib64/vendor.qti.hardware.display.composer@2.0.so +vendor/lib64/vendor.qti.hardware.display.composer@2.1.so +vendor/lib64/vendor.qti.hardware.display.mapper@1.0.so +vendor/lib64/vendor.qti.hardware.display.mapper@1.1.so +vendor/lib64/vendor.qti.hardware.display.mapper@2.0.so +vendor/lib64/vendor.qti.hardware.display.mapper@3.0.so +vendor/lib64/vendor.qti.hardware.display.mapperextensions@1.0.so +vendor/lib64/vendor.qti.hardware.display.mapperextensions@1.1.so + +# Display-calibration +vendor/etc/qdcm_calib_data_mipi_mot_vid_hlt_720p_652.xml +vendor/etc/qdcm_calib_data_mipi_mot_vid_ili9882h_hlt_720p_652.xml +vendor/etc/qdcm_calib_data_mipi_mot_vid_ili9882n_tm_720p_652.xml +vendor/etc/qdcm_calib_data_mipi_mot_vid_tm_720p_652.xml + +# ESE-Powermanager +vendor/lib/vendor.qti.esepowermanager@1.0.so +vendor/lib64/vendor.qti.esepowermanager@1.0.so + +# FM +lib/fm_helium.so +lib/libfm-hci.so +lib64/fm_helium.so +lib64/libfm-hci.so +product/lib/vendor.qti.hardware.fm@1.0.so +product/lib64/vendor.qti.hardware.fm@1.0.so +vendor/bin/fm_qsoc_patches +vendor/lib/ftm_fm_lib.so +vendor/lib/hw/vendor.qti.hardware.fm@1.0-impl.so +vendor/lib/vendor.qti.hardware.fm@1.0.so +vendor/lib64/ftm_fm_lib.so +vendor/lib64/hw/vendor.qti.hardware.fm@1.0-impl.so +vendor/lib64/vendor.qti.hardware.fm@1.0.so + +# Factory +-product/framework/vendor.qti.hardware.factory-V1.0-java.jar +-product/framework/vendor.qti.hardware.factory-V1.1-java.jar +product/lib/vendor.qti.hardware.factory@1.0.so +product/lib/vendor.qti.hardware.factory@1.1.so +product/lib64/vendor.qti.hardware.factory@1.0.so +product/lib64/vendor.qti.hardware.factory@1.1.so +vendor/bin/hw/vendor.qti.hardware.factory@1.0-service +vendor/etc/init/vendor.qti.hardware.factory@1.0-service.rc +vendor/lib64/vendor.qti.hardware.factory@1.0.so +vendor/lib64/vendor.qti.hardware.factory@1.1.so + +# Fingerprint +vendor/bin/hw/android.hardware.biometrics.fingerprint@2.1-goodixservice +vendor/bin/hw/android.hardware.biometrics.fingerprint@2.1-service-fpc +vendor/bin/hw/goodix_ident +vendor/etc/init/android.hardware.biometrics.fingerprint@2.1-goodixservice.rc +vendor/etc/init/android.hardware.biometrics.fingerprint@2.1-service-fpc2.rc +vendor/firmware/goodix-gtx5-38-04-foles.bin +vendor/firmware/goodix-gtx5-40-04-parker.bin +vendor/firmware/goodix-gtx8-01-14-racerl.bin +vendor/firmware/goodix-GTx8-18-01-racer.bin +vendor/firmware/goodix_cfg_group2.bin +vendor/firmware/goodix_cfg_group2_parker.bin +vendor/firmware/goodix_cfg_group_boe_racerl.bin +vendor/lib/com.motorola.hardware.biometric.fingerprint@1.0.so +vendor/lib/hw/fingerprint.goodix.default.so +vendor/lib/libgf_ca.so +vendor/lib/libgf_hal.so +vendor/lib/libgoodix.sensortest.hal.so +vendor/lib/libgoodixhwfingerprint.so +vendor/lib/modules/goodix_fod_mmi.ko +vendor/lib/vendor.goodix.hardware.biometrics.fingerprint@3.0.so +vendor/lib/vendor.qti.hardware.fingerprint@1.0.so +vendor/lib64/com.fingerprints.extension@1.0.so +vendor/lib64/com.motorola.hardware.biometric.fingerprint@1.0.so +vendor/lib64/hw/fingerprint.goodix.default.so +vendor/lib64/libgf_ca.so +vendor/lib64/libgf_hal.so +vendor/lib64/libgoodix.sensortest.hal.so +vendor/lib64/libgoodixhwfingerprint.so +vendor/lib64/vendor.goodix.hardware.biometrics.fingerprint@3.0.so +vendor/lib64/vendor.qti.hardware.fingerprint@1.0.so + +# Firmware +vendor/firmware/a630_sqe.fw +vendor/firmware/a650_gmu.bin +vendor/firmware/a650_sqe.fw +vendor/firmware/a702_sqe.fw +vendor/firmware/a702_zap.b00 +vendor/firmware/a702_zap.b01 +vendor/firmware/a702_zap.b02 +vendor/firmware/a702_zap.elf +vendor/firmware/a702_zap.mdt +vendor/firmware/AbovCapSense.BIN +vendor/firmware/aw869x_haptic.bin +vendor/firmware/aw869x_rtp.bin +vendor/firmware/aw869x_rtp_Argo_Navis.bin +vendor/firmware/aw869x_rtp_Attentive.bin +vendor/firmware/aw869x_rtp_Awake.bin +vendor/firmware/aw869x_rtp_Bird_Loop.bin +vendor/firmware/aw869x_rtp_Brilliant_Times.bin +vendor/firmware/aw869x_rtp_Chimey_Phone.bin +vendor/firmware/aw869x_rtp_Complex.bin +vendor/firmware/aw869x_rtp_Crazy_Dream.bin +vendor/firmware/aw869x_rtp_Curve_Ball_Blend.bin +vendor/firmware/aw869x_rtp_Digital_Phone.bin +vendor/firmware/aw869x_rtp_Electrovision.bin +vendor/firmware/aw869x_rtp_Ether_Shake.bin +vendor/firmware/aw869x_rtp_Fateful_Words.bin +vendor/firmware/aw869x_rtp_Flutey_Phone.bin +vendor/firmware/aw869x_rtp_Future_Funk.bin +vendor/firmware/aw869x_rtp_Future_Hi_Tech.bin +vendor/firmware/aw869x_rtp_Girtab.bin +vendor/firmware/aw869x_rtp_Hello.bin +vendor/firmware/aw869x_rtp_Hexagon.bin +vendor/firmware/aw869x_rtp_Hydra.bin +vendor/firmware/aw869x_rtp_Insert_Coin.bin +vendor/firmware/aw869x_rtp_Jumping_Dots.bin +vendor/firmware/aw869x_rtp_Keys.bin +vendor/firmware/aw869x_rtp_Loopy.bin +vendor/firmware/aw869x_rtp_Loopy_Lounge.bin +vendor/firmware/aw869x_rtp_Modular.bin +vendor/firmware/aw869x_rtp_Momentum.bin +vendor/firmware/aw869x_rtp_Morning.bin +vendor/firmware/aw869x_rtp_Moto.bin +vendor/firmware/aw869x_rtp_Natural.bin +vendor/firmware/aw869x_rtp_New_Player.bin +vendor/firmware/aw869x_rtp_Onward.bin +vendor/firmware/aw869x_rtp_Organ_Dub.bin +vendor/firmware/aw869x_rtp_Overclocked.bin +vendor/firmware/aw869x_rtp_Pegasus.bin +vendor/firmware/aw869x_rtp_Pyxis.bin +vendor/firmware/aw869x_rtp_Regrade.bin +vendor/firmware/aw869x_rtp_Scarabaeus.bin +vendor/firmware/aw869x_rtp_Sceptrum.bin +vendor/firmware/aw869x_rtp_Simple.bin +vendor/firmware/aw869x_rtp_Solarium.bin +vendor/firmware/aw869x_rtp_Sparse.bin +vendor/firmware/aw869x_rtp_Terrabytes.bin +vendor/firmware/aw882xx_mono.bin +vendor/firmware/aw882xx_rcv_reg.bin +vendor/firmware/aw882xx_spk_reg.bin +vendor/firmware/hlt_Himax_firmware.bin +vendor/firmware/hlt_Himax_mpfw.bin +vendor/firmware/hlt_hx_criteria.csv +vendor/firmware/ICNL9911.bin +vendor/firmware/ILITEK_FW_HLT.hex +vendor/firmware/ILITEK_FW_TM.hex +vendor/firmware/NT36xxx_MP_Setting_Criteria_6020.csv +vendor/firmware/wigig/wigig.ini +vendor/firmware/wlan/qca_cld/WCNSS_qcom_cfg.ini +vendor/firmware/wlan/qca_cld/wlan_mac.bin + +# GPS +etc/permissions/com.qti.location.sdk.xml +etc/permissions/com.qualcomm.location.xml +etc/permissions/izat.xt.srv.xml +etc/permissions/privapp-permissions-com.qualcomm.location.xml +-framework/com.qti.location.sdk.jar +-framework/izat.xt.srv.jar +lib64/liblocationservice_jni.so +lib64/libxt_native.so +product/lib/vendor.qti.gnss@1.0.so +product/lib/vendor.qti.gnss@1.1.so +product/lib/vendor.qti.gnss@1.2.so +product/lib/vendor.qti.gnss@2.0.so +product/lib/vendor.qti.gnss@2.1.so +product/lib/vendor.qti.gnss@3.0.so +product/lib64/vendor.qti.gnss@1.0.so +product/lib64/vendor.qti.gnss@1.1.so +product/lib64/vendor.qti.gnss@1.2.so +product/lib64/vendor.qti.gnss@2.0.so +product/lib64/vendor.qti.gnss@2.1.so +product/lib64/vendor.qti.gnss@3.0.so +vendor/bin/garden_app +vendor/bin/hw/android.hardware.gnss@2.0-service-qti +vendor/bin/loc_launcher +vendor/bin/lowi-server +vendor/bin/xtra-daemon +vendor/etc/cacert_location.pem +vendor/etc/init/android.hardware.gnss@2.0-service-qti.rc +-vendor/etc/vintf/manifest/android.hardware.gnss@2.0-service-qti.xml +-vendor/etc/vintf/manifest/vendor.qti.gnss@3.0-service.xml +vendor/etc/xtra_root_cert.pem +vendor/lib/hw/android.hardware.gnss@2.0-impl-qti.so +vendor/lib/hw/vendor.qti.gnss@3.0-impl.so +vendor/lib/libbatching.so +vendor/lib/libdataitems.so +vendor/lib/libgdtap.so +vendor/lib/libgeofencing.so +vendor/lib/libizat_client_api.so +vendor/lib/libizat_core.so +vendor/lib/liblbs_core.so +vendor/lib/liblocationservice.so +vendor/lib/liblocationservice_glue.so +vendor/lib/liblocation_api.so +vendor/lib/libloc_api_v02.so +vendor/lib/libloc_core.so +vendor/lib/libloc_socket.so +vendor/lib/liblowi_client.so +vendor/lib/liblowi_wifihal.so +vendor/lib/libslimclient.so +vendor/lib/libxtadapter.so +vendor/lib/vendor.qti.gnss@1.0.so +vendor/lib/vendor.qti.gnss@1.1.so +vendor/lib/vendor.qti.gnss@1.2.so +vendor/lib/vendor.qti.gnss@2.0.so +vendor/lib/vendor.qti.gnss@2.1.so +vendor/lib/vendor.qti.gnss@3.0-service.so +vendor/lib/vendor.qti.gnss@3.0.so +vendor/lib64/hw/android.hardware.gnss@2.0-impl-qti.so +vendor/lib64/hw/vendor.qti.gnss@3.0-impl.so +vendor/lib64/libbatching.so +vendor/lib64/libdataitems.so +vendor/lib64/libgarden_haltests_e2e.so +vendor/lib64/libgdtap.so +vendor/lib64/libgeofencing.so +vendor/lib64/libizat_client_api.so +vendor/lib64/libizat_core.so +vendor/lib64/liblbs_core.so +vendor/lib64/liblocationservice.so +vendor/lib64/liblocationservice_glue.so +vendor/lib64/liblocation_api.so +vendor/lib64/libloc_api_v02.so +vendor/lib64/libloc_core.so +vendor/lib64/libloc_socket.so +vendor/lib64/liblowi_client.so +vendor/lib64/liblowi_wifihal.so +vendor/lib64/libqdma_file_agent.so +vendor/lib64/libslimclient.so +vendor/lib64/libxtadapter.so +vendor/lib64/vendor.qti.gnss@1.0.so +vendor/lib64/vendor.qti.gnss@1.1.so +vendor/lib64/vendor.qti.gnss@1.2.so +vendor/lib64/vendor.qti.gnss@2.0.so +vendor/lib64/vendor.qti.gnss@2.1.so +vendor/lib64/vendor.qti.gnss@3.0-service.so +vendor/lib64/vendor.qti.gnss@3.0.so + +# GPS-Hardware +vendor/lib/libaoa.so +vendor/lib/libgarden.so +vendor/lib/libgnss.so +vendor/lib/libgnsspps.so +vendor/lib/libgps.utils.so +vendor/lib64/libaoa.so +vendor/lib64/libgarden.so +vendor/lib64/libgnss.so +vendor/lib64/libgnsspps.so +vendor/lib64/libgps.utils.so + +# Gatekeeper +vendor/bin/hw/android.hardware.gatekeeper@1.0-service-qti +vendor/etc/init/android.hardware.gatekeeper@1.0-service-qti.rc +vendor/lib/hw/android.hardware.gatekeeper@1.0-impl-qti.so +vendor/lib64/hw/android.hardware.gatekeeper@1.0-impl-qti.so + +# Graphics +vendor/lib/egl/eglSubDriverAndroid.so +vendor/lib/egl/libEGL_adreno.so +vendor/lib/egl/libGLESv1_CM_adreno.so +vendor/lib/egl/libGLESv2_adreno.so +vendor/lib/egl/libq3dtools_adreno.so +vendor/lib/egl/libq3dtools_esx.so +vendor/lib/egl/libQTapGLES.so +vendor/lib/hw/vulkan.bengal.so +vendor/lib/libadreno_utils.so +vendor/lib/libC2D2.so +vendor/lib/libc2d30_bltlib.so +vendor/lib/libCB.so +vendor/lib/libEGL_adreno.so +vendor/lib/libgsl.so +vendor/lib/libhdr_tm.so +vendor/lib/libllvm-glnext.so +vendor/lib/libllvm-qcom.so +vendor/lib/libOpenCL.so +vendor/lib/libq3dtools_adreno.so +vendor/lib/libqseed3.so +vendor/lib/libsdm-color.so +vendor/lib/libsdm-diag.so +vendor/lib/libsdm-disp-vndapis.so +vendor/lib/libtinyxml2_1.so +vendor/lib64/egl/eglSubDriverAndroid.so +vendor/lib64/egl/libEGL_adreno.so +vendor/lib64/egl/libGLESv1_CM_adreno.so +vendor/lib64/egl/libGLESv2_adreno.so +vendor/lib64/egl/libq3dtools_adreno.so +vendor/lib64/egl/libq3dtools_esx.so +vendor/lib64/egl/libQTapGLES.so +vendor/lib64/hw/vulkan.bengal.so +vendor/lib64/libadreno_utils.so +vendor/lib64/libC2D2.so +vendor/lib64/libc2d30_bltlib.so +vendor/lib64/libCB.so +vendor/lib64/libEGL_adreno.so +vendor/lib64/libgsl.so +vendor/lib64/libhdr_tm.so +vendor/lib64/libllvm-glnext.so +vendor/lib64/libllvm-qcom.so +vendor/lib64/libOpenCL.so +vendor/lib64/libq3dtools_adreno.so +vendor/lib64/libqseed3.so +vendor/lib64/libsdm-color.so +vendor/lib64/libsdm-diag.so +vendor/lib64/libsdm-disp-vndapis.so +vendor/lib64/libtinyxml2_1.so + +# Health +vendor/bin/hw/android.hardware.health@2.0-service +vendor/bin/hw/motorola.hardware.health@2.0-service +vendor/etc/init/android.hardware.health@2.0-service.rc +vendor/etc/init/motorola.hardware.health@2.0-service.rc +vendor/lib64/motorola.hardware.health@2.0.so + +# IPA-Firmware +vendor/firmware/ipa_fws.b00 +vendor/firmware/ipa_fws.b01 +vendor/firmware/ipa_fws.b02 +vendor/firmware/ipa_fws.b03 +vendor/firmware/ipa_fws.b04 +vendor/firmware/ipa_fws.elf +vendor/firmware/ipa_fws.mdt + +# Keymaster +vendor/bin/hw/android.hardware.keymaster@4.0-service-qti +vendor/etc/init/android.hardware.keymaster@4.0-service-qti.rc +vendor/lib/libkeymasterdeviceutils.so +vendor/lib/libkeymasterprovision.so +vendor/lib/libkeymasterutils.so +vendor/lib/libqtikeymaster4.so +vendor/lib64/libkeymasterdeviceutils.so +vendor/lib64/libkeymasterprovision.so +vendor/lib64/libkeymasterutils.so +vendor/lib64/libkeystore-engine-wifi-hidl.so +vendor/lib64/libkeystore-wifi-hidl.so +vendor/lib64/libqtikeymaster4.so + +# Latency +-product/framework/vendor.qti.hardware.data.latency-V1.0-java.jar +-product/framework/vendor.qti.latency-V2.0-java.jar +product/lib/vendor.qti.hardware.data.latency@1.0.so +product/lib/vendor.qti.latency@2.0.so +product/lib64/vendor.qti.hardware.data.latency@1.0.so +product/lib64/vendor.qti.latency@2.0.so +vendor/lib/vendor.qti.hardware.data.latency@1.0.so +vendor/lib/vendor.qti.latency@2.0.so +vendor/lib64/vendor.qti.hardware.data.latency@1.0.so +vendor/lib64/vendor.qti.latency@2.0.so + +# Lights +vendor/bin/hw/android.hardware.light@2.0-service +vendor/etc/init/android.hardware.light@2.0-service.rc +vendor/lib/hw/android.hardware.light@2.0-impl.so +vendor/lib/hw/lights.bengal.so +vendor/lib64/hw/android.hardware.light@2.0-impl.so +vendor/lib64/hw/lights.bengal.so + +# Listen +vendor/lib/hw/android.hardware.soundtrigger@2.1-impl.so +vendor/lib/hw/android.hardware.soundtrigger@2.2-impl.so +vendor/lib/libadpcmdec.so +vendor/lib/libgcs-calwrapper.so +vendor/lib/libgcs-ipc.so +vendor/lib/libgcs-osal.so +vendor/lib/libgcs.so +vendor/lib/liblistensoundmodel2.so +vendor/lib64/libgcs-calwrapper.so +vendor/lib64/libgcs-ipc.so +vendor/lib64/libgcs-osal.so +vendor/lib64/libgcs.so +vendor/lib64/liblistensoundmodel2.so + +# Media +lib/libFileMux.so +lib/libmmosal.so +lib/libmmparser_lite.so +lib/libmmrtpdecoder.so +lib/libmmrtpencoder.so +lib/libOmxMux.so +lib64/libFileMux.so +lib64/libmmosal.so +lib64/libmmparser_lite.so +lib64/libmmrtpdecoder.so +lib64/libmmrtpencoder.so +lib64/libOmxMux.so +product/lib/vendor.qti.hardware.vpp@1.1.so +product/lib64/vendor.qti.hardware.vpp@1.1.so +vendor/lib/libAlacSwDec.so +vendor/lib/libApeSwDec.so +vendor/lib/libdsd2pcm.so +vendor/lib/libFlacSwDec.so +vendor/lib/libI420colorconvert.so +vendor/lib/libmm-color-convertor.so +vendor/lib/libmmosal_proprietary.so +vendor/lib/libMpeg4SwEncoder.so +vendor/lib/libmulawdec.so +vendor/lib/libOmxAacDec.so +vendor/lib/libOmxAlacDec.so +vendor/lib/libOmxAlacDecSw.so +vendor/lib/libOmxAmrDec.so +vendor/lib/libOmxAmrwbplusDec.so +vendor/lib/libOmxApeDec.so +vendor/lib/libOmxApeDecSw.so +vendor/lib/libOmxDsdDec.so +vendor/lib/libOmxEvrcDec.so +vendor/lib/libOmxG711Dec.so +vendor/lib/libOmxMux_proprietary.so +vendor/lib/libOmxQcelp13Dec.so +vendor/lib/libOmxWmaDec.so +vendor/lib/libstagefright_soft_mpeg2dec.so +vendor/lib/libstagefright_soft_qtiflacdec.so +vendor/lib/vendor.qti.hardware.vpp@1.1.so +vendor/lib/vendor.qti.hardware.vpp@1.2.so +vendor/lib64/libAlacSwDec.so +vendor/lib64/libApeSwDec.so +vendor/lib64/libFlacSwDec.so +vendor/lib64/libI420colorconvert.so +vendor/lib64/libmm-color-convertor.so +vendor/lib64/libmmosal_proprietary.so +vendor/lib64/libMpeg4SwEncoder.so +vendor/lib64/libmulawdec.so +vendor/lib64/libOmxAacDec.so +vendor/lib64/libOmxAlacDec.so +vendor/lib64/libOmxAlacDecSw.so +vendor/lib64/libOmxAmrDec.so +vendor/lib64/libOmxAmrwbplusDec.so +vendor/lib64/libOmxApeDec.so +vendor/lib64/libOmxApeDecSw.so +vendor/lib64/libOmxEvrcDec.so +vendor/lib64/libOmxG711Dec.so +vendor/lib64/libOmxQcelp13Dec.so +vendor/lib64/libOmxWmaDec.so +vendor/lib64/libstagefright_soft_qtiflacdec.so +vendor/lib64/vendor.qti.hardware.vpp@1.1.so +vendor/lib64/vendor.qti.hardware.vpp@1.2.so + +# Media-Hardware +vendor/lib/libc2dcolorconvert.so +vendor/lib/libmm-omxcore.so +vendor/lib/libOmxCore.so +vendor/lib/libOmxSwVdec.so +vendor/lib/libOmxSwVencMpeg4.so +vendor/lib/libOmxVdec.so +vendor/lib/libOmxVenc.so +-vendor/lib/libplatformconfig.so +vendor/lib/libstagefrighthw.so +vendor/lib64/libc2dcolorconvert.so +vendor/lib64/libmm-omxcore.so +vendor/lib64/libOmxCore.so +vendor/lib64/libOmxSwVdec.so +vendor/lib64/libOmxSwVencMpeg4.so +vendor/lib64/libOmxVdec.so +vendor/lib64/libOmxVenc.so +-vendor/lib64/libplatformconfig.so +vendor/lib64/libstagefrighthw.so + +# Motorola +vendor/bin/hw/motorola.hardware.vibrator@1.0-service +vendor/bin/motobox +vendor/etc/init/motorola.hardware.vibrator@1.0-service.rc +vendor/etc/motorola/12m/2kHz_Mono_1s.wav +vendor/etc/motorola/12m/chipone-tm_icnl9911s_video_display-ICNL9911S-guamp.ini +vendor/etc/motorola/12m/cqatest_alt_cfg +vendor/etc/motorola/12m/cqatest_cfg +vendor/etc/motorola/12m/cqatest_cfg_lda +vendor/etc/motorola/12m/cqatest_cfg_model_assembly +vendor/etc/motorola/12m/cqatest_cfg_model_mmi +vendor/etc/motorola/12m/cqatest_mmi_mode_order +vendor/etc/motorola/12m/cqatest_pat_mode_order +vendor/etc/motorola/12m/key_code_map.txt +vendor/etc/motorola/12m/tcmd_leds.cfg +vendor/etc/motorola/mdmctbk/ctbk_cfg.xml +vendor/etc/motorola/mdmctbk/latam_ctbk_cfg.xml +vendor/etc/motorola/mdmctbk/lenovo_ctbk_cfg.xml +vendor/etc/motorola/mdmctbk/row_ctbk_cfg.xml +vendor/etc/motorola/props/hardware.sku.XT2083-3.prop +vendor/etc/motorola/props/sku.n.prop +vendor/etc/motorola/tcmd/cid_template.dat +vendor/lib/hw/motorola.hardware.vibrator@1.0-impl.so +vendor/lib/libmotaudioutils.so +vendor/lib/libmotext_inf.so +vendor/lib/libmot_afd.so +vendor/lib/libmot_lux_standardization.so +vendor/lib/motorola.hardware.popup@1.0.so +vendor/lib/motorola.hardware.tcmd@1.0.so +vendor/lib/motorola.hardware.vibrator@1.0.so +vendor/lib64/hw/motorola.hardware.vibrator@1.0-impl.so +vendor/lib64/libmotext_inf.so +vendor/lib64/libmot_afd.so +vendor/lib64/libmot_lux_standardization.so +vendor/lib64/motorola.hardware.vibrator@1.0.so +vendor/lib64/motorola.hardware.wifi.supplicant@1.0_vendor.so + +# NFC +product/etc/permissions/com.nxp.nfc.xml +-product/framework/com.nxp.nfc.jar +vendor/bin/hw/android.hardware.nfc@1.2-service +vendor/etc/init/android.hardware.nfc@1.2-service.rc +vendor/etc/libnfc-nci.conf +vendor/etc/libnfc-nxp.conf +vendor/lib/ese_spi_nxp.so +vendor/lib/hal_libnfc.so +vendor/lib/nfc_nci_nxp.so +vendor/lib/vendor.nxp.eventprocessor@1.0.so +vendor/lib/vendor.nxp.nxpese@1.0.so +vendor/lib/vendor.nxp.nxpnfc@1.0.so +vendor/lib64/ese_spi_nxp.so +vendor/lib64/hal_libnfc.so +vendor/lib64/libpn557_fw.so +vendor/lib64/nfc_nci_nxp.so +vendor/lib64/vendor.nxp.eventprocessor@1.0.so +vendor/lib64/vendor.nxp.nxpese@1.0.so +vendor/lib64/vendor.nxp.nxpnfc@1.0.so + +# Neural-networks +vendor/bin/hw/android.hardware.neuralnetworks@1.2-service-qti +vendor/etc/init/android.hardware.neuralnetworks@1.2-service-qti.rc +vendor/lib64/libhexagon_nn_stub.so + +# Pasrmanager +vendor/lib/vendor.qti.power.pasrmanager@1.0.so +vendor/lib64/vendor.qti.power.pasrmanager@1.0.so + +# Perf +lib/libqti-perfd-client_system.so +lib/libqti-util_system.so +lib/libqti_performance.so +lib64/libqti-perfd-client_system.so +lib64/libqti-util_system.so +lib64/libqti_performance.so +product/lib/vendor.qti.hardware.perf@2.0.so +product/lib/vendor.qti.hardware.perf@2.1.so +product/lib64/vendor.qti.hardware.perf@2.0.so +product/lib64/vendor.qti.hardware.perf@2.1.so +vendor/bin/hw/vendor.qti.hardware.perf@2.1-service +vendor/bin/msm_irqbalance +vendor/etc/init/vendor.qti.hardware.perf@2.1-service.rc +vendor/etc/perf/commonresourceconfigs.xml +vendor/etc/perf/perfboostsconfig.xml +vendor/etc/perf/perfconfigstore.xml +vendor/etc/perf/targetconfig.xml +vendor/etc/perf/targetresourceconfigs.xml +vendor/etc/powerhint.xml +vendor/lib/libperfgluelayer.so +vendor/lib/libqti-perfd-client.so +vendor/lib/libqti-perfd.so +vendor/lib/libqti-util.so +vendor/lib/libqti-utils.so +vendor/lib/vendor.qti.hardware.perf@2.0.so +vendor/lib/vendor.qti.hardware.perf@2.1.so +vendor/lib64/libadaptlaunch.so +vendor/lib64/liblearningmodule.so +vendor/lib64/libmeters-ns.so +vendor/lib64/libmeters.so +vendor/lib64/libperfgluelayer.so +vendor/lib64/libqti-perfd-client.so +vendor/lib64/libqti-perfd.so +vendor/lib64/libqti-util.so +vendor/lib64/libqti-utils.so +vendor/lib64/vendor.qti.hardware.perf@2.0.so +vendor/lib64/vendor.qti.hardware.perf@2.1.so + +# Perf-IOP +product/lib/vendor.qti.hardware.iop@2.0.so +product/lib64/vendor.qti.hardware.iop@2.0.so +vendor/bin/hw/vendor.qti.hardware.iop@2.0-service +vendor/etc/init/vendor.qti.hardware.iop@2.0-service.rc +vendor/lib/hw/vendor.qti.hardware.iop@2.0-impl.so +vendor/lib/libqti-iopd-client.so +vendor/lib/libqti-iopd.so +vendor/lib/vendor.qti.hardware.iop@1.0.so +vendor/lib/vendor.qti.hardware.iop@2.0.so +vendor/lib64/hw/vendor.qti.hardware.iop@2.0-impl.so +vendor/lib64/libqti-iopd-client.so +vendor/lib64/libqti-iopd.so +vendor/lib64/vendor.qti.hardware.iop@1.0.so +vendor/lib64/vendor.qti.hardware.iop@2.0.so + +# Peripheral +vendor/bin/pm-proxy +vendor/bin/pm-service +vendor/lib/libperipheral_client.so +vendor/lib64/libperipheral_client.so + +# Postprocessing +product/lib/vendor.display.color@1.0.so +product/lib/vendor.display.color@1.1.so +product/lib/vendor.display.color@1.2.so +product/lib/vendor.display.color@1.3.so +product/lib/vendor.display.postproc@1.0.so +product/lib64/vendor.display.color@1.0.so +product/lib64/vendor.display.color@1.1.so +product/lib64/vendor.display.color@1.2.so +product/lib64/vendor.display.color@1.3.so +product/lib64/vendor.display.postproc@1.0.so +vendor/bin/hw/vendor.display.color@1.0-service +vendor/etc/init/vendor.display.color@1.0-service.rc +vendor/lib/libdisp-aba.so +vendor/lib/vendor.display.color@1.0.so +vendor/lib/vendor.display.color@1.1.so +vendor/lib/vendor.display.color@1.2.so +vendor/lib/vendor.display.color@1.3.so +vendor/lib/vendor.display.color@1.4.so +vendor/lib/vendor.display.color@1.5.so +vendor/lib/vendor.display.postproc@1.0.so +vendor/lib64/libdisp-aba.so +vendor/lib64/vendor.display.color@1.0.so +vendor/lib64/vendor.display.color@1.1.so +vendor/lib64/vendor.display.color@1.2.so +vendor/lib64/vendor.display.color@1.3.so +vendor/lib64/vendor.display.color@1.4.so +vendor/lib64/vendor.display.color@1.5.so +vendor/lib64/vendor.display.postproc@1.0.so + +# Power-Hardware +vendor/bin/hw/android.hardware.power@1.2-service +vendor/etc/init/android.hardware.power@1.2-service.rc +vendor/lib/hw/power.default.so +vendor/lib64/hw/power.default.so + +# QMI +etc/permissions/qti_libpermissions.xml +etc/permissions/qti_permissions.xml +product/etc/permissions/qti_telephony_hidl_wrapper.xml +product/etc/permissions/qti_telephony_utils.xml +vendor/bin/irsc_util +vendor/bin/pd-mapper +vendor/lib/libdiag.so +vendor/lib/libdsutils.so +vendor/lib/libidl.so +vendor/lib/libminkdescriptor.so +vendor/lib/libminksocket.so +vendor/lib/libqcci_legacy.so +vendor/lib/libqdi.so +vendor/lib/libqdp.so +vendor/lib/libqmi.so +vendor/lib/libqmimotext.so +vendor/lib/libqmiservices.so +vendor/lib/libqmi_cci.so +vendor/lib/libqmi_client_helper.so +vendor/lib/libqmi_client_qmux.so +vendor/lib/libqmi_common_so.so +vendor/lib/libqmi_csi.so +vendor/lib/libqmi_csvt_srvc.so +vendor/lib/libqmi_encdec.so +vendor/lib64/libdiag.so +vendor/lib64/libdsutils.so +vendor/lib64/libidl.so +vendor/lib64/libminkdescriptor.so +vendor/lib64/libminksocket.so +vendor/lib64/libqcci_legacy.so +vendor/lib64/libqdi.so +vendor/lib64/libqdp.so +vendor/lib64/libqmi.so +vendor/lib64/libqmimotext.so +vendor/lib64/libqmiservices.so +vendor/lib64/libqmi_cci.so +vendor/lib64/libqmi_client_helper.so +vendor/lib64/libqmi_client_qmux.so +vendor/lib64/libqmi_common_so.so +vendor/lib64/libqmi_csi.so +vendor/lib64/libqmi_csvt_srvc.so +vendor/lib64/libqmi_encdec.so + +# Qdutils +product/lib/vendor.qti.hardware.qdutils_disp@1.0.so +product/lib64/vendor.qti.hardware.qdutils_disp@1.0.so +vendor/lib/vendor.qti.hardware.qdutils_disp@1.0.so +vendor/lib64/vendor.qti.hardware.qdutils_disp@1.0.so + +# Radio +etc/permissions/privapp-permissions-qti.xml +etc/sysconfig/qti_whitelist.xml +-product/app/datastatusnotification/datastatusnotification.apk +-product/app/embms/embms.apk +-product/app/QtiTelephonyService/QtiTelephonyService.apk +product/etc/permissions/embms.xml +product/etc/permissions/qcrilhook.xml +product/etc/permissions/telephonyservice.xml +-product/framework/embmslibrary.jar +-product/framework/qcrilhook.jar +-product/framework/qti-telephony-common.jar +-product/framework/QtiTelephonyServicelibrary.jar +product/lib/vendor.qti.hardware.radio.am@1.0.so +product/lib/vendor.qti.hardware.radio.internal.deviceinfo@1.0.so +product/lib/vendor.qti.hardware.radio.lpa@1.0.so +product/lib/vendor.qti.hardware.radio.qcrilhook@1.0.so +product/lib/vendor.qti.hardware.radio.qtiradio@1.0.so +product/lib/vendor.qti.hardware.radio.qtiradio@2.0.so +product/lib/vendor.qti.hardware.radio.qtiradio@2.1.so +product/lib/vendor.qti.hardware.radio.qtiradio@2.2.so +product/lib/vendor.qti.hardware.radio.qtiradio@2.3.so +product/lib/vendor.qti.hardware.radio.qtiradio@2.4.so +product/lib/vendor.qti.hardware.radio.uim@1.0.so +product/lib/vendor.qti.hardware.radio.uim@1.1.so +product/lib/vendor.qti.hardware.radio.uim@1.2.so +product/lib/vendor.qti.hardware.radio.uim_remote_client@1.0.so +product/lib/vendor.qti.hardware.radio.uim_remote_client@1.1.so +product/lib/vendor.qti.hardware.radio.uim_remote_client@1.2.so +product/lib/vendor.qti.hardware.radio.uim_remote_server@1.0.so +product/lib64/vendor.qti.hardware.radio.am@1.0.so +product/lib64/vendor.qti.hardware.radio.internal.deviceinfo@1.0.so +product/lib64/vendor.qti.hardware.radio.lpa@1.0.so +product/lib64/vendor.qti.hardware.radio.qcrilhook@1.0.so +product/lib64/vendor.qti.hardware.radio.qtiradio@1.0.so +product/lib64/vendor.qti.hardware.radio.qtiradio@2.0.so +product/lib64/vendor.qti.hardware.radio.qtiradio@2.1.so +product/lib64/vendor.qti.hardware.radio.qtiradio@2.2.so +product/lib64/vendor.qti.hardware.radio.qtiradio@2.3.so +product/lib64/vendor.qti.hardware.radio.qtiradio@2.4.so +product/lib64/vendor.qti.hardware.radio.uim@1.0.so +product/lib64/vendor.qti.hardware.radio.uim@1.1.so +product/lib64/vendor.qti.hardware.radio.uim@1.2.so +product/lib64/vendor.qti.hardware.radio.uim_remote_client@1.0.so +product/lib64/vendor.qti.hardware.radio.uim_remote_client@1.1.so +product/lib64/vendor.qti.hardware.radio.uim_remote_client@1.2.so +product/lib64/vendor.qti.hardware.radio.uim_remote_server@1.0.so +-product/priv-app/qcrilmsgtunnel/qcrilmsgtunnel.apk +vendor/bin/ATFWD-daemon +vendor/bin/hw/qcrild +vendor/bin/netmgrd +vendor/bin/port-bridge +vendor/bin/qrtr-cfg +vendor/bin/qrtr-lookup +vendor/bin/qrtr-ns +vendor/bin/qti +vendor/bin/rmt_storage +vendor/bin/tftp_server +vendor/etc/data/dsi_config.xml +vendor/etc/data/netmgr_config.xml +vendor/etc/init/qcrild.rc +vendor/lib/libconfigdb.so +vendor/lib/libdsi_netctrl.so +vendor/lib/liblqe.so +vendor/lib/libmdmdetect.so +vendor/lib/libnetmgr.so +vendor/lib/libnetmgr_common.so +vendor/lib/libnetmgr_nr_fusion.so +vendor/lib/libnetmgr_rmnet_ext.so +vendor/lib/libnlnetmgr.so +vendor/lib/libpdmapper.so +vendor/lib/libpdnotifier.so +vendor/lib/libqcmaputils.so +vendor/lib/libqcrilFramework.so +vendor/lib/libqrtr.so +vendor/lib/libqsocket.so +vendor/lib/libril-qc-hal-qmi.so +vendor/lib/libril-qc-ltedirectdisc.so +vendor/lib/libril-qc-qmi-1.so +vendor/lib/libril-qc-radioconfig.so +vendor/lib/libril-qcril-hook-oem.so +vendor/lib/librilqmiservices.so +vendor/lib/libsettings.so +vendor/lib/libsystem_health_mon.so +vendor/lib/qcrild_librilutils.so +vendor/lib/vendor.qti.hardware.radio.am@1.0.so +vendor/lib/vendor.qti.hardware.radio.atcmdfwd@1.0.so +vendor/lib/vendor.qti.hardware.radio.internal.deviceinfo@1.0.so +vendor/lib/vendor.qti.hardware.radio.lpa@1.0.so +vendor/lib/vendor.qti.hardware.radio.qcrilhook@1.0.so +vendor/lib/vendor.qti.hardware.radio.qtiradio@1.0.so +vendor/lib/vendor.qti.hardware.radio.qtiradio@2.0.so +vendor/lib/vendor.qti.hardware.radio.qtiradio@2.1.so +vendor/lib/vendor.qti.hardware.radio.qtiradio@2.2.so +vendor/lib/vendor.qti.hardware.radio.qtiradio@2.3.so +vendor/lib/vendor.qti.hardware.radio.qtiradio@2.4.so +vendor/lib/vendor.qti.hardware.radio.uim@1.0.so +vendor/lib/vendor.qti.hardware.radio.uim@1.1.so +vendor/lib/vendor.qti.hardware.radio.uim@1.2.so +vendor/lib/vendor.qti.hardware.radio.uim_remote_client@1.0.so +vendor/lib/vendor.qti.hardware.radio.uim_remote_client@1.1.so +vendor/lib/vendor.qti.hardware.radio.uim_remote_client@1.2.so +vendor/lib/vendor.qti.hardware.radio.uim_remote_server@1.0.so +vendor/lib64/libconfigdb.so +vendor/lib64/libdsi_netctrl.so +vendor/lib64/liblqe.so +vendor/lib64/libmdmdetect.so +vendor/lib64/libnetmgr.so +vendor/lib64/libnetmgr_common.so +vendor/lib64/libnetmgr_nr_fusion.so +vendor/lib64/libnetmgr_rmnet_ext.so +vendor/lib64/libnlnetmgr.so +vendor/lib64/libpdmapper.so +vendor/lib64/libpdnotifier.so +vendor/lib64/libqcmaputils.so +vendor/lib64/libqcrilFramework.so +vendor/lib64/libqrtr.so +vendor/lib64/libqsocket.so +vendor/lib64/libril-qc-hal-qmi.so +vendor/lib64/libril-qc-ltedirectdisc.so +vendor/lib64/libril-qc-qmi-1.so +vendor/lib64/libril-qc-radioconfig.so +vendor/lib64/libril-qcril-hook-oem.so +vendor/lib64/librilqmiservices.so +vendor/lib64/libsettings.so +vendor/lib64/libsystem_health_mon.so +vendor/lib64/qcrild_librilutils.so +vendor/lib64/vendor.qti.hardware.radio.am@1.0.so +vendor/lib64/vendor.qti.hardware.radio.atcmdfwd@1.0.so +vendor/lib64/vendor.qti.hardware.radio.internal.deviceinfo@1.0.so +vendor/lib64/vendor.qti.hardware.radio.lpa@1.0.so +vendor/lib64/vendor.qti.hardware.radio.qcrilhook@1.0.so +vendor/lib64/vendor.qti.hardware.radio.qtiradio@1.0.so +vendor/lib64/vendor.qti.hardware.radio.qtiradio@2.0.so +vendor/lib64/vendor.qti.hardware.radio.qtiradio@2.1.so +vendor/lib64/vendor.qti.hardware.radio.qtiradio@2.2.so +vendor/lib64/vendor.qti.hardware.radio.qtiradio@2.3.so +vendor/lib64/vendor.qti.hardware.radio.qtiradio@2.4.so +vendor/lib64/vendor.qti.hardware.radio.uim@1.0.so +vendor/lib64/vendor.qti.hardware.radio.uim@1.1.so +vendor/lib64/vendor.qti.hardware.radio.uim@1.2.so +vendor/lib64/vendor.qti.hardware.radio.uim_remote_client@1.0.so +vendor/lib64/vendor.qti.hardware.radio.uim_remote_client@1.1.so +vendor/lib64/vendor.qti.hardware.radio.uim_remote_client@1.2.so +vendor/lib64/vendor.qti.hardware.radio.uim_remote_server@1.0.so +vendor/radio/qcril_database/qcril.db +vendor/radio/qcril_database/upgrade/0_initial.sql +vendor/radio/qcril_database/upgrade/10_version_qcrildb.sql +vendor/radio/qcril_database/upgrade/11_version_qcrildb.sql +vendor/radio/qcril_database/upgrade/12_version_qcrildb.sql +vendor/radio/qcril_database/upgrade/13_version_qcrildb.sql +vendor/radio/qcril_database/upgrade/14_version_qcrildb.sql +vendor/radio/qcril_database/upgrade/15_version_qcrildb.sql +vendor/radio/qcril_database/upgrade/16_version_qcrildb.sql +vendor/radio/qcril_database/upgrade/17_version_qcrildb.sql +vendor/radio/qcril_database/upgrade/18_version_qcrildb.sql +vendor/radio/qcril_database/upgrade/19_version_qcrildb.sql +vendor/radio/qcril_database/upgrade/20_version_qcrildb.sql +vendor/radio/qcril_database/upgrade/3_version_qcrildb.sql +vendor/radio/qcril_database/upgrade/4_version_qcrildb.sql +vendor/radio/qcril_database/upgrade/5_version_qcrildb.sql +vendor/radio/qcril_database/upgrade/6_version_qcrildb.sql +vendor/radio/qcril_database/upgrade/7_version_qcrildb.sql +vendor/radio/qcril_database/upgrade/8_version_qcrildb.sql +vendor/radio/qcril_database/upgrade/9_version_qcrildb.sql + +# Radio-IMS +etc/permissions/com.qualcomm.qti.imscmservice.xml +-product/app/uceShimService/uceShimService.apk +product/etc/permissions/com.qualcomm.qti.imscmservice-V2.0-java.xml +product/etc/permissions/com.qualcomm.qti.imscmservice-V2.1-java.xml +product/etc/permissions/com.qualcomm.qti.imscmservice-V2.2-java.xml +-product/framework/com.qualcomm.qti.imscmservice-V2.0-java.jar +-product/framework/com.qualcomm.qti.imscmservice-V2.1-java.jar +-product/framework/com.qualcomm.qti.imscmservice-V2.2-java.jar +-product/framework/com.qualcomm.qti.uceservice-V2.0-java.jar +-product/framework/com.qualcomm.qti.uceservice-V2.1-java.jar +-product/framework/vendor.qti.ims.callinfo-V1.0-java.jar +-product/framework/vendor.qti.ims.rcsconfig-V1.0-java.jar +-product/framework/vendor.qti.ims.rcsconfig-V1.1-java.jar +product/lib/com.qualcomm.qti.imscmservice@1.0.so +product/lib/com.qualcomm.qti.imscmservice@2.0.so +product/lib/com.qualcomm.qti.imscmservice@2.1.so +product/lib/com.qualcomm.qti.imscmservice@2.2.so +product/lib/com.qualcomm.qti.uceservice@2.0.so +product/lib/com.qualcomm.qti.uceservice@2.1.so +product/lib/lib-imsvideocodec.so +product/lib/lib-imsvt.so +product/lib/lib-imsvtextutils.so +product/lib/lib-imsvtutils.so +product/lib/libdiag_system.so +product/lib/libimscamera_jni.so +product/lib/libimsmedia_jni.so +product/lib/vendor.qti.hardware.radio.ims@1.0.so +product/lib/vendor.qti.hardware.radio.ims@1.1.so +product/lib/vendor.qti.hardware.radio.ims@1.2.so +product/lib/vendor.qti.hardware.radio.ims@1.3.so +product/lib/vendor.qti.hardware.radio.ims@1.4.so +product/lib/vendor.qti.ims.callinfo@1.0.so +product/lib/vendor.qti.ims.rcsconfig@1.0.so +product/lib/vendor.qti.ims.rcsconfig@1.1.so +product/lib/vendor.qti.imsrtpservice@2.0.so +product/lib/vendor.qti.imsrtpservice@2.1.so +product/lib64/com.qualcomm.qti.imscmservice@1.0.so +product/lib64/com.qualcomm.qti.imscmservice@2.0.so +product/lib64/com.qualcomm.qti.imscmservice@2.1.so +product/lib64/com.qualcomm.qti.imscmservice@2.2.so +product/lib64/com.qualcomm.qti.uceservice@2.0.so +product/lib64/com.qualcomm.qti.uceservice@2.1.so +product/lib64/lib-imsvideocodec.so +product/lib64/lib-imsvt.so +product/lib64/lib-imsvtextutils.so +product/lib64/lib-imsvtutils.so +product/lib64/libdiag_system.so +product/lib64/libimscamera_jni.so +product/lib64/libimsmedia_jni.so +product/lib64/vendor.qti.hardware.radio.ims@1.0.so +product/lib64/vendor.qti.hardware.radio.ims@1.1.so +product/lib64/vendor.qti.hardware.radio.ims@1.2.so +product/lib64/vendor.qti.hardware.radio.ims@1.3.so +product/lib64/vendor.qti.hardware.radio.ims@1.4.so +product/lib64/vendor.qti.ims.callinfo@1.0.so +product/lib64/vendor.qti.ims.rcsconfig@1.0.so +product/lib64/vendor.qti.ims.rcsconfig@1.1.so +product/lib64/vendor.qti.imsrtpservice@2.0.so +product/lib64/vendor.qti.imsrtpservice@2.1.so +-product/priv-app/ims/ims.apk +vendor/bin/imsdatadaemon +vendor/bin/imsqmidaemon +vendor/bin/imsrcsd +vendor/bin/ims_rtp_daemon +vendor/lib/com.qualcomm.qti.imscmservice@1.0.so +vendor/lib/com.qualcomm.qti.imscmservice@2.0.so +vendor/lib/com.qualcomm.qti.imscmservice@2.1.so +vendor/lib/com.qualcomm.qti.imscmservice@2.2.so +vendor/lib/com.qualcomm.qti.uceservice@2.0.so +vendor/lib/com.qualcomm.qti.uceservice@2.1.so +vendor/lib/lib-imscmservice.so +vendor/lib/lib-imsdpl.so +vendor/lib/lib-imsqimf.so +vendor/lib/lib-imsrcs-v2.so +vendor/lib/lib-imsrcsbaseimpl.so +vendor/lib/lib-imsvtcore.so +vendor/lib/lib-imsxml.so +vendor/lib/lib-rtpcommon.so +vendor/lib/lib-rtpcore.so +vendor/lib/lib-rtpsl.so +vendor/lib/lib-siputility.so +vendor/lib/lib-uceservice.so +vendor/lib/librcc.so +vendor/lib/vendor.qti.hardware.radio.ims@1.0.so +vendor/lib/vendor.qti.hardware.radio.ims@1.1.so +vendor/lib/vendor.qti.hardware.radio.ims@1.2.so +vendor/lib/vendor.qti.hardware.radio.ims@1.3.so +vendor/lib/vendor.qti.hardware.radio.ims@1.4.so +vendor/lib/vendor.qti.hardware.radio.ims@1.5.so +vendor/lib/vendor.qti.hardware.radio.ims@1.6.so +vendor/lib/vendor.qti.ims.callinfo@1.0.so +vendor/lib/vendor.qti.ims.rcsconfig@1.0.so +vendor/lib/vendor.qti.ims.rcsconfig@1.1.so +vendor/lib/vendor.qti.imsrtpservice@2.0.so +vendor/lib/vendor.qti.imsrtpservice@2.1-service-Impl.so +vendor/lib/vendor.qti.imsrtpservice@2.1.so +vendor/lib64/com.qualcomm.qti.imscmservice@1.0.so +vendor/lib64/com.qualcomm.qti.imscmservice@2.0.so +vendor/lib64/com.qualcomm.qti.imscmservice@2.1.so +vendor/lib64/com.qualcomm.qti.imscmservice@2.2.so +vendor/lib64/com.qualcomm.qti.uceservice@2.0.so +vendor/lib64/com.qualcomm.qti.uceservice@2.1.so +vendor/lib64/lib-imscmservice.so +vendor/lib64/lib-imsdpl.so +vendor/lib64/lib-imsqimf.so +vendor/lib64/lib-imsrcs-v2.so +vendor/lib64/lib-imsrcsbaseimpl.so +vendor/lib64/lib-imsvtcore.so +vendor/lib64/lib-imsxml.so +vendor/lib64/lib-rtpcommon.so +vendor/lib64/lib-rtpcore.so +vendor/lib64/lib-rtpsl.so +vendor/lib64/lib-siputility.so +vendor/lib64/lib-uceservice.so +vendor/lib64/librcc.so +vendor/lib64/vendor.qti.hardware.radio.ims@1.0.so +vendor/lib64/vendor.qti.hardware.radio.ims@1.1.so +vendor/lib64/vendor.qti.hardware.radio.ims@1.2.so +vendor/lib64/vendor.qti.hardware.radio.ims@1.3.so +vendor/lib64/vendor.qti.hardware.radio.ims@1.4.so +vendor/lib64/vendor.qti.hardware.radio.ims@1.5.so +vendor/lib64/vendor.qti.hardware.radio.ims@1.6.so +vendor/lib64/vendor.qti.ims.callinfo@1.0.so +vendor/lib64/vendor.qti.ims.rcsconfig@1.0.so +vendor/lib64/vendor.qti.ims.rcsconfig@1.1.so +vendor/lib64/vendor.qti.imsrtpservice@2.0.so +vendor/lib64/vendor.qti.imsrtpservice@2.1-service-Impl.so +vendor/lib64/vendor.qti.imsrtpservice@2.1.so + +# SCVE +product/lib/vendor.qti.hardware.scve.objecttracker@1.0-adapter-helper.so +product/lib/vendor.qti.hardware.scve.objecttracker@1.0.so +product/lib/vendor.qti.hardware.scve.panorama@1.0-adapter-helper.so +product/lib/vendor.qti.hardware.scve.panorama@1.0.so +product/lib64/vendor.qti.hardware.scve.objecttracker@1.0-adapter-helper.so +product/lib64/vendor.qti.hardware.scve.objecttracker@1.0.so +product/lib64/vendor.qti.hardware.scve.panorama@1.0-adapter-helper.so +product/lib64/vendor.qti.hardware.scve.panorama@1.0.so +vendor/lib/hw/vendor.qti.hardware.scve.objecttracker@1.0-impl.so +vendor/lib/hw/vendor.qti.hardware.scve.panorama@1.0-impl.so +vendor/lib/libscveBlobDescriptor.so +vendor/lib/libscveBlobDescriptor_stub.so +vendor/lib/libscveCommon.so +vendor/lib/libscveCommon_stub.so +vendor/lib/libscveObjectSegmentation.so +vendor/lib/libscveObjectSegmentation_stub.so +vendor/lib/libscveObjectTracker.so +vendor/lib/libscveObjectTracker_stub.so +vendor/lib/libscvePanorama.so +vendor/lib/libscvePanorama_lite.so +vendor/lib/rfsa/adsp/libscveBlobDescriptor_skel.so +vendor/lib/rfsa/adsp/libscveObjectSegmentation_skel.so +vendor/lib/rfsa/adsp/libscveT2T_skel.so +vendor/lib/vendor.qti.hardware.scve.objecttracker@1.0.so +vendor/lib/vendor.qti.hardware.scve.panorama@1.0.so +vendor/lib64/hw/vendor.qti.hardware.scve.objecttracker@1.0-impl.so +vendor/lib64/hw/vendor.qti.hardware.scve.panorama@1.0-impl.so +vendor/lib64/libscveBlobDescriptor.so +vendor/lib64/libscveBlobDescriptor_stub.so +vendor/lib64/libscveCommon.so +vendor/lib64/libscveCommon_stub.so +vendor/lib64/libscveObjectSegmentation.so +vendor/lib64/libscveObjectSegmentation_stub.so +vendor/lib64/libscveObjectTracker.so +vendor/lib64/libscveObjectTracker_stub.so +vendor/lib64/libscvePanorama.so +vendor/lib64/libscvePanorama_lite.so +vendor/lib64/vendor.qti.hardware.scve.objecttracker@1.0.so +vendor/lib64/vendor.qti.hardware.scve.panorama@1.0.so + +# SSR +vendor/bin/ssr_diag +vendor/bin/ssr_setup +vendor/bin/subsystem_ramdump +vendor/lib/libSubSystemShutdown.so +vendor/lib/libsubsystem_control.so +vendor/lib64/libSubSystemShutdown.so +vendor/lib64/libsubsystem_control.so + +# Seccam +vendor/lib/vendor.qti.hardware.seccam@1.0.so +vendor/lib64/vendor.qti.hardware.seccam@1.0.so + +# Sensor-calibrate +vendor/bin/hw/vendor.qti.hardware.sensorscalibrate@1.0-service +vendor/etc/init/vendor.qti.hardware.sensorscalibrate@1.0-service.rc +vendor/etc/permissions/vendor-qti-hardware-sensorscalibrate.xml +vendor/lib/hw/vendor.qti.hardware.sensorscalibrate@1.0-impl.so +vendor/lib/vendor.qti.hardware.sensorscalibrate@1.0.so +vendor/lib64/hw/vendor.qti.hardware.sensorscalibrate@1.0-impl.so +vendor/lib64/vendor.qti.hardware.sensorscalibrate@1.0.so + +# Sensor-configs +vendor/etc/sensors/config/bengal_default_sensors.json +vendor/etc/sensors/config/bengal_dynamic_sensors.json +vendor/etc/sensors/config/bengal_icm4x6xx_0.json +vendor/etc/sensors/config/bengal_lsm6dso_0.json +vendor/etc/sensors/config/bengal_power_0.json +vendor/etc/sensors/config/bengal_vcnl36866_0.json +vendor/etc/sensors/config/bengal_vcnl36866_0_always.json +vendor/etc/sensors/config/icm4x6xx_0.json +vendor/etc/sensors/config/mot_camgest.json +vendor/etc/sensors/config/mot_chopchop.json +vendor/etc/sensors/config/mot_devorient.json +vendor/etc/sensors/config/mot_drop.json +vendor/etc/sensors/config/mot_ltv.json +vendor/etc/sensors/config/mot_offbody.json +vendor/etc/sensors/config/sns_amd.json +vendor/etc/sensors/config/sns_amd_sw_disabled.json +vendor/etc/sensors/config/sns_amd_sw_enabled.json +vendor/etc/sensors/config/sns_aont.json +vendor/etc/sensors/config/sns_basic_gestures.json +vendor/etc/sensors/config/sns_bring_to_ear.json +vendor/etc/sensors/config/sns_ccd.json +vendor/etc/sensors/config/sns_ccd_v2_walk.json +vendor/etc/sensors/config/sns_ccd_v3_walk.json +vendor/etc/sensors/config/sns_cm.json +vendor/etc/sensors/config/sns_dae.json +vendor/etc/sensors/config/sns_device_orient.json +vendor/etc/sensors/config/sns_diag_filter.json +vendor/etc/sensors/config/sns_distance_bound.json +vendor/etc/sensors/config/sns_dpc.json +vendor/etc/sensors/config/sns_facing.json +vendor/etc/sensors/config/sns_fmv.json +vendor/etc/sensors/config/sns_geomag_rv.json +vendor/etc/sensors/config/sns_gyro_cal.json +vendor/etc/sensors/config/sns_heart_rate.json +vendor/etc/sensors/config/sns_mag_cal.json +vendor/etc/sensors/config/sns_mag_cal_legacy.json +vendor/etc/sensors/config/sns_multishake.json +vendor/etc/sensors/config/sns_pedometer.json +vendor/etc/sensors/config/sns_rmd.json +vendor/etc/sensors/config/sns_rotv.json +vendor/etc/sensors/config/sns_smd.json +vendor/etc/sensors/config/sns_tilt.json +vendor/etc/sensors/config/sns_tilt_sw_disabled.json +vendor/etc/sensors/config/sns_tilt_sw_enabled.json +vendor/etc/sensors/config/sns_tilt_to_wake.json +vendor/etc/sensors/config/vcnl36866_0.json +vendor/etc/sensors/sns_reg_config + +# Sensors +-product/framework/vendor.qti.hardware.sensorscalibrate-V1.0-java.jar +product/lib/vendor.qti.hardware.sensorscalibrate@1.0.so +product/lib64/vendor.qti.hardware.sensorscalibrate@1.0.so +vendor/bin/hw/android.hardware.sensors@1.0-service +vendor/bin/sensors.qti +vendor/etc/init/android.hardware.sensors@1.0-service.rc +vendor/lib/hw/android.hardware.sensors@1.0-impl.so +vendor/lib/libsensorcal.so +vendor/lib/libsensorndkbridge.so +vendor/lib/libsensorslog.so +vendor/lib/libssc.so +vendor/lib/libssc_default_listener.so +vendor/lib/sensors.rp.so +vendor/lib/sensors.ssc.so +vendor/lib64/hw/android.hardware.sensors@1.0-impl.so +vendor/lib64/libsensorcal.so +vendor/lib64/libsensorndkbridge.so +vendor/lib64/libsensorslog.so +vendor/lib64/libssc.so +vendor/lib64/libssc_default_listener.so +vendor/lib64/sensors.rp.so +vendor/lib64/sensors.ssc.so + +# Soter +-product/framework/vendor.qti.hardware.soter-V1.0-java.jar +product/lib/vendor.qti.hardware.soter@1.0.so +product/lib64/vendor.qti.hardware.soter@1.0.so +vendor/bin/hw/vendor.qti.hardware.soter@1.0-service +vendor/bin/vendor.qti.hardware.soter@1.0-provision +vendor/etc/init/vendor.qti.hardware.soter@1.0-service.rc +vendor/lib/hw/vendor.qti.hardware.soter@1.0-impl.so +vendor/lib/vendor.qti.hardware.soter@1.0.so +vendor/lib64/hw/vendor.qti.hardware.soter@1.0-impl.so +vendor/lib64/vendor.qti.hardware.soter@1.0.so + +# TUI +product/lib/vendor.qti.hardware.tui_comm@1.0.so +product/lib64/vendor.qti.hardware.tui_comm@1.0.so +vendor/bin/hw/vendor.qti.hardware.tui_comm@1.0-service-qti +vendor/etc/init/vendor.qti.hardware.tui_comm@1.0-service-qti.rc +vendor/lib/vendor.qti.hardware.tui_comm@1.0.so +vendor/lib64/vendor.qti.hardware.tui_comm@1.0.so + +# Thermal +vendor/bin/hw/android.hardware.thermal@1.0-service +vendor/bin/thermal-engine +vendor/etc/init/android.hardware.thermal@1.0-service.rc +vendor/etc/init/init_thermal-engine.rc +vendor/etc/thermal-engine-guamp.conf +vendor/etc/thermal-engine.conf +vendor/lib/hw/android.hardware.thermal@1.0-impl.so +vendor/lib/libthermalclient.so +vendor/lib64/hw/android.hardware.thermal@1.0-impl.so +vendor/lib64/libthermalclient.so + +# Thermal-Hardware +vendor/lib/hw/thermal.bengal.so +vendor/lib64/hw/thermal.bengal.so + +# Time +-vendor/app/TimeService/TimeService.apk +vendor/bin/time_daemon +vendor/lib/libtime_genoff.so +vendor/lib64/libtime_genoff.so + +# UBWC +vendor/lib/libstreamparser.so + +# Vibrator +vendor/bin/hw/android.hardware.vibrator@1.0-service +vendor/etc/init/android.hardware.vibrator@1.0-service.rc +vendor/lib/hw/android.hardware.vibrator@1.0-impl.so +vendor/lib/hw/vibrator.default.so +vendor/lib64/hw/android.hardware.vibrator@1.0-impl.so +vendor/lib64/hw/vibrator.default.so + +# Voice +-product/framework/vendor.qti.voiceprint-V1.0-java.jar +vendor/lib/vendor.qti.voiceprint@1.0.so +vendor/lib64/vendor.qti.voiceprint@1.0.so + +# WFD +bin/wfdservice +etc/init/wfdservice.rc +lib/com.qualcomm.qti.wifidisplayhal@1.0.so +lib/libwfdaac.so +lib/libwfdavenhancements.so +lib/libwfdclient.so +lib/libwfdcommonutils.so +lib/libwfdmminterface.so +lib/libwfdmmsink.so +lib/libwfdmmsrc_system.so +lib/libwfdrtsp.so +lib/libwfdservice.so +lib/libwfdsinksm.so +lib/libwfdsm.so +lib/libwfduibcinterface.so +lib/libwfduibcsink.so +lib/libwfduibcsinkinterface.so +lib/libwfduibcsrc.so +lib/libwfduibcsrcinterface.so +lib64/libwfdclient.so +lib64/libwfdcommonutils.so +lib64/libwfdmminterface.so +lib64/libwfdmmsink.so +lib64/libwfdrtsp.so +lib64/libwfdsinksm.so +lib64/libwfdsm.so +lib64/libwfduibcinterface.so +lib64/libwfduibcsink.so +lib64/libwfduibcsinkinterface.so +lib64/libwfduibcsrc.so +lib64/libwfduibcsrcinterface.so +product/lib/vendor.qti.hardware.sigma_miracast@1.0.so +product/lib/vendor.qti.hardware.wifidisplaysession@1.0.so +product/lib64/vendor.qti.hardware.sigma_miracast@1.0.so +product/lib64/vendor.qti.hardware.wifidisplaysession@1.0.so +vendor/lib/libwfdaac_vendor.so + +# WiFi +-product/framework/vendor.qti.hardware.wigig.netperftuner-V1.0-java.jar +-product/framework/vendor.qti.hardware.wigig.supptunnel-V1.0-java.jar +product/lib/vendor.qti.hardware.wigig.netperftuner@1.0.so +product/lib/vendor.qti.hardware.wigig.supptunnel@1.0.so +product/lib64/vendor.qti.hardware.wigig.netperftuner@1.0.so +product/lib64/vendor.qti.hardware.wigig.supptunnel@1.0.so +vendor/bin/cnss-daemon +vendor/bin/cnss_diag +vendor/bin/hw/android.hardware.wifi@1.0-service-lazy +vendor/etc/init/android.hardware.wifi@1.0-service-lazy.rc +vendor/etc/init/vendor.qti.hardware.wifi.wifilearner@1.0-service.rc +vendor/etc/init/vendor.qti.hardware.wigig.supptunnel@1.0-service.rc +vendor/lib/vendor.qti.hardware.wigig.netperftuner@1.0.so +vendor/lib64/vendor.qti.hardware.wifi.hostapd@1.0.so +vendor/lib64/vendor.qti.hardware.wifi.hostapd@1.1.so +vendor/lib64/vendor.qti.hardware.wifi.supplicant@1.0.so +vendor/lib64/vendor.qti.hardware.wifi.supplicant@2.0.so +vendor/lib64/vendor.qti.hardware.wifi.supplicant@2.1.so +vendor/lib64/vendor.qti.hardware.wifi.wifilearner@1.0.so +vendor/lib64/vendor.qti.hardware.wigig.netperftuner@1.0.so +vendor/lib64/vendor.qti.hardware.wigig.supptunnel@1.0.so + +# rootdir +vendor/bin/aplogd +vendor/bin/batt_health +vendor/bin/capsense_reset +vendor/bin/charge_only_mode +vendor/bin/diag_mdlog +vendor/bin/diag_mdlog-getlogs +vendor/bin/diag_mdlog-wrap +vendor/bin/ftmdaemon +vendor/bin/ftmipcd +vendor/bin/hw/fpc_ident +vendor/bin/mbm_spy +vendor/bin/mlid +vendor/bin/mmid +vendor/bin/qcom-system-daemon +vendor/bin/sscrpcd +vendor/bin/ssgqmigd +vendor/bin/tcmd +vendor/bin/tcmdhelp +vendor/bin/wdsdaemon +vendor/bin/wigignpt + +# Misc +-vendor/app/CACertService/CACertService.apk +-vendor/app/ConnectionSecurityService/ConnectionSecurityService.apk +vendor/app/QDMA-UI/lib/arm64/libvndfwk_detect_jni.qti.so +vendor/app/QDMA/lib/arm64/libvndfwk_detect_jni.qti.so +-vendor/app/SSGTelemetryService/SSGTelemetryService.apk +-vendor/app/TrustZoneAccessService/TrustZoneAccessService.apk +vendor/bin/acvp_test +vendor/bin/adpl +vendor/bin/aplogcat +vendor/bin/athdiag +vendor/bin/aw882xx_cali +vendor/bin/batch +vendor/bin/bc +vendor/bin/bootloaderlog +vendor/bin/checkpoint_gc +vendor/bin/chifeature2test +vendor/bin/chiofflinepostproctest +vendor/bin/cnss_cli +vendor/bin/cplay +vendor/bin/devmem +vendor/bin/diag_callback_sample +vendor/bin/diag_dci_sample +vendor/bin/diag_klog +vendor/bin/diag_socket_log +vendor/bin/diag_uart_log +vendor/bin/dumpsys +vendor/bin/expat +vendor/bin/e_loop +vendor/bin/f2player +vendor/bin/fastrpc_tests_apps +vendor/bin/fmconfig +vendor/bin/fmfactorytest +vendor/bin/fmfactorytestserver +vendor/bin/fpc_tee_test +vendor/bin/fsync +vendor/bin/ftmtest +vendor/bin/ftm_flows_test +vendor/bin/getconf +vendor/bin/getconfig +vendor/bin/getfattr +vendor/bin/hal_proxy_daemon +vendor/bin/host_manager_11ad +vendor/bin/hsic_test +vendor/bin/hw/capabilityconfigstoretest +vendor/bin/hw/vendor.qti.hardware.qseecom@1.0-service +vendor/bin/hw/vendor.qti.hardware.servicetracker@1.1-service +vendor/bin/i2cdetect +vendor/bin/i2cdump +vendor/bin/i2cget +vendor/bin/i2cset +vendor/bin/iconv +vendor/bin/install +vendor/bin/ipacm-diag +vendor/bin/KmInstallKeybox +vendor/bin/KmValidateKeybox +vendor/bin/kpgather +vendor/bin/kpreadwrite +vendor/bin/loadalgo +vendor/bin/lowi_test +vendor/bin/masterclear +vendor/bin/memtest_mode +vendor/bin/mm-adec-omxMpegh-test +vendor/bin/mm-vidc-omx-test +vendor/bin/myftm +vendor/bin/nc +vendor/bin/netcat +vendor/bin/nproc +vendor/bin/nsenter +vendor/bin/pktlogconf +vendor/bin/PktRspTest +vendor/bin/ppd +vendor/bin/ptf +vendor/bin/qdcmss +vendor/bin/qdss_qmi_helper +vendor/bin/qmi_motext_hook +vendor/bin/qmi_simple_ril_test +vendor/bin/qseecom_sample_client +vendor/bin/secure_ui_sample_client +vendor/bin/sendevent2 +vendor/bin/setconfig +vendor/bin/setfattr +vendor/bin/shell_11ad +vendor/bin/sigma_dut +vendor/bin/sns_mot_client +vendor/bin/spectraltool +vendor/bin/StoreKeybox +vendor/bin/test +vendor/bin/testapp_diag_senddata +vendor/bin/test_diag +vendor/bin/tinymix +vendor/bin/tinyplay +vendor/bin/ufsgetsn +vendor/bin/unlink +vendor/bin/unshare +vendor/bin/uuidgen +vendor/bin/vendor_cmd_tool +vendor/bin/watch +vendor/bin/wifilearner +vendor/bin/wigighalsvc +vendor/bin/wigig_wiburn +vendor/bin/xtwifi-client +vendor/bin/xtwifi-inet-agent +vendor/etc/ap_gain.bin +vendor/etc/ap_gain_mmul.bin +vendor/etc/bt_stack_level6.conf +vendor/etc/charger_fstab.qti +vendor/etc/configstore/wigig.xml +vendor/etc/diag_mdlog/5GNR_LTE_CN_V9.cfg +vendor/etc/diag_mdlog/ADSP-sensor.cfg +vendor/etc/diag_mdlog/Connection_Issues_V13_with_RF_and_tuner_log.cfg +vendor/etc/diag_mdlog/Connection_Issues_V15.cfg +vendor/etc/diag_mdlog/default.cfg +vendor/etc/diag_mdlog/default.opts +vendor/etc/diag_mdlog/DIAG_WLAN_Modem_AS.cfg +vendor/etc/diag_mdlog/DIAG_WLAN_Modem_no_AS.cfg +vendor/etc/diag_mdlog/FIT_V23_4_audio.cfg +vendor/etc/diag_mdlog/FIT_V25_1.cfg +vendor/etc/diag_mdlog/FIT_V25_2_volte_full_ip.cfg +vendor/etc/diag_mdlog/FIT_V25_3_audio.cfg +vendor/etc/diag_mdlog/GNSS_v9.cfg +vendor/etc/diag_mdlog/MM_audio_playback_capture_v2.0.cfg +vendor/etc/diag_mdlog/QC_default-5.0.cfg +vendor/etc/diag_mdlog/QC_default.cfg +vendor/etc/diag_mdlog/Sensors_for_670_6150_8150_and_later.cfg +vendor/etc/diag_mdlog/Tx_Antenna_Switching.cfg +vendor/etc/diag_mdlog/Vzw_Connection_Issues_V4.cfg +vendor/etc/diag_mdlog/WLAN_V1.cfg +vendor/etc/diag_mdlog/Wlan_V2.cfg +vendor/etc/gpfspath_oem_config.xml +vendor/etc/hostapd/hostapd.accept +vendor/etc/hostapd/hostapd.deny +vendor/etc/hostapd/hostapd_default.conf +vendor/etc/init/dataadpl.rc +vendor/etc/init/dataqti.rc +vendor/etc/init/dpmQmiMgr.rc +vendor/etc/init/imsdatadaemon.rc +vendor/etc/init/imsqmidaemon.rc +vendor/etc/init/imsrcsd.rc +vendor/etc/init/ims_rtp_daemon.rc +vendor/etc/init/init-qcril-data.rc +vendor/etc/init/init.gf_ident.rc +vendor/etc/init/init.mmi.smartpa.rc +vendor/etc/init/init.qti.media.rc +vendor/etc/init/init.time_daemon.rc +vendor/etc/init/init.vendor.sensors.rc +vendor/etc/init/ipacm-diag.rc +vendor/etc/init/ipacm.rc +vendor/etc/init/ipa_fws.rc +vendor/etc/init/netmgrd.rc +vendor/etc/init/port-bridge.rc +vendor/etc/init/qdcmss.rc +vendor/etc/init/qseecomd.rc +vendor/etc/init/vendor.mmi.carrier.rc +vendor/etc/init/vendor.qti.adsprpc-service.rc +vendor/etc/init/vendor.qti.hardware.charger_monitor@1.0-service.rc +vendor/etc/init/vendor.qti.hardware.qseecom@1.0-service.rc +vendor/etc/init/vendor.qti.hardware.servicetracker@1.1-service.rc +vendor/etc/init/vendor.qti.rmt_storage.rc +vendor/etc/init/vendor.qti.tftp.rc +vendor/etc/lm/AdaptLaunchFeature.xml +vendor/etc/lm/AppClassifierFeature.xml +vendor/etc/lm/GameOptimizationFeature.xml +vendor/etc/lm/prekill/prekill_2GB.data +vendor/etc/lm/prekill/prekill_4GB.data +vendor/etc/lm/prekill/prekill_6GB.data +vendor/etc/lm/PreKillFeature.xml +vendor/etc/permissions/unavail.android.hardware.sensor.barometer.xml +vendor/etc/permissions/unavail.android.hardware.sensor.compass.xml +vendor/etc/simlock_template.dat +vendor/etc/ssg/ta_config.json +vendor/etc/ssg/tz_whitelist.json +vendor/etc/vhw.xml +vendor/firmware/scuba_ipa_fws.b00 +vendor/firmware/scuba_ipa_fws.b01 +vendor/firmware/scuba_ipa_fws.b02 +vendor/firmware/scuba_ipa_fws.b03 +vendor/firmware/scuba_ipa_fws.b04 +vendor/firmware/scuba_ipa_fws.elf +vendor/firmware/scuba_ipa_fws.mdt +vendor/lib/btaudio_offload_if.so +vendor/lib/com.qti.chiusecaseselector.so +vendor/lib/com.qti.feature2.anchorsync.so +vendor/lib/com.qti.feature2.demux.so +vendor/lib/com.qti.feature2.frameselect.so +vendor/lib/com.qti.feature2.fusion.so +vendor/lib/com.qti.feature2.generic.so +vendor/lib/com.qti.feature2.gs.so +vendor/lib/com.qti.feature2.hdr.so +vendor/lib/com.qti.feature2.memcpy.so +vendor/lib/com.qti.feature2.mfsr.so +vendor/lib/com.qti.feature2.qcfa.so +vendor/lib/com.qti.feature2.rawhdr.so +vendor/lib/com.qti.feature2.rt.so +vendor/lib/com.qti.feature2.serializer.so +vendor/lib/com.qti.feature2.stub.so +vendor/lib/com.qti.feature2.swmf.so +vendor/lib/ese_client.so +vendor/lib/hw/displaypanel.default.so +vendor/lib/hw/vendor.qti.hardware.qseecom@1.0-impl.so +vendor/lib/hw/vendor.qti.hardware.servicetracker@1.1-impl.so +vendor/lib/libadreno_app_profiles.so +vendor/lib/libaidenoiser.so +vendor/lib/libandroidicu.so +vendor/lib/libbitmlengine.so +vendor/lib/libcacertclient.so +vendor/lib/libchilog.so +vendor/lib/libchrome.so +vendor/lib/libcontentcopy.so +vendor/lib/libdiagjni.so +vendor/lib/libdisplayconfig.so +vendor/lib/libdisplayskuutils.so +vendor/lib/libfastcrc.so +vendor/lib/libfcell.so +vendor/lib/libFileMux_proprietary.so +vendor/lib/libGLESv2_adreno.so +vendor/lib/libicui18n.so +vendor/lib/libicuuc.so +vendor/lib/libipebpsstriping.so +vendor/lib/libjnihelper.so +vendor/lib/libjpege.so +vendor/lib/liblog_vendor.so +vendor/lib/libmctfengine_stub.so +vendor/lib/libmdmcutback.so +vendor/lib/libmmparser_lite_proprietary.so +vendor/lib/libmmrtpdecoder_proprietary.so +vendor/lib/libmmrtpencoder_proprietary.so +vendor/lib/libMpeghSwEnc.so +vendor/lib/libofflinelog.so +vendor/lib/libOmxMpeghDecSw.so +vendor/lib/libOmxMpeghEncSw.so +vendor/lib/libopencv.so +vendor/lib/libopestriping.so +vendor/lib/libopus.so +vendor/lib/libperfconfig.so +vendor/lib/libpkip.so +vendor/lib/libqcbor.so +vendor/lib/libqdma_file_agent.so +vendor/lib/libqti_vndfwk_detect.so +vendor/lib/libskewknob.so +vendor/lib/libsns_registry_skel.so +vendor/lib/libstagefright_amrnb_common.so +vendor/lib/libstagefright_enc_common.so +vendor/lib/libstagefright_flacdec.so +vendor/lib/libstagefright_softomx.so +vendor/lib/libstagefright_softomx_plugin.so +vendor/lib/libstagefright_soft_aacdec.so +vendor/lib/libstagefright_soft_aacenc.so +vendor/lib/libstagefright_soft_amrdec.so +vendor/lib/libstagefright_soft_amrnbenc.so +vendor/lib/libstagefright_soft_amrwbenc.so +vendor/lib/libstagefright_soft_avcdec.so +vendor/lib/libstagefright_soft_avcenc.so +vendor/lib/libstagefright_soft_flacdec.so +vendor/lib/libstagefright_soft_flacenc.so +vendor/lib/libstagefright_soft_g711dec.so +vendor/lib/libstagefright_soft_gsmdec.so +vendor/lib/libstagefright_soft_hevcdec.so +vendor/lib/libstagefright_soft_mp3dec.so +vendor/lib/libstagefright_soft_mpeg4dec.so +vendor/lib/libstagefright_soft_mpeg4enc.so +vendor/lib/libstagefright_soft_opusdec.so +vendor/lib/libstagefright_soft_rawdec.so +vendor/lib/libstagefright_soft_vorbisdec.so +vendor/lib/libstagefright_soft_vpxdec.so +vendor/lib/libstagefright_soft_vpxenc.so +vendor/lib/libsynergy_loc_api.so +vendor/lib/libtfestriping.so +vendor/lib/libtpa.so +vendor/lib/libtrustedapploader.so +vendor/lib/libvndfwk_detect_jni.qti.so +vendor/lib/libvorbisidec.so +vendor/lib/libvpx.so +vendor/lib/libwifi-hal-ctrl.so +vendor/lib/libwigig_flashaccess.so +vendor/lib/libwigig_ftm_flows.so +vendor/lib/libwigig_pciaccess.so +vendor/lib/libwigig_utils.so +vendor/lib/qtibus.so +vendor/lib/qtimutex.so +vendor/lib/soundfx/libmmieffectswrapper.so +vendor/lib/soundfx/libspeakerbundle.so +vendor/lib/vendor.qti.hardware.automotive.vehicle@1.0.so +vendor/lib/vendor.qti.hardware.cacert@1.0.so +vendor/lib/vendor.qti.hardware.qseecom@1.0.so +vendor/lib/vendor.qti.hardware.servicetracker@1.0.so +vendor/lib/vendor.qti.hardware.servicetracker@1.1.so +vendor/lib/vendor.qti.hardware.slmadapter@1.0.so +vendor/lib/vndk/libtinyalsa.so +vendor/lib64/btaudio_offload_if.so +vendor/lib64/com.qti.chiusecaseselector.so +vendor/lib64/com.qti.feature2.anchorsync.so +vendor/lib64/com.qti.feature2.demux.so +vendor/lib64/com.qti.feature2.frameselect.so +vendor/lib64/com.qti.feature2.fusion.so +vendor/lib64/com.qti.feature2.generic.so +vendor/lib64/com.qti.feature2.gs.so +vendor/lib64/com.qti.feature2.hdr.so +vendor/lib64/com.qti.feature2.memcpy.so +vendor/lib64/com.qti.feature2.mfsr.so +vendor/lib64/com.qti.feature2.qcfa.so +vendor/lib64/com.qti.feature2.rawhdr.so +vendor/lib64/com.qti.feature2.rt.so +vendor/lib64/com.qti.feature2.serializer.so +vendor/lib64/com.qti.feature2.stub.so +vendor/lib64/com.qti.feature2.swmf.so +vendor/lib64/ese_client.so +vendor/lib64/hw/displaypanel.default.so +vendor/lib64/hw/vendor.qti.hardware.qseecom@1.0-impl.so +vendor/lib64/hw/vendor.qti.hardware.servicetracker@1.1-impl.so +vendor/lib64/libadreno_app_profiles.so +vendor/lib64/libadropbox.so +vendor/lib64/libaidenoiser.so +vendor/lib64/libappclassifier.so +vendor/lib64/libbitmlengine.so +vendor/lib64/libcacertclient.so +vendor/lib64/libchilog.so +vendor/lib64/libchrome.so +vendor/lib64/libcontentcopy.so +vendor/lib64/libdiagjni.so +vendor/lib64/libdisplayconfig.so +vendor/lib64/libdisplayskuutils.so +vendor/lib64/libfcell.so +vendor/lib64/libgameoptfeature.so +vendor/lib64/libGLESv2_adreno.so +vendor/lib64/libhistogram.so +vendor/lib64/libipebpsstriping.so +vendor/lib64/libjnihelper.so +vendor/lib64/libjpege.so +vendor/lib64/liblmutils-ns.so +vendor/lib64/libloadalgo_stub.so +vendor/lib64/liblog_vendor.so +vendor/lib64/libmctfengine_stub.so +vendor/lib64/libmdmcutback.so +vendor/lib64/libmemperfd.so +vendor/lib64/libmmparser_lite_proprietary.so +vendor/lib64/libMpeghSwEnc.so +vendor/lib64/libofflinelog.so +vendor/lib64/libOmxMpeghEncSw.so +vendor/lib64/libopencv.so +vendor/lib64/libopestriping.so +vendor/lib64/libperfconfig.so +vendor/lib64/libprekill.so +vendor/lib64/libqcbor.so +vendor/lib64/libqti_vndfwk_detect.so +vendor/lib64/libreffeature.so +vendor/lib64/libskewknob.so +vendor/lib64/libsns_registry_skel.so +vendor/lib64/libstagefright_softomx.so +vendor/lib64/libsuspend.so +vendor/lib64/libsynergy_loc_api.so +vendor/lib64/libtfestriping.so +vendor/lib64/libtrustedapploader.so +vendor/lib64/libvndfwk_detect_jni.qti.so +vendor/lib64/libwifi-hal-ctrl.so +vendor/lib64/libwigig_flashaccess.so +vendor/lib64/libwigig_ftm_flows.so +vendor/lib64/libwigig_pciaccess.so +vendor/lib64/libwigig_utils.so +vendor/lib64/qtibus.so +vendor/lib64/qtimutex.so +vendor/lib64/unnhal-acc-adreno.so +vendor/lib64/unnhal-acc-common.so +vendor/lib64/unnhal-acc-hvx.so +vendor/lib64/vendor.qti.hardware.automotive.vehicle@1.0.so +vendor/lib64/vendor.qti.hardware.cacert@1.0.so +vendor/lib64/vendor.qti.hardware.qseecom@1.0.so +vendor/lib64/vendor.qti.hardware.servicetracker@1.0.so +vendor/lib64/vendor.qti.hardware.servicetracker@1.1.so +vendor/lib64/vendor.qti.hardware.slmadapter@1.0.so diff --git a/rootdir/Android.mk b/rootdir/Android.mk new file mode 100644 index 0000000..4a820f9 --- /dev/null +++ b/rootdir/Android.mk @@ -0,0 +1,403 @@ +LOCAL_PATH := $(call my-dir) +include $(CLEAR_VARS) + +include $(CLEAR_VARS) +LOCAL_MODULE := apanic_annotate.sh +LOCAL_MODULE_TAGS := optional +LOCAL_MODULE_CLASS := ETC +LOCAL_SRC_FILES := bin/apanic_annotate.sh +LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_EXECUTABLES) +include $(BUILD_PREBUILT) + +include $(CLEAR_VARS) +LOCAL_MODULE := apanic_copy.sh +LOCAL_MODULE_TAGS := optional +LOCAL_MODULE_CLASS := ETC +LOCAL_SRC_FILES := bin/apanic_copy.sh +LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_EXECUTABLES) +include $(BUILD_PREBUILT) + +include $(CLEAR_VARS) +LOCAL_MODULE := apanic_save.sh +LOCAL_MODULE_TAGS := optional +LOCAL_MODULE_CLASS := ETC +LOCAL_SRC_FILES := bin/apanic_save.sh +LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_EXECUTABLES) +include $(BUILD_PREBUILT) + +include $(CLEAR_VARS) +LOCAL_MODULE := hardware_revisions.sh +LOCAL_MODULE_TAGS := optional +LOCAL_MODULE_CLASS := ETC +LOCAL_SRC_FILES := bin/hardware_revisions.sh +LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_EXECUTABLES) +include $(BUILD_PREBUILT) + +include $(CLEAR_VARS) +LOCAL_MODULE := init.class_main.sh +LOCAL_MODULE_TAGS := optional +LOCAL_MODULE_CLASS := ETC +LOCAL_SRC_FILES := bin/init.class_main.sh +LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_EXECUTABLES) +include $(BUILD_PREBUILT) + +include $(CLEAR_VARS) +LOCAL_MODULE := init.crda.sh +LOCAL_MODULE_TAGS := optional +LOCAL_MODULE_CLASS := ETC +LOCAL_SRC_FILES := bin/init.crda.sh +LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_EXECUTABLES) +include $(BUILD_PREBUILT) + +include $(CLEAR_VARS) +LOCAL_MODULE := init.gbmods.sh +LOCAL_MODULE_TAGS := optional +LOCAL_MODULE_CLASS := ETC +LOCAL_SRC_FILES := bin/init.gbmods.sh +LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_EXECUTABLES) +include $(BUILD_PREBUILT) + +include $(CLEAR_VARS) +LOCAL_MODULE := init.mdm.sh +LOCAL_MODULE_TAGS := optional +LOCAL_MODULE_CLASS := ETC +LOCAL_SRC_FILES := bin/init.mdm.sh +LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_EXECUTABLES) +include $(BUILD_PREBUILT) + +include $(CLEAR_VARS) +LOCAL_MODULE := init.mmi.block_perm.sh +LOCAL_MODULE_TAGS := optional +LOCAL_MODULE_CLASS := ETC +LOCAL_SRC_FILES := bin/init.mmi.block_perm.sh +LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_EXECUTABLES) +include $(BUILD_PREBUILT) + +include $(CLEAR_VARS) +LOCAL_MODULE := init.mmi.boot.sh +LOCAL_MODULE_TAGS := optional +LOCAL_MODULE_CLASS := ETC +LOCAL_SRC_FILES := bin/init.mmi.boot.sh +LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_EXECUTABLES) +include $(BUILD_PREBUILT) + +include $(CLEAR_VARS) +LOCAL_MODULE := init.mmi.laser.sh +LOCAL_MODULE_TAGS := optional +LOCAL_MODULE_CLASS := ETC +LOCAL_SRC_FILES := bin/init.mmi.laser.sh +LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_EXECUTABLES) +include $(BUILD_PREBUILT) + +include $(CLEAR_VARS) +LOCAL_MODULE := init.mmi.mdlog-getlogs.sh +LOCAL_MODULE_TAGS := optional +LOCAL_MODULE_CLASS := ETC +LOCAL_SRC_FILES := bin/init.mmi.mdlog-getlogs.sh +LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_EXECUTABLES) +include $(BUILD_PREBUILT) + +include $(CLEAR_VARS) +LOCAL_MODULE := init.mmi.modules.sh +LOCAL_MODULE_TAGS := optional +LOCAL_MODULE_CLASS := ETC +LOCAL_SRC_FILES := bin/init.mmi.modules.sh +LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_EXECUTABLES) +include $(BUILD_PREBUILT) + +include $(CLEAR_VARS) +LOCAL_MODULE := init.mmi.shutdown.sh +LOCAL_MODULE_TAGS := optional +LOCAL_MODULE_CLASS := ETC +LOCAL_SRC_FILES := bin/init.mmi.shutdown.sh +LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_EXECUTABLES) +include $(BUILD_PREBUILT) + +include $(CLEAR_VARS) +LOCAL_MODULE := init.mmi.touch.sh +LOCAL_MODULE_TAGS := optional +LOCAL_MODULE_CLASS := ETC +LOCAL_SRC_FILES := bin/init.mmi.touch.sh +LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_EXECUTABLES) +include $(BUILD_PREBUILT) + +include $(CLEAR_VARS) +LOCAL_MODULE := init.mmi.usb.sh +LOCAL_MODULE_TAGS := optional +LOCAL_MODULE_CLASS := ETC +LOCAL_SRC_FILES := bin/init.mmi.usb.sh +LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_EXECUTABLES) +include $(BUILD_PREBUILT) + +include $(CLEAR_VARS) +LOCAL_MODULE := init.mmi.wlan-getlogs.sh +LOCAL_MODULE_TAGS := optional +LOCAL_MODULE_CLASS := ETC +LOCAL_SRC_FILES := bin/init.mmi.wlan-getlogs.sh +LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_EXECUTABLES) +include $(BUILD_PREBUILT) + +include $(CLEAR_VARS) +LOCAL_MODULE := init.oem.fingerprint.sh +LOCAL_MODULE_TAGS := optional +LOCAL_MODULE_CLASS := ETC +LOCAL_SRC_FILES := bin/init.oem.fingerprint.sh +LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_EXECUTABLES) +include $(BUILD_PREBUILT) + +include $(CLEAR_VARS) +LOCAL_MODULE := init.oem.fingerprint2.sh +LOCAL_MODULE_TAGS := optional +LOCAL_MODULE_CLASS := ETC +LOCAL_SRC_FILES := bin/init.oem.fingerprint2.sh +LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_EXECUTABLES) +include $(BUILD_PREBUILT) + +include $(CLEAR_VARS) +LOCAL_MODULE := init.oem.hw.sh +LOCAL_MODULE_TAGS := optional +LOCAL_MODULE_CLASS := ETC +LOCAL_SRC_FILES := bin/init.oem.hw.sh +LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_EXECUTABLES) +include $(BUILD_PREBUILT) + +include $(CLEAR_VARS) +LOCAL_MODULE := init.qcom.class_core.sh +LOCAL_MODULE_TAGS := optional +LOCAL_MODULE_CLASS := ETC +LOCAL_SRC_FILES := bin/init.qcom.class_core.sh +LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_EXECUTABLES) +include $(BUILD_PREBUILT) + +include $(CLEAR_VARS) +LOCAL_MODULE := init.qcom.coex.sh +LOCAL_MODULE_TAGS := optional +LOCAL_MODULE_CLASS := ETC +LOCAL_SRC_FILES := bin/init.qcom.coex.sh +LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_EXECUTABLES) +include $(BUILD_PREBUILT) + +include $(CLEAR_VARS) +LOCAL_MODULE := init.qcom.crashdata.sh +LOCAL_MODULE_TAGS := optional +LOCAL_MODULE_CLASS := ETC +LOCAL_SRC_FILES := bin/init.qcom.crashdata.sh +LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_EXECUTABLES) +include $(BUILD_PREBUILT) + +include $(CLEAR_VARS) +LOCAL_MODULE := init.qcom.early_boot.sh +LOCAL_MODULE_TAGS := optional +LOCAL_MODULE_CLASS := ETC +LOCAL_SRC_FILES := bin/init.qcom.early_boot.sh +LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_EXECUTABLES) +include $(BUILD_PREBUILT) + +include $(CLEAR_VARS) +LOCAL_MODULE := init.qcom.efs.sync.sh +LOCAL_MODULE_TAGS := optional +LOCAL_MODULE_CLASS := ETC +LOCAL_SRC_FILES := bin/init.qcom.efs.sync.sh +LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_EXECUTABLES) +include $(BUILD_PREBUILT) + +include $(CLEAR_VARS) +LOCAL_MODULE := init.qcom.post_boot.sh +LOCAL_MODULE_TAGS := optional +LOCAL_MODULE_CLASS := ETC +LOCAL_SRC_FILES := bin/init.qcom.post_boot.sh +LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_EXECUTABLES) +include $(BUILD_PREBUILT) + +include $(CLEAR_VARS) +LOCAL_MODULE := init.qcom.sdio.sh +LOCAL_MODULE_TAGS := optional +LOCAL_MODULE_CLASS := ETC +LOCAL_SRC_FILES := bin/init.qcom.sdio.sh +LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_EXECUTABLES) +include $(BUILD_PREBUILT) + +include $(CLEAR_VARS) +LOCAL_MODULE := init.qcom.sensors.sh +LOCAL_MODULE_TAGS := optional +LOCAL_MODULE_CLASS := ETC +LOCAL_SRC_FILES := bin/init.qcom.sensors.sh +LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_EXECUTABLES) +include $(BUILD_PREBUILT) + +include $(CLEAR_VARS) +LOCAL_MODULE := init.qcom.sh +LOCAL_MODULE_TAGS := optional +LOCAL_MODULE_CLASS := ETC +LOCAL_SRC_FILES := bin/init.qcom.sh +LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_EXECUTABLES) +include $(BUILD_PREBUILT) + +include $(CLEAR_VARS) +LOCAL_MODULE := init.qti.chg_policy.sh +LOCAL_MODULE_TAGS := optional +LOCAL_MODULE_CLASS := ETC +LOCAL_SRC_FILES := bin/init.qti.chg_policy.sh +LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_EXECUTABLES) +include $(BUILD_PREBUILT) + +include $(CLEAR_VARS) +LOCAL_MODULE := init.qti.fm.sh +LOCAL_MODULE_TAGS := optional +LOCAL_MODULE_CLASS := ETC +LOCAL_SRC_FILES := bin/init.qti.fm.sh +LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_EXECUTABLES) +include $(BUILD_PREBUILT) + +include $(CLEAR_VARS) +LOCAL_MODULE := init.qti.ims.sh +LOCAL_MODULE_TAGS := optional +LOCAL_MODULE_CLASS := ETC +LOCAL_SRC_FILES := bin/init.qti.ims.sh +LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_EXECUTABLES) +include $(BUILD_PREBUILT) + +include $(CLEAR_VARS) +LOCAL_MODULE := init.qti.media.sh +LOCAL_MODULE_TAGS := optional +LOCAL_MODULE_CLASS := ETC +LOCAL_SRC_FILES := bin/init.qti.media.sh +LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_EXECUTABLES) +include $(BUILD_PREBUILT) + +include $(CLEAR_VARS) +LOCAL_MODULE := pstore_annotate.sh +LOCAL_MODULE_TAGS := optional +LOCAL_MODULE_CLASS := ETC +LOCAL_SRC_FILES := bin/pstore_annotate.sh +LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_EXECUTABLES) +include $(BUILD_PREBUILT) + +include $(CLEAR_VARS) +LOCAL_MODULE := qca6234-service.sh +LOCAL_MODULE_TAGS := optional +LOCAL_MODULE_CLASS := ETC +LOCAL_SRC_FILES := bin/qca6234-service.sh +LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_EXECUTABLES) +include $(BUILD_PREBUILT) + +include $(CLEAR_VARS) +LOCAL_MODULE := init.mmi.charge_only.rc +LOCAL_MODULE_TAGS := optional +LOCAL_MODULE_CLASS := ETC +LOCAL_SRC_FILES := etc/init.mmi.charge_only.rc +LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_ETC)/init/hw +include $(BUILD_PREBUILT) + +include $(CLEAR_VARS) +LOCAL_MODULE := init.mmi.chipset.rc +LOCAL_MODULE_TAGS := optional +LOCAL_MODULE_CLASS := ETC +LOCAL_SRC_FILES := etc/init.mmi.chipset.rc +LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_ETC)/init/hw +include $(BUILD_PREBUILT) + +include $(CLEAR_VARS) +LOCAL_MODULE := init.mmi.debug.rc +LOCAL_MODULE_TAGS := optional +LOCAL_MODULE_CLASS := ETC +LOCAL_SRC_FILES := etc/init.mmi.debug.rc +LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_ETC)/init/hw +include $(BUILD_PREBUILT) + +include $(CLEAR_VARS) +LOCAL_MODULE := init.mmi.diag.rc +LOCAL_MODULE_TAGS := optional +LOCAL_MODULE_CLASS := ETC +LOCAL_SRC_FILES := etc/init.mmi.diag.rc +LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_ETC)/init/hw +include $(BUILD_PREBUILT) + +include $(CLEAR_VARS) +LOCAL_MODULE := init.mmi.diag_mdlog.rc +LOCAL_MODULE_TAGS := optional +LOCAL_MODULE_CLASS := ETC +LOCAL_SRC_FILES := etc/init.mmi.diag_mdlog.rc +LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_ETC)/init/hw +include $(BUILD_PREBUILT) + +include $(CLEAR_VARS) +LOCAL_MODULE := init.mmi.overlay.rc +LOCAL_MODULE_TAGS := optional +LOCAL_MODULE_CLASS := ETC +LOCAL_SRC_FILES := etc/init.mmi.overlay.rc +LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_ETC)/init/hw +include $(BUILD_PREBUILT) + +include $(CLEAR_VARS) +LOCAL_MODULE := init.mmi.rc +LOCAL_MODULE_TAGS := optional +LOCAL_MODULE_CLASS := ETC +LOCAL_SRC_FILES := etc/init.mmi.rc +LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_ETC)/init/hw +include $(BUILD_PREBUILT) + +include $(CLEAR_VARS) +LOCAL_MODULE := init.mmi.tcmd.rc +LOCAL_MODULE_TAGS := optional +LOCAL_MODULE_CLASS := ETC +LOCAL_SRC_FILES := etc/init.mmi.tcmd.rc +LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_ETC)/init/hw +include $(BUILD_PREBUILT) + +include $(CLEAR_VARS) +LOCAL_MODULE := init.mmi.usb.rc +LOCAL_MODULE_TAGS := optional +LOCAL_MODULE_CLASS := ETC +LOCAL_SRC_FILES := etc/init.mmi.usb.rc +LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_ETC)/init/hw +include $(BUILD_PREBUILT) + +include $(CLEAR_VARS) +LOCAL_MODULE := init.mmi.wlan.rc +LOCAL_MODULE_TAGS := optional +LOCAL_MODULE_CLASS := ETC +LOCAL_SRC_FILES := etc/init.mmi.wlan.rc +LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_ETC)/init/hw +include $(BUILD_PREBUILT) + +include $(CLEAR_VARS) +LOCAL_MODULE := init.qcom.factory.rc +LOCAL_MODULE_TAGS := optional +LOCAL_MODULE_CLASS := ETC +LOCAL_SRC_FILES := etc/init.qcom.factory.rc +LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_ETC)/init/hw +include $(BUILD_PREBUILT) + +include $(CLEAR_VARS) +LOCAL_MODULE := init.qcom.rc +LOCAL_MODULE_TAGS := optional +LOCAL_MODULE_CLASS := ETC +LOCAL_SRC_FILES := etc/init.qcom.rc +LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_ETC)/init/hw +include $(BUILD_PREBUILT) + +include $(CLEAR_VARS) +LOCAL_MODULE := init.target.rc +LOCAL_MODULE_TAGS := optional +LOCAL_MODULE_CLASS := ETC +LOCAL_SRC_FILES := etc/init.target.rc +LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_ETC)/init/hw +include $(BUILD_PREBUILT) + +include $(CLEAR_VARS) +LOCAL_MODULE := fstab.qcom +LOCAL_MODULE_TAGS := optional +LOCAL_MODULE_CLASS := ETC +LOCAL_SRC_FILES := etc/fstab.qcom +LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR_ETC) +include $(BUILD_PREBUILT) + +include $(CLEAR_VARS) +LOCAL_MODULE := ueventd.qcom.rc +LOCAL_MODULE_STEM := ueventd.rc +LOCAL_MODULE_TAGS := optional +LOCAL_MODULE_CLASS := ETC +LOCAL_SRC_FILES := etc/ueventd.qcom.rc +LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR) +include $(BUILD_PREBUILT) diff --git a/rootdir/bin/apanic_annotate.sh b/rootdir/bin/apanic_annotate.sh new file mode 100644 index 0000000..34da986 --- /dev/null +++ b/rootdir/bin/apanic_annotate.sh @@ -0,0 +1,53 @@ +#!/vendor/bin/sh +# +# Copyright (c) 2012, Motorola Mobility LLC, All rights reserved. +# +# The purpose of this script is to annotate panic dumps with useful information +# about the context of the event. +# + +export PATH=/vendor/bin:/system/bin:$PATH + +annotate() +{ + VAL=`$2` + [ "$VAL" ] || return + + echo "$1: $VAL" > /sys/fs/pstore/annotate-ramoops +} + +case $1 in + build*) + annotate "Build number" "getprop ro.build.display.id" + annotate "Build config" "getprop ro.build.config.version" + annotate "Kernel version" "cat /proc/sys/kernel/osrelease" + ;; + baseband*) + annotate "Baseband version" "getprop gsm.version.baseband" + ;; +esac + +# check for pstore files and copy them to the /data/dontpanic +if [ -e /sys/fs/pstore/console-ramoops ] +then + cp /sys/fs/pstore/console-ramoops /data/vendor/dontpanic/last_kmsg + chown root:log /data/vendor/dontpanic/last_kmsg + chmod 0640 /data/vendor/dontpanic/last_kmsg + if [ -e /sys/fs/pstore/annotate-ramoops ] + then + cat /sys/fs/pstore/annotate-ramoops >> /data/vendor/dontpanic/last_kmsg + fi +fi + +if [ -e /sys/fs/pstore/dmesg-ramoops-0 ] +then + cp /sys/fs/pstore/dmesg-ramoops-0 /data/vendor/dontpanic/apanic_console + chown root:log /data/vendor/dontpanic/apanic_console + chmod 0640 /data/vendor/dontpanic/apanic_console + if [ -e /sys/fs/pstore/annotate-ramoops ] + then + cat /sys/fs/pstore/annotate-ramoops >> /data/vendor/dontpanic/apanic_console + fi + rm /sys/fs/pstore/dmesg-ramoops-0 +fi +kpgather diff --git a/rootdir/bin/apanic_copy.sh b/rootdir/bin/apanic_copy.sh new file mode 100644 index 0000000..bb6f09c --- /dev/null +++ b/rootdir/bin/apanic_copy.sh @@ -0,0 +1,43 @@ +#!/vendor/bin/sh +# +# Copyright (c) 2015, Motorola Mobility LLC, All rights reserved. +# +# The purpose of this script is to read panic dumps to /data and dropbox +# for issue report +# + +export PATH=/vendor/bin:/system/bin:$PATH + +while getopts i op; +do + case $op in + i) ignore_apanic_logs=1;; + esac +done + +if [ -z "$ignore_apanic_logs" ]; then + # read log from "kpan" partition to /data/dontpanic + kpreadwrite r + # write panic/wdt report to dropbox + kpgather +else + apanic_logcopy=$(getprop 'ro.vendor.bootreason') + if [ "$apanic_logcopy" == "coldboot" ]; then + return 0 + fi +fi + +if [ -e /dev/block/bootdevice/by-name/logs ] ; then + BL_logs_parti=/dev/block/bootdevice/by-name/logs +elif [ -e /dev/block/bootdevice/by-name/logfs ] ; then + BL_logs_parti=/dev/block/bootdevice/by-name/logfs +else + BL_logs_parti= +fi + +if [ $BL_logs_parti ] +then + cat $BL_logs_parti > /data/vendor/dontpanic/BL_logs + chown root:log /data/vendor/dontpanic/BL_logs + chmod 0640 /data/vendor/dontpanic/BL_logs +fi diff --git a/rootdir/bin/apanic_save.sh b/rootdir/bin/apanic_save.sh new file mode 100644 index 0000000..8b5c8ad --- /dev/null +++ b/rootdir/bin/apanic_save.sh @@ -0,0 +1,12 @@ +#!/vendor/bin/sh +# +# Copyright (c) 2016, Motorola Mobility LLC, All rights reserved. +# +# The purpose of this script is to get panic dump from pstore fs, and then +# save to emmc, and then reboot device. +# + +export PATH=/vendor/bin:/system/bin:$PATH + +# write log from pstore to "kpan" partition +kpreadwrite w diff --git a/rootdir/bin/hardware_revisions.sh b/rootdir/bin/hardware_revisions.sh new file mode 100644 index 0000000..f17947a --- /dev/null +++ b/rootdir/bin/hardware_revisions.sh @@ -0,0 +1,329 @@ +#!/vendor/bin/sh +# +# Copyright (c) 2013-2016, Motorola LLC All rights reserved. +# +# The purpose of this script is to compile information about the hardware +# versions of various devices on each unit. This is useful when searching +# through reported issues for correlations with certain hardware revisions. +# The information is collected from various locations in proc and sysfs (some +# of which are product-specific) and compiled into small, single-line text +# files in the userdata partition, one for each type of device. The format of +# these lines are as follows: +# +# MOTHREV-vX +# hw_name=XXXXX +# vendor_id=XXXXX +# hw_rev=XXXXX +# date=XXXXX +# lot_code=XXXXX +# fw_rev=XXXXX +# size=XXXXMB +# (components may also add additional fields to the ones above) +# +# The extact format of each field will be device-specific, but should be +# consistent across a particular hardware platform. Note that each revision +# data file is rewritten every time this script is called. This ensures that +# any future format changes to the revision files are picked up. +# +# While the method used to read the information should be consistent on a given +# platform, the specific path to a device's information may vary between +# products. The hardware_revisions.conf file provides a way to adjust those +# paths from the default. +# + +export PATH=/vendor/bin:$PATH + +# Output destination and permissions +OUT_PATH=/data/vendor/hardware_revisions +OUT_USR=system +OUT_GRP=system +OUT_PERM=0644 +OUT_PATH_PERM=0755 + +# Default paths to hardware information +PATH_RAM=/sys/ram +PATH_NVM=/sys/block/mmcblk0/device +PATH_STORAGE=/sys/storage +PATH_SDCARD=/sys/block/mmcblk1/device +PATH_TOUCH_CLASS="/sys/class/touchscreen/"`cd /sys/class/touchscreen && ls */ic_ver | sed 's/ic_ver//g'` +PATH_TOUCH="/sys/bus/i2c/drivers/"`cd /sys/bus/i2c/drivers && ls */?-*/ic_ver | sed 's/ic_ver//g'` +PATH_TOUCH_SPI="/sys/bus/spi/drivers/"`cd /sys/bus/spi/drivers && ls */*.?/ic_ver | sed 's/ic_ver//g'` +PATH_DISPLAY=/sys/class/graphics/fb0 +PATH_DISPLAY_DRM=/sys/class/drm/card0-DSI-1 +PATH_PMIC=/sys/hardware_revisions/pmic + +# Product-specific overrides +[ -e /vendor/etc/hardware_revisions.conf ] && . /vendor/etc/hardware_revisions.conf + +# +# Clear out all revision data in this directory. If in the future we decide +# to remove a component, we want to make sure any old files are not present. +rm /data/vendor/hardware_revisions/* + +# +# Append one piece of revision data to a given file. If a value is blank, +# then nothing will be written. +# +# $1 - tag +# $2 - value +# $3 - file to write +write_one_revision_data() +{ + if [ -n "${2}" ]; then + VALUE="${2}" + echo "${1}=${VALUE}" >> ${3} + fi +} + +# +# Generate the common data contained for +# all hardware peripherals +# +# $1 - file to write to +# $2 - name +# $3 - vendor ID +# $4 - hardware revision +# $5 - date +# $6 - lot code +# $7 - firmware revision +create_common_revision_data() +{ + FILE="${1}" + echo "MOTHREV-v2" > ${FILE} + + write_one_revision_data "hw_name" "${2}" ${FILE} + write_one_revision_data "vendor_id" "${3}" ${FILE} + write_one_revision_data "hw_rev" "${4}" ${FILE} + write_one_revision_data "date" "${5}" ${FILE} + write_one_revision_data "lot_code" "${6}" ${FILE} + write_one_revision_data "fw_rev" "${7}" ${FILE} + +} + +# +# Applies the appropriate file permissions to the +# hardware revision data file. +# +# $1 - file to write to +apply_revision_data_perms() +{ + chown ${OUT_USR}.${OUT_GRP} "${1}" + chmod ${OUT_PERM} "${1}" +} + +mkdir -p ${OUT_PATH} +chown ${OUT_USR}.${OUT_GRP} ${OUT_PATH} +chmod ${OUT_PATH_PERM} ${OUT_PATH} + + +# +# Compile ram +# +FILE="${OUT_PATH}/ram" +HNAME= +VEND= +HREV= +DATE= +FREV= +LOT_CODE= +INFO= +SIZE= +if [ -d "${PATH_RAM}" ] ; then + HNAME=`cat ${PATH_RAM}/type` + VEND=`cat ${PATH_RAM}/info` + VEND="${VEND%%:*:*}" + INFO="$(cat ${PATH_RAM}/mr5),$(cat ${PATH_RAM}/mr6),$(cat ${PATH_RAM}/mr7),\ +$(cat ${PATH_RAM}/mr8)" + SIZE=`cat ${PATH_RAM}/size` +fi +create_common_revision_data "${FILE}" "${HNAME}" "${VEND}" "" "" "" "" +write_one_revision_data "config_info" "${INFO}" "${FILE}" +write_one_revision_data "size" "${SIZE}" "${FILE}" +apply_revision_data_perms "${FILE}" + + +# +# Compile nvm +# +FILE="${OUT_PATH}/nvm" +HNAME= +VEND= +HREV= +DATE= +FREV= +LOT_CODE= +SIZE= +if [ -d "${PATH_NVM}" ] ; then + HNAME=`cat ${PATH_NVM}/type` + if [ -d "${PATH_STORAGE}" ] ; then + VEND=`cat ${PATH_STORAGE}/vendor` + SIZE=$((1024 * `cat ${PATH_STORAGE}/size | sed 's/[^0-9]//g'`)) + else + VEND=`cat ${PATH_NVM}/manfid` + SIZE=$((1024 * `getprop ro.boot.storage | sed 's/[^0-9]//g'`)) + fi + HREV=`cat ${PATH_NVM}/name` + DATE=`cat ${PATH_NVM}/date` + if [ -e ${PATH_NVM}/device_version -a -e ${PATH_NVM}/firmware_version ] ; then + FREV="$(cat ${PATH_NVM}/device_version),$(cat ${PATH_NVM}/firmware_version)" + else + FREV="$(cat ${PATH_NVM}/hwrev),$(cat ${PATH_NVM}/fwrev)" + fi + LOT_CODE="$(cat ${PATH_NVM}/csd)" +else + if [ -d "${PATH_STORAGE}" ] ; then + HNAME=`cat ${PATH_STORAGE}/type` + VEND=`cat ${PATH_STORAGE}/vendor` + HREV=`cat ${PATH_STORAGE}/model` + FREV=`cat ${PATH_STORAGE}/fw` + SIZE=$((1024 * `cat ${PATH_STORAGE}/size | sed 's/[^0-9]//g'`)) + fi +fi +create_common_revision_data "${FILE}" "${HNAME}" "${VEND}" "${HREV}" "${DATE}" "${LOT_CODE}" "${FREV}" +write_one_revision_data "size" "${SIZE}" "${FILE}" +apply_revision_data_perms "${FILE}" + + +# +# Compile ap +# +FILE="${OUT_PATH}/ap" +HNAME= +VEND= +HREV= +DATE= +FREV= +LOT_CODE= +if [ -e "/proc/cpuinfo" ]; then + PREVIFS="$IFS" + IFS=" +" + for CPU in `cat /proc/cpuinfo` ; do + KEY="${CPU%:*}" + VAL="${CPU#*: }" + case "${KEY}" in + Processor*) HNAME="${VAL}" ;; + *implementer*) VEND="${VAL}" ;; + *variant*) HREV="${VAL}" ;; + *part*) HREV="${HREV},${VAL}" ;; + *revision*) HREV="${HREV},${VAL}" ;; + esac + done + IFS="$PREVIFS" +fi +create_common_revision_data "${FILE}" "${HNAME}" "${VEND}" "${HREV}" "" "" "" +apply_revision_data_perms "${FILE}" + + +# +# copy pmic data +# +if [ -e "/sys/hardware_revisions/pmic" ]; then + cat /sys/hardware_revisions/pmic > ${OUT_PATH}/pmic +else + create_common_revision_data "${OUT_PATH}/pmic" "" "" "" "" "" "" +fi +apply_revision_data_perms "${OUT_PATH}/pmic" + + +# +# copy display data +# PATH_DISPLAY_DRM is the sys file path name for DRM display driver +# PATH_DISPLAY is the path name for the old FB driver +# +FILE="${OUT_PATH}/display" +HNAME= +VEND= +HREV= +if [ -e ${PATH_DISPLAY_DRM}/panelName ] ; then + HNAME=`cat ${PATH_DISPLAY_DRM}/panelName` + VEND=`cat ${PATH_DISPLAY_DRM}/panelSupplier` + HREV=`cat ${PATH_DISPLAY_DRM}/panelVer` +else + HNAME=`cat ${PATH_DISPLAY}/panel_name` + VEND=`cat ${PATH_DISPLAY}/panel_supplier` + HREV=`cat ${PATH_DISPLAY}/panel_ver` +fi +create_common_revision_data "${FILE}" "${HNAME}" "${VEND}" "${HREV}" "" "" "" +apply_revision_data_perms "${FILE}" + + +# +# Compile touchscreen +# +FILE="${OUT_PATH}/touchscreen" +HNAME= +VEND= +HREV= +DATE= +FREV= +LOT_CODE= + +# If there is the touchclass path, then access the nodes under the path to get the touch related +# information, otherwise access the path originally defined by the script. +if [ -e "${PATH_TOUCH_CLASS}/vendor" ]; then + HNAME=`cat ${PATH_TOUCH_CLASS}/vendor` + ICVER=`cat -e ${PATH_TOUCH_CLASS}/ic_ver` + if [ "$HNAME" ]; then + VEND="${ICVER##*'Product ID: '}" + VEND="${VEND%%\$*}" + FREV="${ICVER##*'Build ID: '}" + FREV="${FREV%%\$*}" + LOT_CODE="${ICVER##*'Config ID: '}" + LOT_CODE="${LOT_CODE%%\$*}" + fi +elif [ -e "${PATH_TOUCH_SPI}/name" ]; then + HNAME=`cat ${PATH_TOUCH_SPI}/name` + ICVER=`cat -e ${PATH_TOUCH_SPI}/ic_ver` + case "$HNAME" in + focaltech*) + VEND="${ICVER##*'Product ID: '}" + VEND="${VEND%%\$*}" + FREV="${ICVER##*'Build ID: '}" + FREV="${FREV%%\$*}" + ;; + esac +else + if [ -e "${PATH_TOUCH}/name" ]; then + HNAME=`cat ${PATH_TOUCH}/name` + ICVER=`cat -e ${PATH_TOUCH}/ic_ver` + case "${HNAME}" in + melfas*) + VEND="Melfas" + HREV="${ICVER##*'HW Revision:'}" + HREV="${HREV%%\$*}" + FREV="${ICVER##*'Core FW ver:'}" + FREV="${FREV%%\$*}" + ;; + cyttsp*) + VEND="${ICVER##*'Custom ID:'}" + VEND="${VEND%%\$*}" + VEND="Cypress,${VEND}" + HREV="${ICVER##*'TTSP Version:'}" + HREV="${HREV%%\$*}" + FREV="${ICVER##*'Application Version:'}" + FREV="${FREV%%\$*}" + ;; + atmxt*) + VEND="Atmel" + HREV="${ICVER##*'Family ID:'}" + HREV1="${ICVER##*'Variant ID:'}" + HREV="${HREV%%\$*},${HREV1%%\$*}" + FREV="${ICVER##*'Version:'}" + FREV1="${ICVER##*'Build:'}" + FREV="${FREV%%\$*},${FREV1%%\$*}" + ;; + synaptics*) + VEND="${ICVER##*'Product ID: '}" + VEND="${VEND%%\$*}" + FREV="${ICVER##*'Build ID: '}" + FREV="${FREV%%\$*}" + LOT_CODE="${ICVER##*'Config ID: '}" + LOT_CODE="${LOT_CODE%%\$*}" + ;; + esac + fi +fi +create_common_revision_data "${FILE}" "${HNAME}" "${VEND}" "${HREV}" "${DATE}" "${LOT_CODE}" "${FREV}" +apply_revision_data_perms "${FILE}" + diff --git a/rootdir/bin/init.class_main.sh b/rootdir/bin/init.class_main.sh new file mode 100644 index 0000000..35e72ef --- /dev/null +++ b/rootdir/bin/init.class_main.sh @@ -0,0 +1,153 @@ +#! /vendor/bin/sh + +# Copyright (c) 2013-2014, 2019 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. +# + +# +# start ril-daemon only for targets on which radio is present +# +baseband=`getprop ro.baseband` +sgltecsfb=`getprop persist.vendor.radio.sglte_csfb` +datamode=`getprop persist.vendor.data.mode` +qcrild_status=true + +case "$baseband" in + "apq" | "sda" | "qcs" ) + setprop ro.vendor.radio.noril yes + stop ril-daemon + stop vendor.ril-daemon + stop vendor.qcrild +esac + +case "$baseband" in + "msm" | "csfb" | "svlte2a" | "mdm" | "mdm2" | "sglte" | "sglte2" | "dsda2" | "unknown" | "dsda3" | "sdm" | "sdx" | "sm6") + + # For older modem packages launch ril-daemon. + if [ -f /vendor/firmware_mnt/verinfo/ver_info.txt ]; then + modem=`cat /vendor/firmware_mnt/verinfo/ver_info.txt | + sed -n 's/^[^:]*modem[^:]*:[[:blank:]]*//p' | + sed 's/.*MPSS.\(.*\)/\1/g' | cut -d \. -f 1` + if [ "$modem" = "AT" ]; then + version=`cat /vendor/firmware_mnt/verinfo/ver_info.txt | + sed -n 's/^[^:]*modem[^:]*:[[:blank:]]*//p' | + sed 's/.*AT.\(.*\)/\1/g' | cut -d \- -f 1` + if [ ! -z $version ]; then + if [ "$version" \< "3.1" ]; then + qcrild_status=false + fi + fi + elif [ "$modem" = "TA" ]; then + version=`cat /vendor/firmware_mnt/verinfo/ver_info.txt | + sed -n 's/^[^:]*modem[^:]*:[[:blank:]]*//p' | + sed 's/.*TA.\(.*\)/\1/g' | cut -d \- -f 1` + if [ ! -z $version ]; then + if [ "$version" \< "3.0" ]; then + qcrild_status=false + fi + fi + elif [ "$modem" = "JO" ]; then + version=`cat /vendor/firmware_mnt/verinfo/ver_info.txt | + sed -n 's/^[^:]*modem[^:]*:[[:blank:]]*//p' | + sed 's/.*JO.\(.*\)/\1/g' | cut -d \- -f 1` + if [ ! -z $version ]; then + if [ "$version" \< "3.2" ]; then + qcrild_status=false + fi + fi + elif [ "$modem" = "TH" ]; then + qcrild_status=false + fi + fi + + if [ "$qcrild_status" = "true" ]; then + # Make sure both rild, qcrild are not running at same time. + # This is possible with vanilla aosp system image. + stop ril-daemon + stop vendor.ril-daemon + + start vendor.qcrild + else + start ril-daemon + start vendor.ril-daemon + fi + + case "$baseband" in + "svlte2a" | "csfb") + start qmiproxy + ;; + "sglte" | "sglte2" ) + if [ "x$sgltecsfb" != "xtrue" ]; then + start qmiproxy + else + setprop persist.vendor.radio.voice.modem.index 0 + fi + ;; + esac + + multisim=`getprop persist.radio.multisim.config` + + if [ "$multisim" = "dsds" ] || [ "$multisim" = "dsda" ]; then + if [ "$qcrild_status" = "true" ]; then + start vendor.qcrild2 + else + start vendor.ril-daemon2 + fi + elif [ "$multisim" = "tsts" ]; then + if [ "$qcrild_status" = "true" ]; then + start vendor.qcrild2 + start vendor.qcrild3 + else + start vendor.ril-daemon2 + start vendor.ril-daemon3 + fi + fi + + case "$datamode" in + "tethered") + start vendor.dataqti + start vendor.dataadpl + ;; + "concurrent") + start vendor.dataqti + start vendor.dataadpl + ;; + *) + ;; + esac +esac + +# +# Allow persistent faking of bms +# User needs to set fake bms charge in persist.vendor.bms.fake_batt_capacity +# +fake_batt_capacity=`getprop persist.vendor.bms.fake_batt_capacity` +case "$fake_batt_capacity" in + "") ;; #Do nothing here + * ) + echo "$fake_batt_capacity" > /sys/class/power_supply/battery/capacity + ;; +esac diff --git a/rootdir/bin/init.crda.sh b/rootdir/bin/init.crda.sh new file mode 100644 index 0000000..4264789 --- /dev/null +++ b/rootdir/bin/init.crda.sh @@ -0,0 +1,35 @@ +#! /vendor/bin/sh + +# Copyright (c) 2012, 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. +# + +country=`getprop wlan.crda.country` +# crda takes input in COUNTRY environment variable +if [ $country != "" ] +then +COUNTRY="$country" /system/bin/crda +fi diff --git a/rootdir/bin/init.gbmods.sh b/rootdir/bin/init.gbmods.sh new file mode 100644 index 0000000..c692e13 --- /dev/null +++ b/rootdir/bin/init.gbmods.sh @@ -0,0 +1,30 @@ +#!/vendor/bin/sh + +debug=$(getprop ro.boot.gbdebug 2> /dev/null) +bootmode=$(getprop ro.bootmode 2> /dev/null) + +# If androidboot.gbdebug is set on command line, skip inserting +# the pre-installed modules. +if [ "$debug" == "1" ]; then + return 0 +fi + +insmod /vendor/lib/modules/greybus.ko + +# Only support PTP and BATTERY in charge-only mode +if [ "$bootmode" == "charger" ]; then + insmod /vendor/lib/modules/gb-mods.ko + insmod /vendor/lib/modules/gb-battery.ko + insmod /vendor/lib/modules/gb-ptp.ko + + return 0 +fi + +gbmods="/vendor/lib/modules/gb-*" +for mod in $gbmods +do + insmod $mod +done + +insmod /vendor/lib/modules/v4l2-hal.ko +start vendor.mods_camd diff --git a/rootdir/bin/init.mdm.sh b/rootdir/bin/init.mdm.sh new file mode 100644 index 0000000..3ed7ed5 --- /dev/null +++ b/rootdir/bin/init.mdm.sh @@ -0,0 +1,34 @@ +#! /vendor/bin/sh + +# Copyright (c) 2013, 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 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. +# + +baseband=`getprop ro.baseband` +if [ "$baseband" = "mdm" ] || [ "$baseband" = "mdm2" ]; then + start vendor.mdm_helper +fi + diff --git a/rootdir/bin/init.mmi.block_perm.sh b/rootdir/bin/init.mmi.block_perm.sh new file mode 100644 index 0000000..3232bb1 --- /dev/null +++ b/rootdir/bin/init.mmi.block_perm.sh @@ -0,0 +1,36 @@ +#!/vendor/bin/sh + +block_by_name=/dev/block/bootdevice/by-name +utags=${block_by_name}/utags +utags_backup=${block_by_name}/utagsBackup + +# Set correct permissions for UTAGS +/vendor/bin/chown -L root:system $utags +/vendor/bin/chown -L root:system $utags_backup +/vendor/bin/chmod -L 0660 $utags +/vendor/bin/chmod -L 0660 $utags_backup + +# HOB/DHOB +hob=${block_by_name}/hob +dhob=${block_by_name}/dhob +/vendor/bin/chown -L radio:radio $hob +/vendor/bin/chown -L radio:radio $dhob +/vendor/bin/chmod -L 0660 $hob +/vendor/bin/chmod -L 0660 $dhob + +# CLOGO +clogo=${block_by_name}/clogo +/vendor/bin/chown -L root:vendor_tcmd $clogo +/vendor/bin/chmod -L 0660 $clogo + +#CID +cid=${block_by_name}/cid +/vendor/bin/chown -L root:vendor_tcmd $cid +/vendor/bin/chmod -L 0660 $cid + +#BL logs +logs=${block_by_name}/logs +if [ -f $logs ]; then +/vendor/bin/chown -L root:system $logs +/vendor/bin/chmod -L 0640 $logs +fi diff --git a/rootdir/bin/init.mmi.boot.sh b/rootdir/bin/init.mmi.boot.sh new file mode 100644 index 0000000..0e11777 --- /dev/null +++ b/rootdir/bin/init.mmi.boot.sh @@ -0,0 +1,151 @@ +#!/vendor/bin/sh + +PATH=/sbin:/vendor/sbin:/vendor/bin:/vendor/xbin +export PATH + +scriptname=${0##*/} + +notice() +{ + echo "$*" + echo "$scriptname: $*" > /dev/kmsg +} + +# We take this from cpuinfo because hex "letters" are lowercase there +set -A cinfo `cat /proc/cpuinfo | sed -n "/Revision/p"` +hw=${cinfo[2]#?} + +# Now "cook" the value so it can be matched against devtree names +m2=${hw%?} +minor2=${hw#$m2} +m1=${m2%?} +minor1=${m2#$m1} +if [ "$minor2" == "0" ]; then + minor2="" + if [ "$minor1" == "0" ]; then + minor1="" + fi +fi +setprop ro.vendor.hw.revision p${hw%??}$minor1$minor2 +unset hw cinfo m1 m2 minor1 minor2 + +# reload UTAGS +utag_status=$(cat /proc/config/reload) +if [ "$utag_status" == "2" ]; then + notice "Utags are not ready, reloading" + echo 1 > /proc/config/reload + utag_status=$(cat /proc/config/reload) + [ "$utag_status" != "0" ] && notice "Utags failed to reload" +fi + +# Export these for factory validation purposes +iccid=$(cat /proc/config/iccid/ascii 2>/dev/null) +if [ ! -z "$iccid" ]; then + setprop ro.vendor.mot.iccid $iccid +fi +unset iccid +cust_md5=$(cat /proc/config/cust_md5/ascii 2>/dev/null) +if [ ! -z "$cust_md5" ]; then + setprop ro.vendor.mot.cust_md5 $cust_md5 +fi +unset cust_md5 + +# Get FTI data and catch old units with incorrect/missing UTAG_FTI +pds_fti=/mnt/vendor/persist/factory/fti +if [ -r $pds_fti ]; then + set -A fti $(od -A n -t x1 $pds_fti 2>/dev/null | tr '[A-F]' '[a-f]') +else + notice "Can not read FTI data in persist" +fi + +# If UTAG_FTI is readable, compare checksums +# and if they mismatch, assume PDS is valid and overwrite UTAG +utag_fti=/proc/config/fti +if [ -r $utag_fti/ascii ]; then + set -A fti_utag $(cat ${utag_fti}/raw | sed 's/../& /g' | tr '[A-F]' '[a-f]') + # Byte 128 is total cksum, if nothing there, PDS data is invalid/missing + if [ ! -z "${fti[127]}" ]; then + # Make sure fti in UTAG is the same as in persist. Checksum comparison + if [ "${fti[126]}" != "${fti_utag[126]}" -o "${fti[127]}" != "${fti_utag[127]}" ]; then + notice "Copying FTI data from persist" + cat $pds_fti > ${utag_fti}/raw + fi + else + # If PDS data is invalid, take UTAG and hope it is correct + notice "Will use FTI from UTAG" + set -A fti $(od -A n -t x1 ${utag_fti}/ascii 2>/dev/null) + fi +else + notice "Missing FTI UTAG; copying from persist" + echo fti > /proc/config/all/new + cat $pds_fti > ${utag_fti}/raw +fi + +# Read HW version from FTI data +hw_v1="\x${fti[35]}" +hw_v2="\x${fti[36]}" +hw_v3="\x${fti[37]}" +if [ "$hw_v3" == "\x30" ]; then + hw_v3="" +fi +hw_v4="\x${fti[38]}" +if [ "$hw_v4" == "\x30" ]; then + hw_v4="" +fi +setprop ro.vendor.hw.boardversion $(printf "$hw_v1$hw_v2$hw_v3$hw_v4") + +# Now we have set fti var either from PDS or UTAG +# Get Last Test Station stamp from FTI +# and convert to user-friendly date, US format +# Real offsets for year/month/day are 63/64/65 +# If the month/date look reasonable, data is probably OK. +mdate="Unknown" +y=0x${fti[63]} +m=0x${fti[64]} +d=0x${fti[65]} +let year=$y month=$m day=$d +# Invalid data will often have bogus month/date values +if [ $month -le 12 -a $day -le 31 -a $year -ge 12 ]; then + mdate=$month/$day/20$year +else + notice "Corrupt FTI data" +fi +setprop ro.vendor.manufacturedate $mdate +unset fti y m d year month day utag_fti pds_fti fti_utag mdate + +t=$(getprop ro.build.tags) +if [[ "$t" != *release* ]]; then + for p in $(cat /proc/cmdline); do + if [ ${p%%:*} = "@" ]; then + v=${p#@:}; a=${v%=*}; b=${v#*=} + ${a%%:*} ${a##*:} $b + fi + done +fi +unset p v a b t + +# Cleanup stale/incorrect programmed model value +# Real values will never contain substrings matching "internal" device name +product=$(getprop ro.vendor.hw.device) +model=$(cat /proc/config/model/ascii 2>/dev/null) +if [ $? -eq 0 ]; then + if [ "${model#*_}" == "$product" -o "${model%_*}" == "$product" ]; then + notice "Clearing stale model value" + echo "" > /proc/config/model/raw + fi +fi +unset model product + +# set ro.vendor.bootreason, which be used to indicate kpanic/wdt boot status. +# When ro.boot.last_powerup_reason is set, it denotes this is a 2nd reboot +# after kpanic/wdt, we set ro.bootreason as coldboot to copy logs. +# Otherwise, we would set ro.bootreason the same as ro.boot.bootreason. +# ro.boot.bootreason is restricted as of android p, so get it another way: +bootreason_kvp=$(cat /proc/bootinfo | grep "Last boot reason") +last_power_up=$(getprop ro.boot.last_powerup_reason) +if [ ! -z "$last_power_up" ] +then + setprop ro.vendor.bootreason "coldboot" +else + setprop ro.vendor.bootreason ${bootreason_kvp##* } +fi diff --git a/rootdir/bin/init.mmi.laser.sh b/rootdir/bin/init.mmi.laser.sh new file mode 100644 index 0000000..144d5a3 --- /dev/null +++ b/rootdir/bin/init.mmi.laser.sh @@ -0,0 +1,95 @@ +#!/vendor/bin/sh +scriptname=${0##*/} +dbg_on=1 +debug() +{ + [ $dbg_on ] && echo "Debug: $*" +} + +notice() +{ + echo "$*" + echo "$scriptname: $*" > /dev/kmsg +} + +error_and_leave() +{ + local err_msg + local err_code=$1 + case $err_code in + 1) err_msg="Error: No response";; + 2) err_msg="Error: Skip to overwrite xtalk and offset data in factory mode";; + 3) err_msg="Error: Calibration data file $2 does not exist";; + 4) err_msg="Error: Calibration sysfs path $2 does not show up";; + esac + notice "$err_msg" + exit $err_code +} + +# Change laser sysfs file ownership +laser_class_path=/sys/devices/virtual/laser +laser_product_string=$(ls $laser_class_path) +laser_product_path=$laser_class_path/$laser_product_string +for laser_file in $laser_product_path/*; do + if [ -f "$laser_file" ]; then + chown root:system $laser_file + fi +done + +if [ ! -d $laser_product_path ]; then + error_and_leave 4 "'$laser_product_path'" +fi + +# Change laser input sysfs file ownership +laser_input_root=/sys/devices/virtual/input +laser_input_list=$(ls $laser_input_root) +for laser_input_dir in $laser_input_list; do + if [ -f "$laser_input_root/$laser_input_dir/calibration_data" ]; then + laser_calib_file=$laser_input_root/$laser_input_dir/calibration_data + chown root:system $laser_calib_file + fi + if [ -f "$laser_input_root/$laser_input_dir/xtalk" ]; then + laser_xtalk_file=$laser_input_root/$laser_input_dir/xtalk + chown root:system $laser_xtalk_file + fi + if [ -f "$laser_input_root/$laser_input_dir/offset" ]; then + laser_offset_file=$laser_input_root/$laser_input_dir/offset + chown root:system $laser_offset_file + fi +done + +if [ -z "$laser_calib_file" ]; then + laser_calib_file=$laser_product_path/calibration_data +fi +if [ -z "$laser_xtalk_file" ]; then + laser_xtalk_file=$laser_product_path/xtalk +fi +if [ -z "$laser_offset_file" ]; then + laser_offset_file=$laser_product_path/offset +fi + +# Load calibration data +calib_data_file=/mnt/vendor/persist/camera/focus/cal_data +if [ -f $calib_data_file ]; then + chown root:vendor_tcmd $calib_data_file + chmod 660 $calib_data_file + if [ -z "$laser_calib_file" ]; then + error_and_leave 4 "'$laser_calib_file'" + else + cat $calib_data_file > $laser_calib_file + notice "laser calibration data updating complete" + fi +else + notice "laser calib_data_file '$calib_data_file' does not exist" +fi + +bootmode=$(getprop ro.bootmode 2> /dev/null) +if [ $bootmode != "mot-factory" ]; then + # Enable smudge mode + echo 1 > $laser_product_path/smudge_correction_mode + notice "laser smudge mode enabled" +else + # Disable smudge mode + echo 0 > $laser_product_path/smudge_correction_mode + notice "factory-mode boot, disable laser smudge mode" +fi diff --git a/rootdir/bin/init.mmi.mdlog-getlogs.sh b/rootdir/bin/init.mmi.mdlog-getlogs.sh new file mode 100644 index 0000000..36c1b02 --- /dev/null +++ b/rootdir/bin/init.mmi.mdlog-getlogs.sh @@ -0,0 +1,37 @@ +#!/vendor/bin/sh + +getlogs_opts="/data/vendor/bug2go/getlogs.opts" +mdlog_user_opts="/data/vendor/diag_mdlog/user3.opts" +qdb_file="/firmware/image/qdsp6m.qdb" +qdb_file_alt="/vendor/firmware_mnt/image/qdsp6m.qdb" + +arg_output="/data/vendor/bug2go/modem" +log_file=$arg_output/"getlogs.log" +mkdir $arg_output + +# The output arg is fixed, +# use the cutomized opts from file if it exists +if [ -f $getlogs_opts ]; then + args=`cat $getlogs_opts` + # allow opts_file to be used only once + mv -f $getlogs_opts $arg_output/ +else + # default value + args="-b 209715200" +fi + +diag_mdlog-getlogs -o $arg_output $args &> $log_file +if [ -f $mdlog_user_opts ]; then + cp $mdlog_user_opts $arg_output/ +fi + +# copy qdsp6m.qdb +if [ -f $qdb_file ]; then + cp $qdb_file $arg_output/ +else + # copy qdsp6m.qdb from alternate folder + if [ -f $qdb_file_alt ]; then + cp $qdb_file_alt $arg_output/ + fi +fi + diff --git a/rootdir/bin/init.mmi.modules.sh b/rootdir/bin/init.mmi.modules.sh new file mode 100644 index 0000000..b8dd6e4 --- /dev/null +++ b/rootdir/bin/init.mmi.modules.sh @@ -0,0 +1,9 @@ +#!/vendor/bin/sh + +# All modules that depend on conditions or need extra parameters +# should go here. + +buildtype=$(getprop ro.build.type) +if [ $buildtype = "userdebug" ]; then + insmod /vendor/lib/modules/watchdogtest.ko +fi diff --git a/rootdir/bin/init.mmi.shutdown.sh b/rootdir/bin/init.mmi.shutdown.sh new file mode 100644 index 0000000..4071545 --- /dev/null +++ b/rootdir/bin/init.mmi.shutdown.sh @@ -0,0 +1,59 @@ +#!/vendor/bin/sh + +PATH=/sbin:/vendor/sbin:/vendor/bin:/vendor/xbin +export PATH + +scriptname=${0##*/} + +debug() +{ + echo "$*" +} + +notice() +{ + echo "$*" + echo "$scriptname: $*" > /dev/kmsg +} + +get_history_value() +{ + local __result=$1 + local history_count=0 + local value="" + local IFS=',' + + shift 1 + for arg in ${@}; do + value=$value",$arg" + history_count=$(($history_count + 1)) + if [ $history_count -eq 3 ]; then + break + fi + done + eval $__result="$value" + debug "value:$value history_count:$history_count" +} + +set_reboot_bootseq_history() +{ + #get current boot sequence + if [ ! -f /proc/bootinfo ]; then + notice "Error:/proc/bootinfo is not ready" + return + fi + boot_seq_line=`grep BOOT_SEQ /proc/bootinfo | sed 's/ //g'` + boot_seq=${boot_seq_line##*:} + notice "BOOT_SEQ is $boot_seq" + shutdown_time=`date +%s` + + #get previous value of bootseq history + bootseq_history=`getprop persist.vendor.reboot.bootseq.history` + notice "booseq_history is $bootseq_history" + get_history_value valid_history_value $bootseq_history + setprop persist.vendor.reboot.bootseq.history "$boot_seq.$shutdown_time$valid_history_value" + new_bootseq_history=`getprop persist.vendor.reboot.bootseq.history` + notice "set persist.vendor.reboot.bootseq.history $new_bootseq_history" +} + +set_reboot_bootseq_history diff --git a/rootdir/bin/init.mmi.touch.sh b/rootdir/bin/init.mmi.touch.sh new file mode 100644 index 0000000..142f96f --- /dev/null +++ b/rootdir/bin/init.mmi.touch.sh @@ -0,0 +1,558 @@ +#!/vendor/bin/sh + +PATH=/sbin:/vendor/sbin:/vendor/bin:/vendor/xbin +export PATH + +while getopts cds op; +do + case $op in + c) cal_on=1;; + d) dbg_on=1;; + s) dump_statistics=1;; + esac +done +shift $(($OPTIND-1)) + +# Globals +scriptname=${0##*/} +touch_class_path=/sys/class/touchscreen +touch_status_prop= +touch_update_prop= +touch_calibration_done_version=persist.vendor.touch.calibration +touch_vendor= +touch_path= +panel_path=/sys/devices/virtual/graphics/fb0 +oem_panel_script=/vendor/bin/init.oem.panel.sh +dlkm_path=/vendor/lib/modules +device_property=ro.vendor.hw.device +hwrev_property=ro.vendor.hw.revision +firmware_path=/vendor/firmware +factory_property=ro.vendor.build.motfactory +bootmode_property=ro.bootmode +let dec_cfg_id_boot=0 +let dec_cfg_id_latest=0 +typeset -l product_id +panel_ver= +supplier= +property= +config_id= +build_id= +hwrev_id= +str_cfg_id_new= +str_cfg_id_boot= +str_cfg_id_latest= +build_id_new= + +debug() +{ + [ $dbg_on ] && echo "Debug: $*" +} + +notice() +{ + echo "$*" + echo "$scriptname: $*" > /dev/kmsg +} + +sanity_check() +{ + read_touch_property flashprog || return 1 + [[ ( -z "$property" ) || ( "$property" == "1" ) ]] && return 2 + read_touch_property productinfo || return 1 + [[ ( -z "$property" ) || ( "$property" == "0" ) ]] && return 2 + read_touch_property buildid || return 1 + config_id=${property#*-} + [[ ( -z "$config_id" ) || ( "$config_id" == "0" ) ]] && return 2 + build_id=${property%-*} + [[ ( -z "$build_id" ) || ( "$build_id" == "0" ) ]] && return 2 + return 0 +} + +error_msg() +{ + local err_msg + local err_code=$1 + case $err_code in + 1) err_msg="Error: No response from touch IC";; + 2) err_msg="Error: Cannot read property $2";; + 3) err_msg="Error: No matching firmware file found";; + 4) err_msg="Error: Touch IC is in bootloader mode";; + 5) err_msg="Error: Touch provides no reflash interface";; + 6) err_msg="Error: Touch driver is not running";; + 7) err_msg="Warning: Touch firmware is not the latest";; + 8) err_msg="Info: Touch class does not exist";; + 9) err_msg="Error: Touch IC is not ready to flash";; + esac + notice "$err_msg" +} + +error_and_leave() +{ + local err_code=$1 + local touch_status="unknown" + error_msg $err_code + case $err_code in + 1|4) touch_status="dead";; + 5|6|8) touch_status="absent";; + esac + + # perform sanity check and declare touch ready if error is not fatal + if [ "$touch_status" == "unknown" ]; then + sanity_check + case "$?" in + 0) touch_status="ready";; + 2) touch_status="dead";; + 1) touch_status="absent";; + esac + fi + + # perform recovery if touch is declared dead + if [ "$touch_status" == "dead" ]; then + notice "Touch needs to go through recovery!!!" + reboot_cnt=$(getprop $touch_status_prop 2>/dev/null) + [ -z "$reboot_cnt" ] && reboot_cnt=0 + debug "current reboot counter [$reboot_cnt]" + fi + + setprop $touch_status_prop $touch_status + notice "property [$touch_status_prop] set to [`getprop $touch_status_prop`]" + + if [ "$touch_status" == "dead" ]; then + notice "Touch is not responding; no further action!!!" + #if [ $((reboot_cnt)) -lt 2 ]; then + # notice "Touch is not working; rebooting..." + # debug "sleep 3s to allow touch-dead-sh service to run" + # sleep 3 + # [ -z "$dbg_on" ] && setprop sys.powerctl reboot + #else + # notice "Although touch is not working, no more reboots" + #fi + fi + + exit $err_code +} + +prepend() +{ + local list="" + local prefix=$1 + shift + for name in $*; do + list="$list$prefix/$name " + done + echo $list +} + +dump_statistics() +{ + debug "dumping touch statistics" + cat $touch_path/ic_ver + [ -f $touch_path/stats ] && cat $touch_path/stats + return 0 +} + +wait_for_poweron() +{ + local wait_nomore + local readiness + local count + debug "wait until driver reports ..." + wait_nomore=60 + count=0 + while true; do + readiness=$(cat $touch_path/poweron) + if [ "$readiness" == "1" ]; then + debug "ready to flash!!!" + break; + fi + count=$((count+1)) + [ $count -eq $wait_nomore ] && break + sleep 1 + debug "not ready; keep waiting..." + done + if [ $count -eq $wait_nomore ]; then + error_msg 9 + return 1 + fi + return 0 +} + +setup_permissions() +{ + local bootmode=$(getprop $bootmode_property 2> /dev/null) + local selinux=$(getprop ro.boot.selinux 2> /dev/null) + local key_path + local key_files + local entry + if [[ ("$selinux" == "permissive") || ("$bootmode" == "mot-factory") ]]; then + debug "loosen permissions to $touch_vendor files" + case $touch_vendor in + samsung) key_path="/sys/devices/virtual/sec/sec_ts/" + key_files=$(ls $key_path 2>/dev/null) + # Set optional permissions to LSI touch tests + [ -f $touch_path/size ] && chown root:vendor_tcmd $touch_path/size + [ -f $touch_path/address ] && chown root:vendor_tcmd $touch_path/address + [ -f $touch_path/write ] && chown root:vendor_tcmd $touch_path/write + ;; + synaptics) key_path=$touch_path + key_files=$(prepend f54 `ls $touch_path/f54/ 2>/dev/null`) + key_files=$key_files"reporting query stats";; + focaltech) key_path="/proc/" + key_files="ftxxxx-debug";; + ilitek) key_path="/proc/ilitek" + key_files="ioctl";; + goodix) key_path="/proc/" + key_files="gmnode" + if [[ "$touch_instance" == "GTx5" ]] || [[ "$touch_instance" == "GTx8" ]]; then + key_path="/dev/" + key_files="gtp_tools" + fi + ;; + esac + for entry in $key_files; do + chmod 0666 $key_path/$entry + debug "change permissions of $key_path/$entry" + done + fi + # Set permissions to enable factory touch tests + chown root:vendor_tcmd $touch_path/drv_irq + chown root:vendor_tcmd $touch_path/hw_irqstat + chown root:vendor_tcmd $touch_path/reset + + # Set permissions to allow Bug2Go access to touch statistics + chown root:log $touch_path/stats + # Erase is optional + [ -f $touch_path/erase_all ] && chown root:vendor_tcmd $touch_path/erase_all +} + +read_touch_property() +{ + property="" + debug "retrieving property: [$touch_path/$1]" + property=$(cat $touch_path/$1 2> /dev/null) + debug "touch property [$1] is: [$property]" + [ -z "$property" ] && return 1 + return 0 +} + +read_panel_property() +{ + property="" + debug "retrieving panel property: [$panel_path/$1]" + property=$(cat $panel_path/$1 2> /dev/null) + debug "panel property [$1] is: [$property]" + [ -z "$property" ] && return 1 + return 0 +} + +find_latest_config_id() +{ + local fw_mask=$1 + local skip_fields=$2 + local dec max z str_hex i + str_cfg_id_latest="" + debug "scanning dir for files matching [$fw_mask]" + let dec=0; max=0; + for file in $(ls $fw_mask 2>/dev/null); do + z=$file + i=0 + while [ ! $i -eq $skip_fields ]; do + z=${z#*-} + i=$((i+1)) + done + str_hex=${z%%-*}; + let dec=0x$str_hex + if [ $dec -gt $max ]; then + let max=$dec; dec_cfg_id_latest=$dec; + str_cfg_id_latest=$str_hex + fi + done + [ -z "$str_cfg_id_latest" ] && return 1 + return 0 +} + +find_best_match() +{ + local hw_mask=$1 + local panel_supplier=$2 + local skip_fields fw_mask + while [ ! -z "$hw_mask" ]; do + if [ "$hw_mask" == "-" ]; then + hw_mask="" + fi + if [ ! -z "$panel_supplier" ]; then + skip_fields=3 + fw_mask="$touch_vendor-$panel_supplier-$touch_product_id-*-$product_id$hw_mask.*" + else + skip_fields=2 + fw_mask="$touch_vendor-$touch_product_id-*-$product_id$hw_mask.*" + fi + find_latest_config_id "$fw_mask" "$skip_fields" && break + hw_mask=${hw_mask%?} + done + [ -z "$str_cfg_id_latest" ] && return 1 + if [ -z "$panel_supplier" ]; then + firmware_file=$(ls $touch_vendor-$touch_product_id-$str_cfg_id_latest-*-$product_id$hw_mask.*) + else + firmware_file=$(ls $touch_vendor-$panel_supplier-$touch_product_id-$str_cfg_id_latest-*-$product_id$hw_mask.*) + fi + notice "Firmware file for upgrade $firmware_file" + return 0 +} + +query_touch_info() +{ + read_touch_property flashprog + bl_mode=$property + debug "bl mode: $bl_mode" + while true; do + read_touch_property productinfo + touch_product_id=$property + if [ "$touch_product_id" ]; then + # driver might not be ready yet, wait + debug "touch product id: $touch_product_id" + break + fi + sleep 1 + done + if [ "$touch_product_id" == "0" ]; then + debug "touch ic reports invalid product id" + error_msg 1 + return 1 + fi + read_touch_property buildid + str_cfg_id_boot=${property#*-} + let dec_cfg_id_boot=0x$str_cfg_id_boot + debug "touch config id: $str_cfg_id_boot" + build_id_boot=${property%-*} + debug "touch build id: $build_id_boot" + return 0 +} + +query_panel_info() +{ + supplier="" + read_touch_property "panel_supplier" + [ -z "$property" ] && read_panel_property "panel_supplier" + supplier=$property + if [ "$supplier" ]; then + read_panel_property "controller_drv_ver" + panel_ver=${property#${property%?}} + debug "panel supplier: $supplier, ver $panel_ver" + else + debug "driver does not report panel supplier" + fi +} + +load_driver_modules() +{ + if [ "$supplier" ]; then + if [ -f $oem_panel_script ]; then + debug "load_driver_modules()" + $oem_panel_script -s $supplier + fi + fi +} + +search_firmware_file() +{ + local match_not_found + match_not_found=1 + if [ "$supplier" ]; then + for pattern in "$supplier$panel_ver" "$supplier"; do + debug "search for best hw revision match with supplier" + find_best_match "-$hwrev_id" "$pattern" + match_not_found=$? + [ "$match_not_found" == "0" ] && break + done + fi + if [ "$match_not_found" != "0" ]; then + debug "search for best hw revision match without supplier" + find_best_match "-$hwrev_id" + if [ "$?" != "0" ]; then + error_msg 3 + return 1 + fi + fi + return 0 +} + +reload_modules() +{ + local rc + local module + for module in $*; do + [ -f $dlkm_path/$module.ko ] || continue + notice "Reloading [$module.ko]..." + rmmod $module + rc=$? + [ $rc != 0 ] && notice "Unloading [$module] failed: $rc" + insmod $dlkm_path/$module.ko + rc=$? + [ $rc != 0 ] && notice "Loading [$module] failed: $rc" + done +} + +run_firmware_upgrade() +{ + local recovery + recovery=0 + if [ "$bl_mode" == "1" ] || [ "$build_id_boot" == "0" ]; then + recovery=1 + notice "Initiating touch firmware recovery" + notice " bl mode = $bl_mode" + notice " build id = $build_id_boot" + fi + if [ $dec_cfg_id_boot -ne $dec_cfg_id_latest ] || [ "$recovery" == "1" ]; then + wait_for_poweron + debug "forcing firmware upgrade" + echo 1 > $touch_path/forcereflash + debug "sending reflash command" + echo $firmware_file > $touch_path/doreflash + read_touch_property flashprog + if [ "$?" != "0" ]; then + error_msg 1 + return 1 + fi + bl_mode=$property + if [ "$bl_mode" == "1" ]; then + error_msg 4 + return 1 + fi + read_touch_property buildid + if [ "$?" != "0" ]; then + error_msg 1 + return 1 + fi + str_cfg_id_new=${property#*-} + build_id_new=${property%-*} + notice "Touch firmware config id at boot time $str_cfg_id_boot" + notice "Touch firmware config id in the file $str_cfg_id_latest" + notice "Touch firmware config id currently programmed $str_cfg_id_new" + [ "$str_cfg_id_latest" != "$str_cfg_id_new" ] && error_msg 7 && return 1 + # indicate that update has been completed + setprop $touch_update_prop "completed" + notice "property [$touch_update_prop] set to [`getprop $touch_update_prop`]" + if [ "$touch_vendor" == "synaptics" ]; then + notice "forcing F54 registers update" + echo 1 > $touch_path/f54/force_update + notice "need to reload F54" + reload_modules "synaptics_dsx_test_reporting" + fi + fi + return 0 +} + +do_sec_calibration() +{ + local __result=$1 + local info + local rc + + sleep 3 + echo run_force_calibration > /sys/devices/virtual/sec/tsp/cmd + rc=$(cat /sys/devices/virtual/sec/tsp/cmd_result) + [ "$rc" != "run_force_calibration:OK" ] && return 1 + info=$(cat $touch_class_path/$touch_instance/buildid) + if [ -f $touch_class_path/$touch_instance/mutual_range ]; then + info=$info";$(cat $touch_class_path/$touch_instance/mutual_range)" + else + notice "mutual range unavailable" + fi + info=$info";forced" + eval "$__result='$info'" + return 0 +} + +do_calibration() +{ + local rc + local cal_info + local factory_build + local cal_version + + factory_build=$(getprop $factory_property 2> /dev/null) + cal_info=$(getprop $touch_calibration_done_version 2> /dev/null) + # new calibration info comes with mutual range and probably was enforced + if [[ ("$cal_info" && "${cal_info%%;*}" != "$cal_info") || ("$cal_info" == "enable-autocalibration") ]]; then + cal_version=${cal_info%%;*} + cal_version=${cal_version#*-} + debug "cal_version is '$cal_version'" + fi + + if [[ ("$factory_build" != 1 || "$cal_version" != "autocalibration") ]]; then + debug "factory='$factory_build', cal_version='$cal_version', latest='$str_cfg_id_latest'" + return + fi + + notice "Force touch calibration" + case $touch_vendor in + samsung) do_sec_calibration cal_info + rc=$? + debug "cal_info='$cal_info'" + ;; + esac + notice "Touch calibration result $rc" + [ $rc == 0 ] && setprop $touch_calibration_done_version $cal_info +} + +process_touch_instance() +{ + touch_vendor=$(cat $touch_class_path/$touch_instance/vendor) + debug "touch vendor [$touch_vendor]" + touch_path=/sys$(cat $touch_class_path/$touch_instance/path) + debug "sysfs touch path: $touch_path" + touch_status_prop=vendor.hw.touch.$touch_instance.status + touch_update_prop=vendor.hw.touch.$touch_instance.update + if [ ! -f $touch_path/doreflash ] || + [ ! -f $touch_path/poweron ] || + [ ! -f $touch_path/flashprog ] || + [ ! -f $touch_path/productinfo ] || + [ ! -f $touch_path/buildid ]; then + error_msg 5 + return + fi + if [ $dump_statistics ]; then + dump_statistics + fi + notice "Checking touch ID [$touch_instance] FW upgrade" + touch_vendor=$(cat $touch_class_path/$touch_instance/vendor) + debug "touch vendor [$touch_vendor]" + touch_path=/sys$(cat $touch_class_path/$touch_instance/path) + debug "sysfs touch path: $touch_path" + query_touch_info + query_panel_info + search_firmware_file + [ "$?" == "0" ] && run_firmware_upgrade + do_calibration + notice "Touch firmware is up to date" + setprop $touch_status_prop "ready" + notice "property [$touch_status_prop] set to [`getprop $touch_status_prop`]" + notice "Handling touch ID [$touch_instance] permissions" + setup_permissions +} + +# Main starts here +query_panel_info +load_driver_modules +[ -d $touch_class_path ] || error_and_leave 8 +debug "sysfs panel path: $panel_path" +product_id=$(getprop $device_property 2> /dev/null) +[ -z "$product_id" ] && error_and_leave 2 $device_property +product_id=${product_id%-*} +product_id=${product_id%_*} +debug "product id: $product_id" +hwrev_id=$(getprop $hwrev_property 2> /dev/null) +[ -z "$hwrev_id" ] && notice "hw revision undefined" +debug "hw revision: $hwrev_id" +cd $firmware_path +# Run asynchronously for each instance +for touch_instance in $(ls $touch_class_path); do + process_touch_instance & +done + +# check if need to reload modules +wait +debug "all background processes completed" + +return 0 diff --git a/rootdir/bin/init.mmi.usb.sh b/rootdir/bin/init.mmi.usb.sh new file mode 100644 index 0000000..e388731 --- /dev/null +++ b/rootdir/bin/init.mmi.usb.sh @@ -0,0 +1,435 @@ +#!/vendor/bin/sh +# Copyright (c) 2012, Code Aurora Forum. 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 Code Aurora Forum, Inc. 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. +# +# +# Allow unique persistent serial numbers for devices connected via usb +# User needs to set unique usb serial number to persist.usb.serialno and +# if persistent serial number is not set then Update USB serial number if +# passed from command line +# + +target=`getprop ro.board.platform` +usb_action=`getprop vendor.usb.mmi-usb-sh.action` +echo "mmi-usb-sh: action = \"$usb_action\"" +sys_usb_config=`getprop vendor.usb.config` + +tcmd_ctrl_adb () +{ + ctrl_adb=`getprop vendor.tcmd.ctrl_adb` + echo "mmi-usb-sh: vendor.tcmd.ctrl_adb = $ctrl_adb" + case "$ctrl_adb" in + "0") + if [[ "$sys_usb_config" == *adb* ]] + then + # *** ALWAYS expecting adb at the end *** + new_usb_config=${sys_usb_config/,adb/} + echo "mmi-usb-sh: disabling adb ($new_usb_config)" + setprop persist.vendor.usb.config $new_usb_config + setprop vendor.usb.config $new_usb_config + setprop persist.vendor.factory.allow_adb 0 + fi + ;; + "1") + if [[ "$sys_usb_config" != *adb* ]] + then + # *** ALWAYS expecting adb at the end *** + new_usb_config="$sys_usb_config,adb" + echo "mmi-usb-sh: enabling adb ($new_usb_config)" + setprop persist.vendor.usb.config $new_usb_config + setprop vendor.usb.config $new_usb_config + setprop persist.vendor.factory.allow_adb 1 + fi + ;; + esac + + exit 0 +} + +case "$usb_action" in + "") + ;; + "vendor.tcmd.ctrl_adb") + tcmd_ctrl_adb + ;; +esac + +# soc_ids for 8937 +if [ -f /sys/devices/soc0/soc_id ]; then + soc_id=`cat /sys/devices/soc0/soc_id` +else + soc_id=`cat /sys/devices/system/soc/soc0/id` +fi + +case "$target" in + "msm8937") + setprop vendor.usb.rps_mask 0 + setprop vendor.rmnet_vnd.rps_mask 0 + case "$soc_id" in + "294" | "295") + setprop vendor.usb.rps_mask 40 + ;; + esac + + case "$soc_id" in + "313" | "320") + qcom_usb_config="diag,serial_smd,rmnet_ipa" + qcom_adb_usb_config="diag,serial_smd,rmnet_ipa,adb" + bpt_usb_config="diag,serial_smd,rmnet_bam_ipa" + bpt_adb_usb_config="diag,serial_smd,rmnet_bam_ipa,adb" + setprop vendor.usb.rndis.func.name "rndis_bam" + setprop vendor.usb.rmnet.inst.name "rmnet" + setprop vendor.usb.dpl.inst.name "dpl" + ;; + *) + qcom_usb_config="diag,serial_smd,rmnet_qti_bam" + qcom_adb_usb_config="diag,serial_smd,rmnet_qti_bam,adb" + bpt_usb_config="diag,serial_smd,rmnet" + bpt_adb_usb_config="diag,serial_smd,rmnet,adb" + ;; + esac + ;; + "msm8953") + #Set RPS Mask for Tethering to CPU4 + setprop vendor.usb.rps_mask 10 + setprop vendor.rmnet_vnd.rps_mask 0 + if [ -d /config/usb_gadget/g1 ]; then + qcom_usb_config="diag,serial_cdev,rmnet" + qcom_adb_usb_config="diag,serial_cdev,rmnet,adb" + bpt_usb_config="diag,serial,rmnet" + bpt_adb_usb_config="diag,serial,rmnet,adb" + setprop vendor.usb.rndis.func.name "rndis_bam" + setprop vendor.usb.rmnet.func.name "rmnet_bam" + else + qcom_usb_config="diag,serial_smd,serial_tty,rmnet_bam,mass_storage" + qcom_adb_usb_config="diag,serial_smd,serial_tty,rmnet_bam,mass_storage,adb" + bpt_usb_config="diag,serial_smd,serial_tty,rmnet" + bpt_adb_usb_config="diag,serial_smd,serial_tty,rmnet,adb" + fi + setprop vendor.usb.controller "7000000.dwc3" + ;; + "msm8996") + #Set RPS Mask for Tethering to CPU2 + setprop vendor.usb.rps_mask 2 + setprop vendor.rmnet_vnd.rps_mask 0f + qcom_usb_config="diag,serial_cdev,serial_tty,rmnet_bam,mass_storage" + qcom_adb_usb_config="diag,serial_cdev,serial_tty,rmnet_bam,mass_storage,adb" + bpt_usb_config="diag,serial_cdev,serial_tty,rmnet" + bpt_adb_usb_config="diag,serial_cdev,serial_tty,rmnet,adb" + setprop vendor.usb.controller "6a00000.dwc3" + ;; + "msm8998") + #Set RPS Mask for Tethering to CPU2 + setprop vendor.usb.rps_mask 70 + setprop vendor.rmnet_vnd.rps_mask 0d + qcom_usb_config="diag,serial_cdev,rmnet" + qcom_adb_usb_config="diag,serial_cdev,rmnet,adb" + bpt_usb_config="diag,serial,rmnet" + bpt_adb_usb_config="diag,serial,rmnet,adb" + setprop vendor.usb.controller "a800000.dwc3" + setprop vendor.usb.rndis.func.name "gsi" + setprop vendor.usb.rmnet.func.name "gsi" + setprop vendor.usb.hcd_mask 80 + ;; + "sdm660") + #Set RPS Mask for Tethering to CPU2 + setprop vendor.usb.rps_mask 30 + setprop vendor.rmnet_vnd.rps_mask 4 + qcom_usb_config="diag,serial_cdev,rmnet" + qcom_adb_usb_config="diag,serial_cdev,rmnet,adb" + bpt_usb_config="diag,serial,rmnet" + bpt_adb_usb_config="diag,serial,rmnet,adb" + setprop vendor.usb.controller "a800000.dwc3" + setprop vendor.usb.rndis.func.name "rndis_bam" + setprop vendor.usb.rmnet.func.name "rmnet_bam" + ;; + "sdm845") + qcom_usb_config="diag,serial_cdev,rmnet" + qcom_adb_usb_config="diag,serial_cdev,rmnet,adb" + bpt_usb_config="diag,serial,rmnet" + bpt_adb_usb_config="diag,serial,rmnet,adb" + setprop vendor.usb.controller "a600000.dwc3" + setprop vendor.usb.rndis.func.name "gsi" + setprop vendor.usb.rmnet.func.name "gsi" + ;; + "sdm710") + qcom_usb_config="diag,serial_cdev,rmnet" + qcom_adb_usb_config="diag,serial_cdev,rmnet,adb" + bpt_usb_config="diag,serial,rmnet" + bpt_adb_usb_config="diag,serial,rmnet,adb" + setprop vendor.usb.controller "a600000.dwc3" + setprop vendor.usb.rndis.func.name "gsi" + setprop vendor.usb.rmnet.func.name "gsi" + ;; + "sm6150") + qcom_usb_config="diag,serial_cdev,rmnet" + qcom_adb_usb_config="diag,serial_cdev,rmnet,adb" + bpt_usb_config="diag,serial,rmnet" + bpt_adb_usb_config="diag,serial,rmnet,adb" + setprop vendor.usb.controller "a600000.dwc3" + setprop vendor.usb.rndis.func.name "gsi" + setprop vendor.usb.rmnet.func.name "gsi" + setprop vendor.usb.hcd_mask 80 + setprop vendor.usb.rps_mask 40 + ;; + "trinket") + qcom_usb_config="diag,serial_cdev,rmnet" + qcom_adb_usb_config="diag,serial_cdev,rmnet,adb" + bpt_usb_config="diag,serial,rmnet" + bpt_adb_usb_config="diag,serial,rmnet,adb" + setprop vendor.usb.controller "4e00000.dwc3" + setprop vendor.usb.rndis.func.name "gsi" + setprop vendor.usb.rmnet.func.name "gsi" + ;; + "kona") + qcom_usb_config="diag,diag_mdm,qdss,qdss_mdm,serial_cdev,serial_cdev_mdm,dpl,rmnet" + qcom_adb_usb_config="diag,diag_mdm,qdss,qdss_mdm,serial_cdev,serial_cdev_mdm,dpl,rmnet,adb" + bpt_usb_config="diag,serial,rmnet" + bpt_adb_usb_config="diag,serial,rmnet,adb" + setprop vendor.usb.controller "a600000.dwc3" + setprop vendor.usb.rndis.func.name "gsi" + setprop vendor.usb.rmnet.func.name "gsi" + ;; + "lito") + qcom_usb_config="diag,diag_mdm,qdss,qdss_mdm,serial_cdev,serial_cdev_mdm,dpl,rmnet" + qcom_adb_usb_config="diag,diag_mdm,qdss,qdss_mdm,serial_cdev,serial_cdev_mdm,dpl,rmnet,adb" + bpt_usb_config="diag,serial,rmnet" + bpt_adb_usb_config="diag,serial,rmnet,adb" + setprop vendor.usb.controller "a600000.dwc3" + setprop vendor.usb.rndis.func.name "gsi" + setprop vendor.usb.rmnet.func.name "gsi" + ;; + "bengal") + qcom_usb_config="diag,serial_cdev,rmnet" + qcom_adb_usb_config="diag,serial_cdev,rmnet,adb" + bpt_usb_config="diag,serial,rmnet" + bpt_adb_usb_config="diag,serial,rmnet,adb" + setprop vendor.usb.controller "4e00000.dwc3" + setprop vendor.usb.rndis.func.name "gsi" + setprop vendor.usb.rmnet.func.name "gsi" + ;; +esac + +## This is needed to switch to the qcom rndis driver. +diag_extra=`getprop persist.vendor.usb.config.extra` +if [ "$diag_extra" == "" ]; then + setprop persist.vendor.usb.config.extra none +fi + +# +# Allow USB enumeration with default PID/VID +# +usb_config=`getprop persist.vendor.usb.config` +mot_usb_config=`getprop persist.vendor.mot.usb.config` +bootmode=`getprop ro.bootmode` +buildtype=`getprop ro.build.type` +securehw=`getprop ro.boot.secure_hardware` +cid=`getprop ro.vendor.boot.cid` +diagmode=`getprop persist.vendor.radio.usbdiag` + +echo "mmi-usb-sh: persist usb configs = \"$usb_config\", \"$mot_usb_config\", \"$diagmode\"" + + +phonelock_type=`getprop persist.sys.phonelock.mode` +usb_restricted=`getprop persist.sys.usb.policylocked` +if [ "$securehw" == "1" ] && [ "$buildtype" == "user" ] && [ "$(($cid))" != 0 ] +then + if [ "$usb_restricted" == "1" ] + then + echo 1 > /sys/class/android_usb/android0/secure + else + case "$phonelock_type" in + "1" ) + echo 1 > /sys/class/android_usb/android0/secure + ;; + * ) + echo 0 > /sys/class/android_usb/android0/secure + ;; + esac + fi +fi + +# ##DIAG# mode option +case "$diagmode" in + "1" ) + case "$usb_config" in + "$bpt_usb_config" | "$bpt_adb_usb_config" ) + ;; + * ) + case "$securehw" in + "1" ) + setprop persist.vendor.usb.config $bpt_usb_config + ;; + *) + setprop persist.vendor.usb.config $bpt_adb_usb_config + ;; + esac + ;; + esac + exit 0 + ;; + * ) + # Do nothing. USB enumeration will be set by bootmode + ;; +esac + + + +case "$bootmode" in + "bp-tools" ) + case "$usb_config" in + "$bpt_usb_config" | "$bpt_adb_usb_config" ) + ;; + * ) + case "$securehw" in + "1" ) + setprop persist.vendor.usb.config $bpt_usb_config + setprop persist.vendor.usb.bp-tools.config $bpt_usb_config + setprop persist.vendor.usb.bp-tools.func $bpt_usb_config + ;; + *) + setprop persist.vendor.usb.config $bpt_adb_usb_config + setprop persist.vendor.usb.bp-tools.config $bpt_adb_usb_config + setprop persist.vendor.usb.bp-tools.func $bpt_adb_usb_config + ;; + esac + ;; + esac + ;; + "mot-factory" ) + allow_adb=`getprop persist.vendor.factory.allow_adb` + case "$allow_adb" in + "1") + if [ "$usb_config" != "usbnet,adb" ] + then + setprop persist.vendor.usb.config usbnet,adb + setprop persist.vendor.usb.mot-factory.config usbnet,adb + setprop persist.vendor.usb.mot-factory.func usbnet,adb + fi + ;; + *) + if [ "$usb_config" != "usbnet" ] + then + setprop persist.vendor.usb.config usbnet + setprop persist.vendor.usb.mot-factory.config usbnet + setprop persist.vendor.usb.mot-factory.func usbnet + fi + ;; + esac + # Disable Host Mode LPM for Factory mode + echo 1 > /sys/module/dwc3_msm/parameters/disable_host_mode_pm + ;; + "qcom" ) + case "$usb_config" in + "$qcom_usb_config" | "$qcom_adb_usb_config" ) + ;; + * ) + case "$securehw" in + "1" ) + setprop persist.vendor.usb.config $qcom_usb_config + setprop persist.vendor.usb.qcom.config $qcom_usb_config + setprop persist.vendor.usb.qcom.func $qcom_usb_config + ;; + *) + setprop persist.vendor.usb.config $qcom_adb_usb_config + setprop persist.vendor.usb.qcom.config $qcom_adb_usb_config + setprop persist.vendor.usb.qcom.func $qcom_adb_usb_config + ;; + esac + ;; + esac + ;; + * ) + if [ "$buildtype" == "user" ] && [ "$phonelock_type" != "1" ] && [ "$usb_restricted" != "1" ] + then + echo 1 > /sys/class/android_usb/android0/secure + echo "Disabling enumeration until bootup!" + fi + + case "$usb_config" in + "mtp,adb" | "mtp" | "adb") + ;; + *) + case "$mot_usb_config" in + "mtp,adb" | "mtp" | "adb") + setprop persist.vendor.usb.config $mot_usb_config + ;; + *) + case "$securehw" in + "1" ) + setprop persist.vendor.usb.config mtp + ;; + *) + setprop persist.vendor.usb.config adb + ;; + esac + ;; + esac + ;; + esac + + adb_early=`getprop ro.boot.adb_early` + if [ "$adb_early" == "1" ]; then + echo 0 > /sys/class/android_usb/android0/secure + echo "Enabling enumeration after bootup, count = $count !" + new_persist_usb_config=`getprop persist.vendor.usb.config` + if [[ "$new_persist_usb_config" != *adb* ]]; then + setprop persist.vendor.usb.config "adb" + setprop vendor.usb.config "adb" + else + setprop vendor.usb.config $new_persist_usb_config + fi + exit 0 + fi + + if [ "$buildtype" == "user" ] && [ "$phonelock_type" != "1" ] && [ "$usb_restricted" != "1" ] + then + count=0 + bootcomplete=`getprop vendor.boot_completed` + echo "mmi-usb-sh - bootcomplete = $booted" + while [ "$bootcomplete" != "1" ]; do + echo "Sleeping till bootup!" + sleep 1 + count=$((count+1)) + if [ $count -gt 90 ] + then + echo "mmi-usb-sh - Timed out waiting for bootup" + break + fi + bootcomplete=`getprop vendor.boot_completed` + done + echo 0 > /sys/class/android_usb/android0/secure + echo "Enabling enumeration after bootup, count = $count !" + exit 0 + fi + ;; +esac + +new_persist_usb_config=`getprop persist.vendor.usb.config` +if [ "$sys_usb_config" != "$new_persist_usb_config" ]; then + setprop vendor.usb.config $new_persist_usb_config +fi diff --git a/rootdir/bin/init.mmi.wlan-getlogs.sh b/rootdir/bin/init.mmi.wlan-getlogs.sh new file mode 100644 index 0000000..d449fcf --- /dev/null +++ b/rootdir/bin/init.mmi.wlan-getlogs.sh @@ -0,0 +1,18 @@ +#!/vendor/bin/sh + +wlan_log_path="/data/vendor/wifi/wlan_logs/" +wlan_log_dest_path="/data/vendor/bug2go/wlan_logs" +diag_log_path="/data/vendor/diag_mdlog/logs" +mdm2_log_path="/data/vendor/diag_mdlog/logs/mdm2" + +cp -r $wlan_log_path $wlan_log_dest_path + +if [ -d $mdm2_log_path ] + then echo "Get diag logs" + for f in $diag_log_path/*.qmdl{,2} + do cp $f $wlan_log_dest_path + done + cp -r $mdm2_log_path $wlan_log_dest_path +fi + +chown -R log:log $wlan_log_dest_path diff --git a/rootdir/bin/init.oem.fingerprint.sh b/rootdir/bin/init.oem.fingerprint.sh new file mode 100644 index 0000000..304db65 --- /dev/null +++ b/rootdir/bin/init.oem.fingerprint.sh @@ -0,0 +1,82 @@ +#!/vendor/bin/sh +# +# Identify fingerprint sensor model +# +# Copyright (c) 2019 Lenovo +# All rights reserved. +# +# Changed Log: +# --------------------------------- +# April 15, 2019 chengql2@lenovo.com Initial version +# April 28, 2019 chengql2 Add fps_id creating step +# December 2, 2019 chengql2 Store fps_id into persist fs, and identify sensor +# again when secure unit boots as factory mode. + +script_name=${0##*/} +script_name=${script_name%.*} +function log { + echo "$script_name: $*" > /dev/kmsg +} + +persist_fps_id=/mnt/vendor/persist/fps/vendor_id + +FPS_VENDOR_GOODIX=goodix +FPS_VENDOR_FPC=fpc +FPS_VENDOR_NONE=none + +PROP_FPS_IDENT=vendor.hw.fps.ident +MAX_TIMES=20 + +function ident_fps { + log "- install Goodix driver" + insmod /vendor/lib/modules/goodix_fod_mmi.ko + sleep 1 + log "- identify Goodix sensor" + setprop $PROP_FPS_IDENT "" + start gf_ident + for i in $(seq 1 $MAX_TIMES) + do + sleep 0.1 + ident_status=$(getprop $PROP_FPS_IDENT) + log "-result : $ident_status" + if [ $ident_status == $FPS_VENDOR_GOODIX ]; then + log "ok" + echo $FPS_VENDOR_GOODIX > $persist_fps_id + return 0 + elif [ $ident_status == $FPS_VENDOR_NONE ]; then + log "fail" + log "- unload Goodix driver" + rmmod goodix_fod_mmi + break + fi + done + + log "- install FPC driver" + insmod /vendor/lib/modules/fpc1020_mmi.ko + echo $FPS_VENDOR_FPC > $persist_fps_id + return 0 +} + +if [ ! -f $persist_fps_id ]; then + ident_fps + return $? +fi + +fps_vendor=$(cat $persist_fps_id) +log "FPS vendor: $fps_vendor" + + +if [ $fps_vendor == $FPS_VENDOR_GOODIX ]; then + log "- install Goodix driver" + insmod /vendor/lib/modules/goodix_fod_mmi.ko + return $? +fi + +if [ $fps_vendor == $FPS_VENDOR_FPC ]; then + log "- install FPC driver" + insmod /vendor/lib/modules/fpc1020_mmi.ko + return $? +fi + +ident_fps +return $? \ No newline at end of file diff --git a/rootdir/bin/init.oem.fingerprint2.sh b/rootdir/bin/init.oem.fingerprint2.sh new file mode 100644 index 0000000..3808239 --- /dev/null +++ b/rootdir/bin/init.oem.fingerprint2.sh @@ -0,0 +1,102 @@ +#!/vendor/bin/sh +# +# Start indicated fingerprint HAL service +# +# Copyright (c) 2019 Lenovo +# All rights reserved. +# +# April 15, 2019 chengql2@lenovo.com Initial version +# December 2, 2019 chengql2 Store fps_id into persist fs + +script_name=${0##*/} +script_name=${script_name%.*} +function log { + echo "$script_name: $*" > /dev/kmsg +} + +persist_fps_id=/mnt/vendor/persist/fps/vendor_id +persist_fps_id2=/mnt/vendor/persist/fps/last_vendor_id + +if [ ! -f $persist_fps_id ]; then + log "warn: no associated persist file found" + return -1 +fi + +fps_vendor2=$(cat $persist_fps_id2) +log "FPS vendor (last): $fps_vendor2" +fps_vendor=$(cat $persist_fps_id) +log "FPS vendor: $fps_vendor" + +FPS_VENDOR_NONE=none +FPS_VENDOR_GOODIX=goodix +FPS_VENDOR_FPC=fpc + +prop_fps_status=vendor.hw.fingerprint.status +prop_persist_fps=persist.vendor.hardware.fingerprint + +FPS_STATUS_NONE=none +FPS_STATUS_OK=ok + +if [ $fps_vendor == $FPS_STATUS_NONE ]; then + log "warn: boot as the last FPS" + fps=$fps_vendor2 +else + fps=$fps_vendor +fi + +for i in $(seq 1 2) +do + +setprop $prop_fps_status $FPS_STATUS_NONE +if [ $fps == $FPS_VENDOR_GOODIX ]; then + log "start goodix_hal" + start goodix_hal +else + log "start fps_hal" + start fps_hal + fps=$FPS_VENDOR_FPC +fi + +log "wait for HAL finish ..." +fps_status=$(getprop $prop_fps_status) +while [ $fps_status == $FPS_STATUS_NONE ]; do + sleep 0.2 + fps_status=$(getprop $prop_fps_status) +done +log "fingerprint HAL status: $fps_status" + +if [ $fps_status == $FPS_STATUS_OK ]; then + log "HAL success" + setprop $prop_persist_fps $fps + if [ $fps_vendor2 == $fps ]; then + return 0 + fi + log "- update FPS vendor (last)" + echo $fps > $persist_fps_id2 + log "- done" + return 0 +fi + +if [ $fps == $fps_vendor2 ]; then + if [ $fps == $FPS_VENDOR_FPC ]; then + rmmod fpc1020_mmi + insmod /vendor/lib/modules/goodix_fod_mmi.ko + fps=$FPS_VENDOR_GOODIX + else + rmmod goodix_fod_mmi + insmod /vendor/lib/modules/fpc1020_mmi.ko + fps=$FPS_VENDOR_FPC + fi + log "- update FPS vendor" + echo $fps > $persist_fps_id + sleep 1 +else + log "error: HAL fail" + setprop $prop_persist_fps $FPS_VENDOR_NONE + echo $FPS_VENDOR_NONE > $persist_fps_id + + log "- done" + return 1 +fi + +done diff --git a/rootdir/bin/init.oem.hw.sh b/rootdir/bin/init.oem.hw.sh new file mode 100644 index 0000000..236e4eb --- /dev/null +++ b/rootdir/bin/init.oem.hw.sh @@ -0,0 +1,709 @@ +#!/vendor/bin/sh + +BASEDIR=vendor + +PATH=/sbin:/$BASEDIR/sbin:/$BASEDIR/bin:/$BASEDIR/xbin +export PATH + +while getopts dpfrM op; +do + case $op in + d) dbg_on=1;; + p) populate_only=1;; + f) dead_touch=1;; + r) reset_touch=1;; + M) mount_2nd_stage=1;; + esac +done +shift $(($OPTIND-1)) + +scriptname=${0##*/} +hw_mp=/proc/hw +config_mp=/proc/config +reboot_utag=$config_mp/.reboot +touch_status_prop=vendor.hw.touch.status +hw_cfg_file=hw_config.xml +vhw_file=/$BASEDIR/etc/vhw.xml +bp_file=/system/build.prop +oem_file=/oem/oem.prop +load_error=3 +need_to_reload=2 +reload_in_progress=1 +reload_done=0 +ver_utag=".version" +version_fs="unknown" +xml_version="unknown" +device_params="" +xml_file="" +utag_update_fail="false" +modem_ver_prop=ro.vendor.hw.modem_version +policy_prop=ro.vendor.super_image_policy + +super_image_detection() +{ + local subsys + local file2mount + local basefile + local version + local extention + local image_dir + local is_super_image + local super_image_prop + local file_mount_prop + local modem_version=$(getprop $modem_ver_prop) + local policy=$(getprop $policy_prop) + + debug "'$policy_prop' is '$policy'" + for subsys in modem fsg; do + debug "Processing [${subsys}]..." + is_super_image="" + case ${subsys} in + modem) image_dir=/vendor/firmware_mnt;; + fsg) image_dir=/vendor/fsg;; + esac + + [ -f $image_dir/super_modem ] && is_super_image="true" + debug "super image '$is_super_image'" + + if [ "$is_super_image" == "true" ]; then + file2mount="" + case ${subsys} in + modem) super_image_prop="ro.vendor.hw.modem_super_image" + file_mount_prop="ro.vendor.hw.modem_mount_file" + basefile="NON-HLOS.bin" + extention=".bin" + [ "$modem_version" ] && file2mount=$(printf "NON-HLOS%sbin" $modem_version) + ;; + fsg) super_image_prop="ro.vendor.hw.fsg_super_image" + file_mount_prop="ro.vendor.hw.fsg_mount_file" + basefile="fsg.mbn" + extention=".mbn" + [ "$modem_version" ] && file2mount=$(printf "fsg%smbn" $modem_version) + ;; + esac + if [ -z "$file2mount" ]; then + notice "'$modem_ver_prop' not set, but [$subsys] is super image!" + else + # modem_version matches existing file in super image + if [ -f $image_dir/$file2mount ]; then + notice "[$subsys] is super image. '$file2mount' will be mounted" + setprop $file_mount_prop $file2mount + setprop $super_image_prop yes + continue + fi + notice "[$subsys] is super image. '$file2mount' not found" + fi + else + notice "[$subsys] non-super image" + fi + + # check super image policy + if [ "$policy" == "enforce" ]; then + notice "[$subsys] strict super image policy! Rebooting to recovery..." + debug "'ro.vendor.hw.super_image_failure' -> 'yes'" + setprop ro.vendor.hw.super_image_failure yes + return + fi + notice "[$subsys] super image policy not enforced" + # proceed with non-super image if policy allows + if [ -z "$is_super_image" ]; then + notice "[$subsys] proceed with non-super image!" + continue + fi + + # retrieve default version if available + version=$(cat $image_dir/super_modem) + if [ "$version" ]; then + basefile=$version + notice "default file override '$basefile'" + else + notice "use default file: '$basefile' instead of '$file2mount'" + fi + + notice "Searching for '$basefile' in $image_dir..." + debug "checking file '$image_dir/$basefile'" + if [ -f $image_dir/$basefile ]; then + notice "[$subsys] is super image! '$basefile' will be mounted" + debug "'$file_mount_prop' -> '$basefile'" + setprop $file_mount_prop $basefile + debug "'$super_image_prop' -> 'yes'" + setprop $super_image_prop yes + continue + fi + + # set to fail + notice "Unable to mount '$basefile'! Rebooting to recovery..." + debug "'ro.vendor.hw.super_image_failure' -> 'yes'" + setprop ro.vendor.hw.super_image_failure yes + return + done +} + +set_reboot_counter() +{ + local value=$1 + local reboot_cnt=0 + local reboot_mp=${reboot_utag%.*} + local tag_name=${reboot_utag##*/} + if [ $((value)) -gt 0 ]; then + notice "increase reboot counter" + [ -d $reboot_utag ] && reboot_cnt=$(cat $reboot_utag/ascii) + value=$(($reboot_cnt + 1)) + fi + if [ ! -d $reboot_utag ]; then + echo ${reboot_utag##*/} > $reboot_mp/all/new + [ $? != 0 ] && notice "error creating UTAG $tag_name" + fi + echo "$value" > $reboot_utag/ascii + [ $? != 0 ] && notice "error updating UTAG $tag_name" + notice "UTAG $tag_name is [`cat $reboot_utag/ascii`]" +} + +set_reboot_counter_property() +{ + local reboot_cnt=0 + local tag_name=${reboot_utag##*/} + if [ -d $reboot_utag ]; then + reboot_cnt=$(cat $reboot_utag/ascii) + notice "UTAG $tag_name has value [$reboot_cnt]" + else + notice "UTAG $tag_name does not exist" + fi + setprop $touch_status_prop $reboot_cnt + notice "property [$touch_status_prop] is set to [`getprop $touch_status_prop`]" +} + +debug() +{ + [ $dbg_on ] && echo "Debug: $*" +} + +notice() +{ + echo "$*" + echo "$scriptname: $*" > /dev/kmsg +} + +add_device_params() +{ + device_params=$device_params" $@" + debug "add_device_params='$device_params'" +} + +drop_device_parameter() +{ + device_params=${device_params% *} + debug "drop_device_parameter='$device_params'" +} + +set_xml_file() +{ + xml_file=$@ + debug "working with XML file='$xml_file'" +} + +exec_parser() +{ + eval motobox expat -u -f $xml_file $device_params "$@" 2>/dev/null +} + +reload_utags() +{ + local mp=$1 + local value + echo "1" > $mp/reload + value=$(cat $mp/reload) + while [ "$value" == "$reload_in_progress" ]; do + notice "waiting for loading to complete" + sleep 1; + value=$(cat $mp/reload) + notice "'$mp' current status [$value]" + done +} + +procfs_wait_for_device() +{ + local __result=$1 + local status + local mpi + local IFS=' ' + local device_timeout_count=0 + while [ ! -f $hw_mp/reload ] || [ ! -f $config_mp/reload ]; do + notice "waiting for devices" + sleep 1; + if [ "$device_timeout_count" -eq "10" ];then + notice "waiting for devices timeout" + eval $__result="" + return + fi + device_timeout_count=$(($device_timeout_count + 1)) + done + for mpi in $hw_mp $config_mp; do + status=$(cat $mpi/reload) + notice "mount point '$mpi' status [$status]" + if [ "$status" == "$need_to_reload" ]; then + notice "force $mpi reloading" + reload_utags $mpi + fi + done + for mpi in $hw_mp $config_mp; do + status=$(cat $mpi/reload) + notice "$mpi reload is [$status]" + while [ "$status" != "$reload_done" ]; do + notice "waiting for loading to complete" + sleep 1; + status=$(cat $mpi/reload) + done + done + eval $__result=$status +} + +get_attr_data_by_name() +{ + local __result=$1 + local attr=$2 + shift 2 + local IFS=' ' + eval $__result="" + for arg in ${@}; do + [ "${arg%=*}" == "$attr" ] || continue + debug "attr_data='${arg#*=}'" + eval $__result="${arg#*=}" + break + done +} + +get_tag_data() +{ + local __name=$1 + local __value=$2 + shift 2 + local dataval + local IFS=' ' + eval $__name="" + eval $__value="" + for arg in ${@}; do + case $arg in + string-array | string) + debug "---/ skip keyword: '$arg'" + continue;; + esac + debug "---> arg='$arg'" + if [ "${arg%=*}" == "name" ]; then + eval $__name=${arg#*=} + continue + fi + # eval treats ';' as a separator, thus make it '\;' + dataval=$(echo ${arg#?} | sed 's/;/\\;/g') + debug "<--- dataval='$dataval'" + eval $__value=$dataval + done +} + +update_utag() +{ + local utag=$1 + local payload=$2 + local verify + local rc + if [ ! -d $hw_mp/$utag ]; then + notice "creating utag '$utag'" + echo $utag > $hw_mp/all/new + rc=$? + [ "$rc" != "0" ] && notice "'$utag' create dir failed rc=$rc" + fi + debug "writing '$payload' to '$hw_mp/$utag/ascii'" + echo "$payload" > $hw_mp/$utag/ascii + rc=$? + if [ "$rc" != "0" ]; then + utag_update_fail="true" + notice "'$utag' write file failed rc=$rc" + fi + verify=$(cat $hw_mp/$utag/ascii) + debug "read '$verify' from '$hw_mp/$utag/ascii'" + [ "$verify" != "$payload" ] && notice "'$utag' payload validation failed" +} + +populate_utags() +{ + local selection="$@" + local pline + local ptag + local pvalue + for pline in $(exec_parser $selection); do + get_tag_data ptag pvalue $pline + url_style_off pvalue $pvalue + debug "tag='$ptag' value='$pvalue'" + update_utag $ptag $pvalue + done +} + +set_ro_hw_properties_upgrade() +{ + local utag_path + local utag_name + local prop_prefix + local utag_value + local verify + for hwtag in $(find $hw_mp -name '.system'); do + debug "path $hwtag has '.system' in its name" + prop_prefix="ro.vendor.hw." + utag_path=${hwtag%/*} + utag_name=${utag_path##*/} + utag_value=$(cat $utag_path/ascii) + setprop $prop_prefix$utag_name "$utag_value" + notice "ro.vendor.hw.$utag_name='$utag_value'" + done +} + +set_ro_hw_properties() +{ + local utag_path + local utag_name + local prop_prefix + local utag_value + local verify + for hwtag in $(find $hw_mp -name '.system'); do + debug "path $hwtag has '.system' in its name" + prop_prefix=$(cat $hwtag/ascii) + verify=${prop_prefix%.} + # esure property ends with '.' + if [ "$prop_prefix" == "$verify" ]; then + prop_prefix="$prop_prefix." + debug "added '.' at the end of [$prop_prefix]" + + fi + utag_path=${hwtag%/*} + utag_name=${utag_path##*/} + utag_value=$(cat $utag_path/ascii) + setprop $prop_prefix$utag_name "$utag_value" + notice "$prop_prefix$utag_name='$utag_value'" + done +} + +set_ro_vendor_incremental() +{ + local vendor_incremental="ro.vendor.build.version.incremental" + local vendor_incremental_value + local fetch_prop="ro.build.version.incremental" + local fetch_value=$(getprop $fetch_prop) + + [ -z "$fetch_value" ] && prefetch_from_file $fetch_prop vendor_incremental_value + setprop $vendor_incremental "$vendor_incremental_value" + notice "$vendor_incremental='$vendor_incremental_value'" +} + +smart_value() +{ + local mtag=$1 + local __result=$2 + local value + eval $__result="" + local tmp=${mtag#?} + # absolute path to the file starts with '/' + if [ "${mtag%$tmp}" == "/" ]; then + value=$(cat $mtag) + # property likely to have '.' + elif [ "$mtag" != "${mtag%.*}" ]; then + value=$(getprop $mtag) + else # tag otherwise + value=$(cat $hw_mp/$mtag/ascii) + fi + eval $__result='$value' +} + +url_style_off() +{ + local __arg=$1 + local value=$2 + if [[ $value == *%* ]]; then + value=$(echo $value | sed 's/%20/ /g') + value=$(echo $value | sed 's/%28/\(/g') + value=$(echo $value | sed 's/%29/\)/g') + fi + eval $__arg='$value' +} + +match() +{ + local mapping + local mline + local mtag + local fs_value + local mvalue + local matched + url_style_off mapping $1 + debug "match mapping='$mapping'" + # put '\"' around $mapping to ensure XML + # parser takes it as a single argument + for mline in $(exec_parser \"$mapping\"); do + get_tag_data mtag mvalue $mline + url_style_off mvalue $mvalue + # obtain value based on data source: utag, property or file + smart_value $mtag fs_value + if [ "$fs_value" == "$mvalue" ]; then + matched="true"; + else + matched="false"; + fi + debug "cmp utag='$mtag' values '$mvalue' & '$fs_value' is \"$matched\"" + [ "$matched" == "false" ] && break + done + [ "$matched" == "true" ] && return 0 + return 1 +} + +find_match() +{ + local __retval=$1 + local tag_name + local fline + local line + local subsection + local matched="false" + eval $__retval="" + for fline in $(exec_parser); do + subsection=${fline%% *} + add_device_params $subsection + for line in $(exec_parser); do + get_attr_data_by_name tag_name "name" $line + debug "tag_name='$tag_name'" + match $tag_name + [ "$?" != "0" ] && continue + eval $__retval=$tag_name + matched="true" + break + done + drop_device_parameter + [ "$matched" == "true" ] && break + done +} + +prefetch_from_file() +{ + local pname=$1 + local __result=$2 + local value + local override + eval $__result="" + value=$(cat $bp_file 2>/dev/null | sed '/^$/d' | sed '/^#/d' | sed '/^import/d' | sed -n "/$pname=/p" | sed 's/.*=//') + debug "'$pname' from '$bp_file': '$value'" + if [ -f $oem_file ]; then + override=$(cat $oem_file 2>/dev/null | sed '/^$/d' | sed '/^#/d' | sed '/^import/d' | sed -n "/$pname=/p" | sed 's/.*=//') + [ "$override" ] && value=$override && debug "'$pname' from '$oem_file': '$value'" + fi + eval $__result=$value +} + +append_match() +{ + local prop_list=$1 + local suffix="$2" + local dest_prop + local fetched_prop + local prop_value + local IFS=',' + # properties list to put the result of appending hw suffix to + # example: appended="ro.vendor.product.name,ro.vendor.product.device" + for dest_prop in $prop_list; do + fetch_prop=${dest_prop} + # only alter property name that has "vendor" in it + if [ "${fetch_prop//.vendor}" != "$dest_prop" ]; then + fetch_prop=${fetch_prop//.vendor} + prop_value=$(getprop $fetch_prop) + [ -z "$prop_value" ] && prefetch_from_file $fetch_prop prop_value + # finally set destination property to appended value + setprop $dest_prop "$prop_value$suffix" + notice "$dest_prop='$prop_value$suffix'" + fi + done +} + +process_mappings() +{ + local pname="" + local pexport="" + local pdefault="" + local pappend="" + local putag="" + local subsection + local pline + local matched_val + local whitespace_val + local export_val + local utag_val + for pline in $(exec_parser); do + subsection=${pline%% *} + debug "subsection is '$subsection'" + get_attr_data_by_name pname "name" $pline + get_attr_data_by_name pexport "export" $pline + get_attr_data_by_name pdefault "default" $pline + get_attr_data_by_name pappend "append" $pline + get_attr_data_by_name putag "writeback" $pline + [ "$pname" ] && url_style_off pname $pname && debug "name='$pname'" + [ "$pexport" ] && url_style_off pexport $pexport && debug "export='$pexport'" + [ "$pdefault" ] && url_style_off pdefault $pdefault && debug "default='$pdefault'" + [ "$pappend" ] && url_style_off pappend $pappend && debug "append='$pappend'" + # add 'subsection' to permanent parameters + add_device_params $subsection + # call itself here to handle nonamed subsection, like quirks + [ -z "$pname" ] && [ -z "$pexport" ] && [ -z "$pdefault" ] && [ -z "$pappend" ] && [ -z "$putag" ] && process_mappings && continue + find_match matched_val + [ "$matched_val" ] && url_style_off matched_val $matched_val + # append_match handles OEM overrides, thus has to be called even with empty value + [ "$pappend" ] && append_match $pappend "$matched_val" + if [ "$matched_val" ]; then + if [ "$pexport" ]; then + setprop $pexport "$matched_val" + notice "exporting '$matched_val' into property $pexport" + fi + elif [ "$pexport" -a "$pdefault" ]; then + # if match is not found, proceed with default + setprop $pexport "$pdefault" + notice "defaulting '$pdefault' into property $pexport" + fi + + if [ "$putag" ] && [ -d $hw_mp/$putag ]; then + export_val=$(getprop $pexport) + utag_val=$(cat $hw_mp/$putag/ascii) + debug "writeback compare $utag_val,$export_val" + # if property is empty value, clear the utag. + # if property and writeback utag are empty value, don't update utag + if [ "$export_val" -o "$utag_val" != "(null)" ] && [ "$utag_val" != "$export_val" ]; then + update_utag $putag $export_val + notice "writeback '$export_val' into utag $putag" + fi + fi + # remove the last added parameter + drop_device_parameter + done +} + +# Main starts here +IFS=$'\n' + +if [ ! -z "$mount_2nd_stage" ]; then + notice "Super image detection" + super_image_detection + return 0 +fi + +if [ ! -z "$reset_touch" ]; then + notice "reset reboot counter" + set_reboot_counter 0 + return 0 +fi + +if [ ! -z "$dead_touch" ]; then + notice "property [$touch_status_prop] set to [dead]" + set_reboot_counter 1 + return 0 +fi + +if [ -f /vendor/lib/modules/utags.ko ]; then + notice "loading utag driver" + insmod /vendor/lib/modules/utags.ko +fi + +notice "checking integrity" +# check necessary components exist and just proceed +# with RO properties setup otherwise +if [ ! -f /$BASEDIR/bin/expat ] || [ ! -f $vhw_file ]; then + notice "warning: missing expat or xml" + set_ro_hw_properties + return 0 +fi + +if [ ! -z "$populate_only" ]; then + # special handling for factory UTAGs provisioning + for path in /data/local/tmp /pds/factory; do + [ -f $path/$hw_cfg_file ] && break + done + notice "populating hw config from '$path/$hw_cfg_file'" + set_xml_file $path/$hw_cfg_file + populate_utags hardware + return 0 +fi + +notice "initializing procfs" +procfs_wait_for_device readiness +if [ "$readiness" != "0" ]; then + notice "no access to hw utags procfs" + return 1 +fi + +# populate touch status property with reboot counter +set_reboot_counter_property & + +# XML parsing starts here +set_xml_file $vhw_file + +get_attr_data_by_name boot_device_prop "match" $(exec_parser) +debug "attr='get' value='$boot_device_prop'" +if [ -z $boot_device_prop ]; then + notice "fatal: undefined boot device property" + return 1 +fi + +# ensure lower case +typeset -l boot_device=$(getprop $boot_device_prop) +# drop suffixes +boot_device=${boot_device%[_-]*} +notice "matching to boot device '$boot_device'" + +# add 'validation' to permanent parameters +add_device_params validation + +for line in $(exec_parser); do + get_attr_data_by_name product "name" $line + debug "attr='name' value='$product'" + if [ "$product" == "$boot_device" ]; then + get_attr_data_by_name xml_version "version" $line + [ "$xml_version" != "unknown" ] && notice "device '$boot_device' xml version='$xml_version'" + break + fi +done + +[ "$xml_version" == "unknown" ] && notice "no match found for device '$boot_device'" +# delete obsolete 'version' utag if exists +[ -d $hw_mp/${ver_utag#?} ] && $(echo ${ver_utag#?} > $hw_mp/all/delete) +# read procfs version +[ -d $hw_mp/$ver_utag ] && version_fs=$(cat $hw_mp/$ver_utag/ascii) +notice "procfs version='$version_fs'" +# add 'device' and '$boot_device' to permanent parameters +add_device_params device $boot_device +[ "$xml_version" == "$version_fs" ] && notice "hw descriptor is up to date" +for section in $(exec_parser); do + debug "section='$section'" + case $section in + mappings) + # add 'mappings' to permanent parameters + add_device_params $section + process_mappings & + ;; + *) + [ "$xml_version" == "$version_fs" ] && continue + populate_utags $section;; + esac +done + +if [ "$xml_version" != "$version_fs" ]; then + # create version utag if it's missing + [ ! -d $hw_mp/$ver_utag ] && $(echo "$ver_utag" > $hw_mp/all/new) + # update procfs version + [ -d $hw_mp/$ver_utag ] && $(echo "$xml_version" > $hw_mp/$ver_utag/ascii) +fi + +set_ro_vendor_incremental & + +set_ro_hw_properties + +if [ "$utag_update_fail" == "true" ]; then + set_ro_hw_properties_upgrade +fi + +wait + +notice "script init.oem.hw.sh finish " +return 0 + diff --git a/rootdir/bin/init.qcom.class_core.sh b/rootdir/bin/init.qcom.class_core.sh new file mode 100644 index 0000000..9ac861b --- /dev/null +++ b/rootdir/bin/init.qcom.class_core.sh @@ -0,0 +1,146 @@ +#!/vendor/bin/sh + +# Copyright (c) 2012-2013, 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. +# + +# Set platform variables +target=`getprop ro.board.platform` +if [ -f /sys/devices/soc0/hw_platform ]; then + soc_hwplatform=`cat /sys/devices/soc0/hw_platform` 2> /dev/null +else + soc_hwplatform=`cat /sys/devices/system/soc/soc0/hw_platform` 2> /dev/null +fi +if [ -f /sys/devices/soc0/soc_id ]; then + soc_hwid=`cat /sys/devices/soc0/soc_id` 2> /dev/null +else + soc_hwid=`cat /sys/devices/system/soc/soc0/id` 2> /dev/null +fi +if [ -f /sys/devices/soc0/platform_version ]; then + soc_hwver=`cat /sys/devices/soc0/platform_version` 2> /dev/null +else + soc_hwver=`cat /sys/devices/system/soc/soc0/platform_version` 2> /dev/null +fi + + +# Dynamic Memory Managment (DMM) provides a sys file system to the userspace +# that can be used to plug in/out memory that has been configured as unstable. +# This unstable memory can be in Active or In-Active State. +# Each of which the userspace can request by writing to a sys file. +# +# ro.dev.dmm = 1; Indicates that DMM is enabled in the Android User Space. This +# property is set in the Android system properties file. +# +# If ro.dev.dmm.dpd.start_address is set here then the target has a memory +# configuration that supports DynamicMemoryManagement. +init_DMM() +{ + block=-1 + + case "$target" in + "msm7630_surf" | "msm7630_1x" | "msm7630_fusion" | "msm8960") + ;; + *) + return + ;; + esac + + mem="/sys/devices/system/memory" + op=`cat $mem/movable_start_bytes` + case "$op" in + "0") + log -p i -t DMM DMM Disabled. movable_start_bytes not set: $op + ;; + + "$mem/movable_start_bytes: No such file or directory ") + log -p i -t DMM DMM Disabled. movable_start_bytes does not exist: $op + ;; + + *) + log -p i -t DMM DMM available. movable_start_bytes at $op + movable_start_bytes=0x`cat $mem/movable_start_bytes` + block_size_bytes=0x`cat $mem/block_size_bytes` + block=$((#${movable_start_bytes}/${block_size_bytes})) + + chown -h system.system $mem/memory$block/state + chown -h system.system $mem/probe + chown -h system.system $mem/active + chown -h system.system $mem/remove + + case "$target" in + "msm7630_surf" | "msm7630_1x" | "msm7630_fusion") + echo $movable_start_bytes > $mem/probe + case "$?" in + "0") + log -p i -t DMM $movable_start_bytes to physical hotplug succeeded. + ;; + *) + log -p e -t DMM $movable_start_bytes to physical hotplug failed. + return + ;; + esac + + echo online > $mem/memory$block/state + case "$?" in + "0") + log -p i -t DMM \'echo online\' to logical hotplug succeeded. + ;; + *) + log -p e -t DMM \'echo online\' to logical hotplug failed. + return + ;; + esac + ;; + esac + + setprop ro.dev.dmm.dpd.start_address $movable_start_bytes + setprop ro.dev.dmm.dpd.block $block + ;; + esac + + case "$target" in + "msm8960") + return + ;; + esac + + # For 7X30 targets: + # ro.dev.dmm.dpd.start_address is set when the target has a 2x256Mb memory + # configuration. This is also used to indicate that the target is capable of + # setting EBI-1 to Deep Power Down or Self Refresh. + op=`cat $mem/low_power_memory_start_bytes` + case "$op" in + "0") + log -p i -t DMM Self-Refresh-Only Disabled. low_power_memory_start_bytes not set:$op + ;; + "$mem/low_power_memory_start_bytes No such file or directory ") + log -p i -t DMM Self-Refresh-Only Disabled. low_power_memory_start_bytes does not exist:$op + ;; + *) + log -p i -t DMM Self-Refresh-Only available. low_power_memory_start_bytes at $op + ;; + esac +} diff --git a/rootdir/bin/init.qcom.coex.sh b/rootdir/bin/init.qcom.coex.sh new file mode 100644 index 0000000..a9a22f1 --- /dev/null +++ b/rootdir/bin/init.qcom.coex.sh @@ -0,0 +1,115 @@ +#! /vendor/bin/sh + +# Copyright (c) 2009-2010, 2012, 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. + +LOG_TAG="qcom-bt-wlan-coex" +LOG_NAME="${0}:" + +coex_pid="" +ath_wlan_supported=`getprop wlan.driver.ath` + +loge () +{ + /system/bin/log -t $LOG_TAG -p e "$LOG_NAME $@" +} + +logi () +{ + /system/bin/log -t $LOG_TAG -p i "$LOG_NAME $@" +} + +failed () +{ + loge "$1: exit code $2" + exit $2 +} + +start_coex () +{ + case "$ath_wlan_supported" in + "2") + echo "ATH WLAN Chip ID AR6004 is enabled" + /system/bin/abtfilt -d -z -n -m -a -w wlan0 & + ;; + "1") + echo "ATH WLAN Chip ID is enabled" + # Must have -d -z -n -v -s -w wlan0 parameters for atheros btfilter. + /system/bin/abtfilt -d -z -n -v -q -s -w wlan0 & + ;; + "0") + echo "WCN WLAN Chip ID is enabled" + # Must have -o turned on to avoid daemon (otherwise we cannot get pid) + /system/bin/btwlancoex -o $opt_flags & + ;; + *) + echo "NO WLAN Chip ID is enabled, so enabling ATH as default" + # Must have -d -z -n -v -s -w wlan0 parameters for atheros btfilter. + /system/bin/abtfilt -d -z -n -v -q -s -w wlan0 & + ;; + esac + coex_pid=$! + logi "start_coex: pid = $coex_pid" +} + +kill_coex () +{ + logi "kill_coex: pid = $coex_pid" + kill -TERM $coex_pid + # this shell doesn't exit now -- wait returns for normal exit +} + +# mimic coex options parsing -- maybe a waste of effort +USAGE="${0} [-o] [-c] [-r] [-i] [-h]" + +while getopts "ocrih" f +do + case $f in + o | c | r | i | h) opt_flags="$opt_flags -$f" ;; + \?) echo $USAGE; exit 1;; + esac +done + +# init does SIGTERM on ctl.stop for service +trap "kill_coex" TERM INT + +#Selectively start coex module +target=`getprop ro.board.platform` + +if [ "$target" == "msm8960" ] && [ "$ath_wlan_supported" != "2" ]; then + logi "btwlancoex/abtfilt is not needed" +else + # Build settings may not produce the coex executable + if ls /system/bin/btwlancoex || ls /system/bin/abtfilt + then + start_coex + wait $coex_pid + logi "Coex stopped" + else + logi "btwlancoex/abtfilt not available" + fi +fi +exit 0 diff --git a/rootdir/bin/init.qcom.crashdata.sh b/rootdir/bin/init.qcom.crashdata.sh new file mode 100644 index 0000000..59cf68d --- /dev/null +++ b/rootdir/bin/init.qcom.crashdata.sh @@ -0,0 +1,48 @@ +#!/vendor/bin/sh +# 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. +# + +abnormalcnt="persist.vendor.crash.cnt" + +abnormal_cnt=`getprop $abnormalcnt` +crash_detect=`getprop persist.vendor.crash.detect` + +if [ "$abnormal_cnt" = "" ] +then +setprop $abnormalcnt 0 +fi + +if [ "$crash_detect" = "true" ] +then +abnormal_cnt=`expr $abnormal_cnt + 1` +setprop $abnormalcnt $abnormal_cnt +elif [ "$crash_detect" = "false" ];then +setprop persist.vendor.crash.detect true +else +setprop persist.vendor.crash.detect true +fi diff --git a/rootdir/bin/init.qcom.early_boot.sh b/rootdir/bin/init.qcom.early_boot.sh new file mode 100644 index 0000000..d7545de --- /dev/null +++ b/rootdir/bin/init.qcom.early_boot.sh @@ -0,0 +1,540 @@ +#! /vendor/bin/sh + +# Copyright (c) 2012-2013,2016,2018-2020 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. +# + +export PATH=/vendor/bin + +target_type=`getprop ro.hardware.type` +if [ "$target_type" == "automotive" ]; then + cd /sys/devices/system/memory/ + n=1 + addr=`cat aligned_blocks_addr | cut -d ',' -f $n` + num=`cat aligned_blocks_num | cut -d ',' -f $n` + while [ -n "$addr" ] + do + echo $addr > probe + echo online > memory$num/state + let n++ + addr=`cat aligned_blocks_addr | cut -d ',' -f $n` + num=`cat aligned_blocks_num | cut -d ',' -f $n` + done +fi + +# Set platform variables +if [ -f /sys/devices/soc0/hw_platform ]; then + soc_hwplatform=`cat /sys/devices/soc0/hw_platform` 2> /dev/null +else + soc_hwplatform=`cat /sys/devices/system/soc/soc0/hw_platform` 2> /dev/null +fi +if [ -f /sys/devices/soc0/soc_id ]; then + soc_hwid=`cat /sys/devices/soc0/soc_id` 2> /dev/null +else + soc_hwid=`cat /sys/devices/system/soc/soc0/id` 2> /dev/null +fi +if [ -f /sys/devices/soc0/platform_version ]; then + soc_hwver=`cat /sys/devices/soc0/platform_version` 2> /dev/null +else + soc_hwver=`cat /sys/devices/system/soc/soc0/platform_version` 2> /dev/null +fi + +if [ -f /sys/class/drm/card0-DSI-1/modes ]; then + echo "detect" > /sys/class/drm/card0-DSI-1/status + mode_file=/sys/class/drm/card0-DSI-1/modes + while read line; do + fb_width=${line%%x*}; + break; + done < $mode_file +elif [ -f /sys/class/drm/card0-DP-1/modes ]; then + echo "detect" > /sys/class/drm/card0-DP-1/status + is_dp_mode=1 + mode_file=/sys/class/drm/card0-DP-1/modes + while read line; do + fb_width=${line%%x*}; + break; + done < $mode_file +elif [ -f /sys/class/graphics/fb0/virtual_size ]; then + res=`cat /sys/class/graphics/fb0/virtual_size` 2> /dev/null + fb_width=${res%,*} +fi + +log -t BOOT -p i "MSM target '$1', SoC '$soc_hwplatform', HwID '$soc_hwid', SoC ver '$soc_hwver'" + +#For drm based display driver +vbfile=/sys/module/drm/parameters/vblankoffdelay +if [ -w $vbfile ]; then + echo -1 > $vbfile +else + log -t DRM_BOOT -p w "file: '$vbfile' or perms doesn't exist" +fi + +function set_density_by_fb() { + #put default density based on width + if [ -z $fb_width ]; then + if [ $is_dp_mode -eq 1 ]; then + return; + fi + setprop vendor.display.lcd_density 320 + else + if [ $fb_width -ge 1600 ]; then + setprop vendor.display.lcd_density 640 + elif [ $fb_width -ge 1440 ]; then + setprop vendor.display.lcd_density 560 + elif [ $fb_width -ge 1080 ]; then + setprop vendor.display.lcd_density 480 + elif [ $fb_width -ge 720 ]; then + setprop vendor.display.lcd_density 320 #for 720X1280 resolution + elif [ $fb_width -ge 480 ]; then + setprop vendor.display.lcd_density 240 #for 480X854 QRD resolution + else + setprop vendor.display.lcd_density 160 + fi + fi +} + +target=`getprop ro.board.platform` +case "$target" in + "msm7630_surf" | "msm7630_1x" | "msm7630_fusion") + case "$soc_hwplatform" in + "FFA" | "SVLTE_FFA") + # linking to surf_keypad_qwerty.kcm.bin instead of surf_keypad_numeric.kcm.bin so that + # the UI keyboard works fine. + ln -s /system/usr/keychars/surf_keypad_qwerty.kcm.bin /system/usr/keychars/surf_keypad.kcm.bin + ;; + "Fluid") + setprop vendor.display.lcd_density 240 + setprop qcom.bt.dev_power_class 2 + ;; + *) + ln -s /system/usr/keychars/surf_keypad_qwerty.kcm.bin /system/usr/keychars/surf_keypad.kcm.bin + ;; + esac + ;; + "sm6150") + case "$soc_hwplatform" in + "ADP") + setprop vendor.display.lcd_density 160 + ;; + esac + case "$soc_hwid" in + 365|366) + sku_ver=`cat /sys/devices/platform/soc/aa00000.qcom,vidc1/sku_version` 2> /dev/null + setprop vendor.media.target.version 1 + if [ $sku_ver -eq 1 ]; then + setprop vendor.media.target.version 2 + fi + ;; + 355|369|377|384) + setprop vendor.chre.enabled 0 + ;; + *) + esac + ;; + "msm8660") + case "$soc_hwplatform" in + "Fluid") + setprop vendor.display.lcd_density 240 + ;; + "Dragon") + setprop ro.sound.alsa "WM8903" + ;; + esac + ;; + + "msm8960") + # lcd density is write-once. Hence the separate switch case + case "$soc_hwplatform" in + "Liquid") + if [ "$soc_hwver" == "196608" ]; then # version 0x30000 is 3D sku + setprop ro.sf.hwrotation 90 + fi + + setprop vendor.display.lcd_density 160 + ;; + "MTP") + setprop vendor.display.lcd_density 240 + ;; + *) + case "$soc_hwid" in + "109") + setprop vendor.display.lcd_density 160 + ;; + *) + setprop vendor.display.lcd_density 240 + ;; + esac + ;; + esac + + #Set up composition type based on the target + case "$soc_hwid" in + 87) + #8960 + setprop debug.composition.type dyn + ;; + 153|154|155|156|157|138) + #8064 V2 PRIME | 8930AB | 8630AB | 8230AB | 8030AB | 8960AB + setprop debug.composition.type c2d + ;; + *) + esac + ;; + + "msm8974") + case "$soc_hwplatform" in + "Liquid") + setprop vendor.display.lcd_density 160 + # Liquid do not have hardware navigation keys, so enable + # Android sw navigation bar + setprop ro.hw.nav_keys 0 + ;; + "Dragon") + setprop vendor.display.lcd_density 240 + ;; + *) + setprop vendor.display.lcd_density 320 + ;; + esac + ;; + + "msm8226") + case "$soc_hwplatform" in + *) + setprop vendor.display.lcd_density 320 + ;; + esac + ;; + + "msm8610" | "apq8084" | "mpq8092") + case "$soc_hwplatform" in + *) + setprop vendor.display.lcd_density 240 + ;; + esac + ;; + "apq8084") + case "$soc_hwplatform" in + "Liquid") + setprop vendor.display.lcd_density 320 + # Liquid do not have hardware navigation keys, so enable + # Android sw navigation bar + setprop ro.hw.nav_keys 0 + ;; + "SBC") + setprop vendor.display.lcd_density 200 + # SBC do not have hardware navigation keys, so enable + # Android sw navigation bar + setprop qemu.hw.mainkeys 0 + ;; + *) + setprop vendor.display.lcd_density 480 + ;; + esac + ;; + "msm8996") + case "$soc_hwplatform" in + "Dragon") + setprop vendor.display.lcd_density 240 + setprop qemu.hw.mainkeys 0 + ;; + "ADP") + setprop vendor.display.lcd_density 160 + setprop qemu.hw.mainkeys 0 + ;; + "SBC") + setprop vendor.display.lcd_density 240 + setprop qemu.hw.mainkeys 0 + ;; + *) + setprop vendor.display.lcd_density 560 + ;; + esac + ;; + "msm8937" | "msm8940") + # Set vendor.opengles.version based on chip id. + # MSM8937 and MSM8940 variants supports OpenGLES 3.1 + # 196608 is decimal for 0x30000 to report version 3.0 + # 196609 is decimal for 0x30001 to report version 3.1 + # 196610 is decimal for 0x30002 to report version 3.2 + case "$soc_hwid" in + 294|295|296|297|298|313|353|354|363|364) + setprop vendor.opengles.version 196610 + if [ $soc_hwid = 354 ] + then + setprop vendor.media.target.version 1 + log -t BOOT -p i "SDM429 early_boot prop set for: HwID '$soc_hwid'" + fi + ;; + 303|307|308|309|320) + # Vulkan is not supported for 8917 variants + setprop vendor.opengles.version 196608 + setprop persist.graphics.vulkan.disable true + ;; + *) + setprop vendor.opengles.version 196608 + ;; + esac + ;; + "msm8909") + case "$soc_hwplatform" in + *) + setprop persist.graphics.vulkan.disable true + ;; + esac + ;; + "msm8998" | "apq8098_latv") + case "$soc_hwplatform" in + *) + setprop vendor.display.lcd_density 560 + ;; + esac + ;; + "qcs605") + case "$soc_hwplatform" in + *) + setprop vendor.display.lcd_density 640 + ;; + esac + ;; + "sdm845") + case "$soc_hwplatform" in + *) + if [ $fb_width -le 1600 ]; then + setprop vendor.display.lcd_density 560 + else + setprop vendor.display.lcd_density 640 + fi + ;; + esac + ;; + "msmnile") + case "$soc_hwplatform" in + *) + if [ $fb_width -le 1600 ]; then + setprop vendor.display.lcd_density 560 + else + setprop vendor.display.lcd_density 640 + fi + ;; + esac + ;; + "kona") + case "$soc_hwplatform" in + *) + if [ $fb_width -le 1600 ]; then + setprop vendor.display.lcd_density 560 + else + setprop vendor.display.lcd_density 640 + fi + ;; + esac + ;; + "lito") + case "$soc_hwid" in + 400|440) + sku_ver=`cat /sys/devices/platform/soc/aa00000.qcom,vidc1/sku_version` 2> /dev/null + if [ $sku_ver -eq 1 ]; then + setprop vendor.media.target.version 1 + fi + ;; + 434|459) + sku_ver=`cat /sys/devices/platform/soc/aa00000.qcom,vidc1/sku_version` 2> /dev/null + setprop vendor.media.target.version 2 + if [ $sku_ver -eq 1 ]; then + setprop vendor.media.target.version 3 + fi + ;; + esac + ;; + "bengal") + case "$soc_hwid" in + 441) + # 441 is for scuba + setprop vendor.fastrpc.disable.cdsprpcd.daemon 1 + setprop vendor.media.target.version 2 + setprop vendor.gralloc.disable_ubwc 1 + # 196609 is decimal for 0x30001 to report version 3.1 + setprop vendor.opengles.version 196609 + sku_ver=`cat /sys/devices/platform/soc/5a00000.qcom,vidc1/sku_version` 2> /dev/null + if [ $sku_ver -eq 1 ]; then + setprop vendor.media.target.version 3 + fi + ;; + 471) + #scuba APQ + setprop vendor.fastrpc.disable.cdsprpcd.daemon 1 + setprop vendor.gralloc.disable_ubwc 1 + ;; + *) + # default case is for bengal + setprop vendor.opengles.version 196610 + sku_ver=`cat /sys/devices/platform/soc/5a00000.qcom,vidc/sku_version` 2> /dev/null + if [ $sku_ver -eq 1 ]; then + setprop vendor.media.target.version 1 + fi + ;; + esac + ;; + "sdm710" | "msmpeafowl") + case "$soc_hwplatform" in + *) + sku_ver=`cat /sys/devices/platform/soc/aa00000.qcom,vidc1/sku_version` 2> /dev/null + if [ $sku_ver -eq 1 ]; then + setprop vendor.media.target.version 1 + fi + ;; + esac + ;; + "msm8953") + cap_ver = 1 + if [ -e "/sys/devices/platform/soc/1d00000.qcom,vidc/capability_version" ]; then + cap_ver=`cat /sys/devices/platform/soc/1d00000.qcom,vidc/capability_version` 2> /dev/null + else + cap_ver=`cat /sys/devices/soc/1d00000.qcom,vidc/capability_version` 2> /dev/null + fi + + if [ $cap_ver -eq 1 ]; then + setprop vendor.media.target.version 1 + fi + ;; + #Set property to differentiate SDM660 & SDM455 + #SOC ID for SDM455 is 385 + "sdm660") + case "$soc_hwid" in + 385) + setprop vendor.media.target.version 1 + esac + ;; +esac + +baseband=`getprop ro.baseband` +#enable atfwd daemon all targets except sda, apq, qcs +case "$baseband" in + "apq" | "sda" | "qcs" ) + setprop persist.vendor.radio.atfwd.start false;; + *) + setprop persist.vendor.radio.atfwd.start true;; +esac + +#set default lcd density +#Since lcd density has read only +#property, it will not overwrite previous set +#property if any target is setting forcefully. +set_density_by_fb + + +# set Lilliput LCD density for ADP +product=`getprop ro.build.product` + +case "$product" in + "msmnile_au") + setprop vendor.display.lcd_density 160 + echo 902400000 > /sys/class/devfreq/soc:qcom,cpu0-cpu-l3-lat/min_freq + echo 1612800000 > /sys/class/devfreq/soc:qcom,cpu0-cpu-l3-lat/max_freq + echo 902400000 > /sys/class/devfreq/soc:qcom,cpu4-cpu-l3-lat/min_freq + echo 1612800000 > /sys/class/devfreq/soc:qcom,cpu4-cpu-l3-lat/max_freq + ;; + *) + ;; +esac +case "$product" in + "sm6150_au") + setprop vendor.display.lcd_density 160 + ;; + *) + ;; +esac +case "$product" in + "sdmshrike_au") + setprop vendor.display.lcd_density 160 + echo 940800000 > /sys/class/devfreq/soc:qcom,cpu0-cpu-l3-lat/min_freq + echo 940800000 > /sys/class/devfreq/soc:qcom,cpu4-cpu-l3-lat/min_freq + ;; + *) + ;; +esac + +case "$product" in + "msmnile_gvmq") + setprop vendor.display.lcd_density 160 + ;; + *) + ;; +esac +# Setup display nodes & permissions +# HDMI can be fb1 or fb2 +# Loop through the sysfs nodes and determine +# the HDMI(dtv panel) + +function set_perms() { + #Usage set_perms + chown -h $2 $1 + chmod $3 $1 +} + +# check for the type of driver FB or DRM +fb_driver=/sys/class/graphics/fb0 +if [ -e "$fb_driver" ] +then + # check for mdp caps + file=/sys/class/graphics/fb0/mdp/caps + if [ -f "$file" ] + then + setprop vendor.gralloc.disable_ubwc 1 + cat $file | while read line; do + case "$line" in + *"ubwc"*) + setprop vendor.gralloc.enable_fb_ubwc 1 + setprop vendor.gralloc.disable_ubwc 0 + esac + done + fi +fi + + +drm_driver=/sys/class/drm/card0 +if [ -e "$drm_driver" ]; then + set_perms /sys/devices/virtual/hdcp/msm_hdcp/min_level_change system.graphics 0660 +fi + +# allow system_graphics group to access pmic secure_mode node +set_perms /sys/class/lcd_bias/secure_mode system.graphics 0660 +set_perms /sys/class/leds/wled/secure_mode system.graphics 0660 + +boot_reason=`cat /proc/sys/kernel/boot_reason` +reboot_reason=`getprop ro.boot.alarmboot` +if [ "$boot_reason" = "3" ] || [ "$reboot_reason" = "true" ]; then + setprop ro.vendor.alarm_boot true +else + setprop ro.vendor.alarm_boot false +fi + +# copy GPU frequencies to vendor property +if [ -f /sys/class/kgsl/kgsl-3d0/gpu_available_frequencies ]; then + gpu_freq=`cat /sys/class/kgsl/kgsl-3d0/gpu_available_frequencies` 2> /dev/null + setprop vendor.gpu.available_frequencies "$gpu_freq" +fi diff --git a/rootdir/bin/init.qcom.efs.sync.sh b/rootdir/bin/init.qcom.efs.sync.sh new file mode 100644 index 0000000..5e7bfa1 --- /dev/null +++ b/rootdir/bin/init.qcom.efs.sync.sh @@ -0,0 +1,35 @@ +#! /vendor/bin/sh + +# Copyright (c) 2012, 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. +# +# + +PATH=/system/bin:$PATH +export PATH +cat /sys/devices/platform/rs300000a7.65536/force_sync +cat /sys/devices/platform/rs300100a7.65536/force_sync diff --git a/rootdir/bin/init.qcom.post_boot.sh b/rootdir/bin/init.qcom.post_boot.sh new file mode 100644 index 0000000..72defe5 --- /dev/null +++ b/rootdir/bin/init.qcom.post_boot.sh @@ -0,0 +1,5991 @@ +#! /vendor/bin/sh + +# Copyright (c) 2012-2013, 2016-2020, 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. +# + +function 8953_sched_dcvs_eas() +{ + #governor settings + echo 1 > /sys/devices/system/cpu/cpu0/online + echo "schedutil" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor + echo 0 > /sys/devices/system/cpu/cpufreq/schedutil/rate_limit_us + #set the hispeed_freq + echo 1401600 > /sys/devices/system/cpu/cpufreq/schedutil/hispeed_freq + #default value for hispeed_load is 90, for 8953 and sdm450 it should be 85 + echo 85 > /sys/devices/system/cpu/cpufreq/schedutil/hispeed_load +} + +function 8917_sched_dcvs_eas() +{ + #governor settings + echo 1 > /sys/devices/system/cpu/cpu0/online + echo "schedutil" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor + echo 0 > /sys/devices/system/cpu/cpufreq/schedutil/rate_limit_us + #set the hispeed_freq + echo 1094400 > /sys/devices/system/cpu/cpufreq/schedutil/hispeed_freq + #default value for hispeed_load is 90, for 8917 it should be 85 + echo 85 > /sys/devices/system/cpu/cpufreq/schedutil/hispeed_load +} + +function 8937_sched_dcvs_eas() +{ + # enable governor for perf cluster + echo 1 > /sys/devices/system/cpu/cpu0/online + echo "schedutil" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor + echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/rate_limit_us + #set the hispeed_freq + echo 1094400 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/hispeed_freq + #default value for hispeed_load is 90, for 8937 it should be 85 + echo 85 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/hispeed_load + ## enable governor for power cluster + echo 1 > /sys/devices/system/cpu/cpu4/online + echo "schedutil" > /sys/devices/system/cpu/cpu4/cpufreq/scaling_governor + echo 0 > /sys/devices/system/cpu/cpu4/cpufreq/schedutil/rate_limit_us + #set the hispeed_freq + echo 768000 > /sys/devices/system/cpu/cpu4/cpufreq/schedutil/hispeed_freq + #default value for hispeed_load is 90, for 8937 it should be 85 + echo 85 > /sys/devices/system/cpu/cpu4/cpufreq/schedutil/hispeed_load + +} + +function configure_automotive_sku_parameters() { + + echo 1036800 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq + echo 1056000 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_min_freq + echo 1171200 > /sys/devices/system/cpu/cpu7/cpufreq/scaling_min_freq + echo 1785600 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq + echo 902400000 > /sys/class/devfreq/soc\:qcom,cpu0-cpu-l3-lat/min_freq + echo 902400000 > /sys/class/devfreq/soc\:qcom,cpu4-cpu-l3-lat/min_freq + echo 902400000 > /sys/class/devfreq/soc\:qcom,cpu7-cpu-l3-lat/min_freq + echo 1612800000 > /sys/class/devfreq/soc\:qcom,cpu0-cpu-l3-lat/max_freq + echo 1612800000 > /sys/class/devfreq/soc\:qcom,cpu4-cpu-l3-lat/max_freq + echo 1612800000 > /sys/class/devfreq/soc\:qcom,cpu7-cpu-l3-lat/max_freq +#read feature id from nvram +reg_val=`cat /sys/devices/platform/soc/780130.qfprom/qfprom0/nvmem | od -An -t d4` +feature_id=$(((reg_val >> 20) & 0xFF)) +log -t BOOT -p i "feature id '$feature_id'" +if [ $feature_id == 0 ]; then + echo " SKU Configured : SA8155P" + echo 2131200 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_max_freq + echo 2419200 > /sys/devices/system/cpu/cpu7/cpufreq/scaling_max_freq + echo 0 > /sys/class/kgsl/kgsl-3d0/max_pwrlevel +elif [ $feature_id == 1 ]; then + echo "SKU Configured : SA8150P" + echo 1920000 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_max_freq + echo 2227200 > /sys/devices/system/cpu/cpu7/cpufreq/scaling_max_freq + echo 3 > /sys/class/kgsl/kgsl-3d0/max_pwrlevel +else + echo "unknown feature_id value" $feature_id +fi +} + +function configure_sku_parameters() { + +#read feature id from nvram +reg_val=`cat /sys/devices/platform/soc/780130.qfprom/qfprom0/nvmem | od -An -t d4` +feature_id=$(((reg_val >> 20) & 0xFF)) +log -t BOOT -p i "feature id '$feature_id'" +if [ $feature_id == 6 ]; then + echo " SKU Configured : SA6145" + echo 748800 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq + echo 748800 > /sys/devices/system/cpu/cpu1/cpufreq/scaling_min_freq + echo 748800 > /sys/devices/system/cpu/cpu2/cpufreq/scaling_min_freq + echo 748800 > /sys/devices/system/cpu/cpu3/cpufreq/scaling_min_freq + echo 748800 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_min_freq + echo 748800 > /sys/devices/system/cpu/cpu5/cpufreq/scaling_min_freq + echo 1017600 > /sys/devices/system/cpu/cpu6/cpufreq/scaling_min_freq + echo 1017600 > /sys/devices/system/cpu/cpu7/cpufreq/scaling_min_freq + echo 748800 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq + echo 748800 > /sys/devices/system/cpu/cpu1/cpufreq/scaling_max_freq + echo 748800 > /sys/devices/system/cpu/cpu2/cpufreq/scaling_max_freq + echo 748800 > /sys/devices/system/cpu/cpu3/cpufreq/scaling_max_freq + echo 748800 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_max_freq + echo 748800 > /sys/devices/system/cpu/cpu5/cpufreq/scaling_max_freq + echo 1017600 > /sys/devices/system/cpu/cpu6/cpufreq/scaling_max_freq + echo 1017600 > /sys/devices/system/cpu/cpu7/cpufreq/scaling_max_freq + echo 940800000 > /sys/class/devfreq/soc\:qcom,cpu0-cpu-l3-lat/min_freq + echo 1017600000 > /sys/class/devfreq/soc\:qcom,cpu0-cpu-l3-lat/max_freq + echo 940800000 > /sys/class/devfreq/soc\:qcom,cpu6-cpu-l3-lat/min_freq + echo 1017600000 > /sys/class/devfreq/soc\:qcom,cpu6-cpu-l3-lat/max_freq + echo 3 > /sys/class/kgsl/kgsl-3d0/max_pwrlevel + echo {class:ddr, res:capped, val: 1016} > /sys/kernel/debug/aop_send_message + setprop vendor.sku_identified 1 + setprop vendor.sku_name "SA6145" +elif [ $feature_id == 5 ]; then + echo "SKU Configured : SA6150" + echo 748800 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq + echo 748800 > /sys/devices/system/cpu/cpu1/cpufreq/scaling_min_freq + echo 748800 > /sys/devices/system/cpu/cpu2/cpufreq/scaling_min_freq + echo 748800 > /sys/devices/system/cpu/cpu3/cpufreq/scaling_min_freq + echo 748800 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_min_freq + echo 748800 > /sys/devices/system/cpu/cpu5/cpufreq/scaling_min_freq + echo 1017600 > /sys/devices/system/cpu/cpu6/cpufreq/scaling_min_freq + echo 1017600 > /sys/devices/system/cpu/cpu7/cpufreq/scaling_min_freq + echo 998400 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq + echo 998400 > /sys/devices/system/cpu/cpu1/cpufreq/scaling_max_freq + echo 998400 > /sys/devices/system/cpu/cpu2/cpufreq/scaling_max_freq + echo 998400 > /sys/devices/system/cpu/cpu3/cpufreq/scaling_max_freq + echo 998400 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_max_freq + echo 998400 > /sys/devices/system/cpu/cpu5/cpufreq/scaling_max_freq + echo 1708800 > /sys/devices/system/cpu/cpu6/cpufreq/scaling_max_freq + echo 1708800 > /sys/devices/system/cpu/cpu7/cpufreq/scaling_max_freq + echo 940800000 > /sys/class/devfreq/soc\:qcom,cpu0-cpu-l3-lat/min_freq + echo 1363200000 > /sys/class/devfreq/soc\:qcom,cpu0-cpu-l3-lat/max_freq + echo 940800000 > /sys/class/devfreq/soc\:qcom,cpu6-cpu-l3-lat/min_freq + echo 1363200000 > /sys/class/devfreq/soc\:qcom,cpu6-cpu-l3-lat/max_freq + echo 2 > /sys/class/kgsl/kgsl-3d0/max_pwrlevel + echo {class:ddr, res:capped, val: 1333} > /sys/kernel/debug/aop_send_message + setprop vendor.sku_identified 1 + setprop vendor.sku_name "SA6150" +elif [ $feature_id == 4 ] || [ $feature_id == 3 ]; then + echo "SKU Configured : SA6155" + echo 748800 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq + echo 748800 > /sys/devices/system/cpu/cpu1/cpufreq/scaling_min_freq + echo 748800 > /sys/devices/system/cpu/cpu2/cpufreq/scaling_min_freq + echo 748800 > /sys/devices/system/cpu/cpu3/cpufreq/scaling_min_freq + echo 748800 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_min_freq + echo 748800 > /sys/devices/system/cpu/cpu5/cpufreq/scaling_min_freq + echo 1017600 > /sys/devices/system/cpu/cpu6/cpufreq/scaling_min_freq + echo 1017600 > /sys/devices/system/cpu/cpu7/cpufreq/scaling_min_freq + echo 1593600 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq + echo 1593600 > /sys/devices/system/cpu/cpu1/cpufreq/scaling_max_freq + echo 1593600 > /sys/devices/system/cpu/cpu2/cpufreq/scaling_max_freq + echo 1593600 > /sys/devices/system/cpu/cpu3/cpufreq/scaling_max_freq + echo 1593600 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_max_freq + echo 1593600 > /sys/devices/system/cpu/cpu5/cpufreq/scaling_max_freq + echo 1900800 > /sys/devices/system/cpu/cpu6/cpufreq/scaling_max_freq + echo 1900800 > /sys/devices/system/cpu/cpu7/cpufreq/scaling_max_freq + echo 940800000 > /sys/class/devfreq/soc\:qcom,cpu0-cpu-l3-lat/min_freq + echo 1363200000 > /sys/class/devfreq/soc\:qcom,cpu0-cpu-l3-lat/max_freq + echo 940800000 > /sys/class/devfreq/soc\:qcom,cpu6-cpu-l3-lat/min_freq + echo 1363200000 > /sys/class/devfreq/soc\:qcom,cpu6-cpu-l3-lat/max_freq + echo 0 > /sys/class/kgsl/kgsl-3d0/max_pwrlevel + echo {class:ddr, res:capped, val: 1555} > /sys/kernel/debug/aop_send_message + setprop vendor.sku_identified 1 + setprop vendor.sku_name "SA6155" +else + echo "SKU Configured : SA6155" + echo 748800 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq + echo 748800 > /sys/devices/system/cpu/cpu1/cpufreq/scaling_min_freq + echo 748800 > /sys/devices/system/cpu/cpu2/cpufreq/scaling_min_freq + echo 748800 > /sys/devices/system/cpu/cpu3/cpufreq/scaling_min_freq + echo 748800 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_min_freq + echo 748800 > /sys/devices/system/cpu/cpu5/cpufreq/scaling_min_freq + echo 1017600 > /sys/devices/system/cpu/cpu6/cpufreq/scaling_min_freq + echo 1017600 > /sys/devices/system/cpu/cpu7/cpufreq/scaling_min_freq + echo 1593600 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq + echo 1593600 > /sys/devices/system/cpu/cpu1/cpufreq/scaling_max_freq + echo 1593600 > /sys/devices/system/cpu/cpu2/cpufreq/scaling_max_freq + echo 1593600 > /sys/devices/system/cpu/cpu3/cpufreq/scaling_max_freq + echo 1593600 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_max_freq + echo 1593600 > /sys/devices/system/cpu/cpu5/cpufreq/scaling_max_freq + echo 1900800 > /sys/devices/system/cpu/cpu6/cpufreq/scaling_max_freq + echo 1900800 > /sys/devices/system/cpu/cpu7/cpufreq/scaling_max_freq + echo 940800000 > /sys/class/devfreq/soc\:qcom,cpu0-cpu-l3-lat/min_freq + echo 1363200000 > /sys/class/devfreq/soc\:qcom,cpu0-cpu-l3-lat/max_freq + echo 940800000 > /sys/class/devfreq/soc\:qcom,cpu6-cpu-l3-lat/min_freq + echo 1363200000 > /sys/class/devfreq/soc\:qcom,cpu6-cpu-l3-lat/max_freq + echo 0 > /sys/class/kgsl/kgsl-3d0/max_pwrlevel + echo {class:ddr, res:capped, val: 1555} > /sys/kernel/debug/aop_send_message + setprop vendor.sku_identified 1 + setprop vendor.sku_name "SA6155" +fi +} + +function 8953_sched_dcvs_hmp() +{ + #scheduler settings + echo 3 > /proc/sys/kernel/sched_window_stats_policy + echo 3 > /proc/sys/kernel/sched_ravg_hist_size + #task packing settings + echo 0 > /sys/devices/system/cpu/cpu0/sched_static_cpu_pwr_cost + echo 0 > /sys/devices/system/cpu/cpu1/sched_static_cpu_pwr_cost + echo 0 > /sys/devices/system/cpu/cpu2/sched_static_cpu_pwr_cost + echo 0 > /sys/devices/system/cpu/cpu3/sched_static_cpu_pwr_cost + echo 0 > /sys/devices/system/cpu/cpu4/sched_static_cpu_pwr_cost + echo 0 > /sys/devices/system/cpu/cpu5/sched_static_cpu_pwr_cost + echo 0 > /sys/devices/system/cpu/cpu6/sched_static_cpu_pwr_cost + echo 0 > /sys/devices/system/cpu/cpu7/sched_static_cpu_pwr_cost + # spill load is set to 100% by default in the kernel + echo 3 > /proc/sys/kernel/sched_spill_nr_run + # Apply inter-cluster load balancer restrictions + echo 1 > /proc/sys/kernel/sched_restrict_cluster_spill + # set sync wakee policy tunable + echo 1 > /proc/sys/kernel/sched_prefer_sync_wakee_to_waker + + #governor settings + echo 1 > /sys/devices/system/cpu/cpu0/online + echo "interactive" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor + echo "19000 1401600:39000" > /sys/devices/system/cpu/cpufreq/interactive/above_hispeed_delay + echo 85 > /sys/devices/system/cpu/cpufreq/interactive/go_hispeed_load + echo 20000 > /sys/devices/system/cpu/cpufreq/interactive/timer_rate + echo 1401600 > /sys/devices/system/cpu/cpufreq/interactive/hispeed_freq + echo 0 > /sys/devices/system/cpu/cpufreq/interactive/io_is_busy + echo "85 1401600:80" > /sys/devices/system/cpu/cpufreq/interactive/target_loads + echo 39000 > /sys/devices/system/cpu/cpufreq/interactive/min_sample_time + echo 40000 > /sys/devices/system/cpu/cpufreq/interactive/sampling_down_factor + echo 19 > /proc/sys/kernel/sched_upmigrate_min_nice + # Enable sched guided freq control + echo 1 > /sys/devices/system/cpu/cpufreq/interactive/use_sched_load + echo 1 > /sys/devices/system/cpu/cpufreq/interactive/use_migration_notif + echo 200000 > /proc/sys/kernel/sched_freq_inc_notify + echo 200000 > /proc/sys/kernel/sched_freq_dec_notify + +} + +function 8917_sched_dcvs_hmp() +{ + # HMP scheduler settings + echo 3 > /proc/sys/kernel/sched_window_stats_policy + echo 3 > /proc/sys/kernel/sched_ravg_hist_size + echo 1 > /proc/sys/kernel/sched_restrict_tasks_spread + # HMP Task packing settings + echo 20 > /proc/sys/kernel/sched_small_task + echo 30 > /sys/devices/system/cpu/cpu0/sched_mostly_idle_load + echo 30 > /sys/devices/system/cpu/cpu1/sched_mostly_idle_load + echo 30 > /sys/devices/system/cpu/cpu2/sched_mostly_idle_load + echo 30 > /sys/devices/system/cpu/cpu3/sched_mostly_idle_load + + echo 3 > /sys/devices/system/cpu/cpu0/sched_mostly_idle_nr_run + echo 3 > /sys/devices/system/cpu/cpu1/sched_mostly_idle_nr_run + echo 3 > /sys/devices/system/cpu/cpu2/sched_mostly_idle_nr_run + echo 3 > /sys/devices/system/cpu/cpu3/sched_mostly_idle_nr_run + + echo 0 > /sys/devices/system/cpu/cpu0/sched_prefer_idle + echo 0 > /sys/devices/system/cpu/cpu1/sched_prefer_idle + echo 0 > /sys/devices/system/cpu/cpu2/sched_prefer_idle + echo 0 > /sys/devices/system/cpu/cpu3/sched_prefer_idle + + echo 1 > /sys/devices/system/cpu/cpu0/online + echo "interactive" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor + echo "19000 1094400:39000" > /sys/devices/system/cpu/cpufreq/interactive/above_hispeed_delay + echo 85 > /sys/devices/system/cpu/cpufreq/interactive/go_hispeed_load + echo 20000 > /sys/devices/system/cpu/cpufreq/interactive/timer_rate + echo 1094400 > /sys/devices/system/cpu/cpufreq/interactive/hispeed_freq + echo 0 > /sys/devices/system/cpu/cpufreq/interactive/io_is_busy + echo "1 960000:85 1094400:90" > /sys/devices/system/cpu/cpufreq/interactive/target_loads + echo 40000 > /sys/devices/system/cpu/cpufreq/interactive/min_sample_time + echo 40000 > /sys/devices/system/cpu/cpufreq/interactive/sampling_down_factor + + # Enable sched guided freq control + echo 1 > /sys/devices/system/cpu/cpufreq/interactive/use_sched_load + echo 1 > /sys/devices/system/cpu/cpufreq/interactive/use_migration_notif + echo 50000 > /proc/sys/kernel/sched_freq_inc_notify + echo 50000 > /proc/sys/kernel/sched_freq_dec_notify +} + +function 8937_sched_dcvs_hmp() +{ + # HMP scheduler settings + echo 3 > /proc/sys/kernel/sched_window_stats_policy + echo 3 > /proc/sys/kernel/sched_ravg_hist_size + # HMP Task packing settings + echo 20 > /proc/sys/kernel/sched_small_task + echo 30 > /sys/devices/system/cpu/cpu0/sched_mostly_idle_load + echo 30 > /sys/devices/system/cpu/cpu1/sched_mostly_idle_load + echo 30 > /sys/devices/system/cpu/cpu2/sched_mostly_idle_load + echo 30 > /sys/devices/system/cpu/cpu3/sched_mostly_idle_load + echo 30 > /sys/devices/system/cpu/cpu4/sched_mostly_idle_load + echo 30 > /sys/devices/system/cpu/cpu5/sched_mostly_idle_load + echo 30 > /sys/devices/system/cpu/cpu6/sched_mostly_idle_load + echo 30 > /sys/devices/system/cpu/cpu7/sched_mostly_idle_load + + echo 3 > /sys/devices/system/cpu/cpu0/sched_mostly_idle_nr_run + echo 3 > /sys/devices/system/cpu/cpu1/sched_mostly_idle_nr_run + echo 3 > /sys/devices/system/cpu/cpu2/sched_mostly_idle_nr_run + echo 3 > /sys/devices/system/cpu/cpu3/sched_mostly_idle_nr_run + echo 3 > /sys/devices/system/cpu/cpu4/sched_mostly_idle_nr_run + echo 3 > /sys/devices/system/cpu/cpu5/sched_mostly_idle_nr_run + echo 3 > /sys/devices/system/cpu/cpu6/sched_mostly_idle_nr_run + echo 3 > /sys/devices/system/cpu/cpu7/sched_mostly_idle_nr_run + + echo 0 > /sys/devices/system/cpu/cpu0/sched_prefer_idle + echo 0 > /sys/devices/system/cpu/cpu1/sched_prefer_idle + echo 0 > /sys/devices/system/cpu/cpu2/sched_prefer_idle + echo 0 > /sys/devices/system/cpu/cpu3/sched_prefer_idle + echo 0 > /sys/devices/system/cpu/cpu4/sched_prefer_idle + echo 0 > /sys/devices/system/cpu/cpu5/sched_prefer_idle + echo 0 > /sys/devices/system/cpu/cpu6/sched_prefer_idle + echo 0 > /sys/devices/system/cpu/cpu7/sched_prefer_idle + # enable governor for perf cluster + echo 1 > /sys/devices/system/cpu/cpu0/online + echo "interactive" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor + echo "19000 1094400:39000" > /sys/devices/system/cpu/cpu0/cpufreq/interactive/above_hispeed_delay + echo 85 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/go_hispeed_load + echo 20000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/timer_rate + echo 1094400 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/hispeed_freq + echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/io_is_busy + echo "1 960000:85 1094400:90 1344000:80" > /sys/devices/system/cpu/cpu0/cpufreq/interactive/target_loads + echo 40000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/min_sample_time + echo 40000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/sampling_down_factor + + # enable governor for power cluster + echo 1 > /sys/devices/system/cpu/cpu4/online + echo "interactive" > /sys/devices/system/cpu/cpu4/cpufreq/scaling_governor + echo 39000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/above_hispeed_delay + echo 90 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/go_hispeed_load + echo 20000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/timer_rate + echo 768000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/hispeed_freq + echo 0 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/io_is_busy + echo "1 768000:90" > /sys/devices/system/cpu/cpu4/cpufreq/interactive/target_loads + echo 40000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/min_sample_time + echo 40000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/sampling_down_factor + + # Enable sched guided freq control + echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/use_sched_load + echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/use_migration_notif + echo 1 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/use_sched_load + echo 1 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/use_migration_notif + echo 50000 > /proc/sys/kernel/sched_freq_inc_notify + echo 50000 > /proc/sys/kernel/sched_freq_dec_notify + +} + +function sdm660_sched_interactive_dcvs() { + + echo 0 > /proc/sys/kernel/sched_select_prev_cpu_us + echo 400000 > /proc/sys/kernel/sched_freq_inc_notify + echo 400000 > /proc/sys/kernel/sched_freq_dec_notify + echo 5 > /proc/sys/kernel/sched_spill_nr_run + echo 1 > /proc/sys/kernel/sched_restrict_cluster_spill + echo 100000 > /proc/sys/kernel/sched_short_burst_ns + echo 1 > /proc/sys/kernel/sched_prefer_sync_wakee_to_waker + echo 20 > /proc/sys/kernel/sched_small_wakee_task_load + + # disable thermal bcl hotplug to switch governor + echo 0 > /sys/module/msm_thermal/core_control/enabled + + # online CPU0 + echo 1 > /sys/devices/system/cpu/cpu0/online + # configure governor settings for little cluster + echo "interactive" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor + echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/use_sched_load + echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/use_migration_notif + echo "19000 1401600:39000" > /sys/devices/system/cpu/cpu0/cpufreq/interactive/above_hispeed_delay + echo 90 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/go_hispeed_load + echo 20000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/timer_rate + echo 1401600 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/hispeed_freq + echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/io_is_busy + echo "85 1747200:95" > /sys/devices/system/cpu/cpu0/cpufreq/interactive/target_loads + echo 39000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/min_sample_time + echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/max_freq_hysteresis + echo 633600 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq + echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/ignore_hispeed_on_notif + echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/fast_ramp_down + # online CPU4 + echo 1 > /sys/devices/system/cpu/cpu4/online + # configure governor settings for big cluster + echo "interactive" > /sys/devices/system/cpu/cpu4/cpufreq/scaling_governor + echo 1 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/use_sched_load + echo 1 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/use_migration_notif + echo "19000 1401600:39000" > /sys/devices/system/cpu/cpu4/cpufreq/interactive/above_hispeed_delay + echo 90 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/go_hispeed_load + echo 20000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/timer_rate + echo 1401600 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/hispeed_freq + echo 0 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/io_is_busy + echo "85 1401600:90 2150400:95" > /sys/devices/system/cpu/cpu4/cpufreq/interactive/target_loads + echo 39000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/min_sample_time + echo 59000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/max_freq_hysteresis + echo 1113600 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_min_freq + echo 1 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/ignore_hispeed_on_notif + echo 1 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/fast_ramp_down + + # bring all cores online + echo 1 > /sys/devices/system/cpu/cpu0/online + echo 1 > /sys/devices/system/cpu/cpu1/online + echo 1 > /sys/devices/system/cpu/cpu2/online + echo 1 > /sys/devices/system/cpu/cpu3/online + echo 1 > /sys/devices/system/cpu/cpu4/online + echo 1 > /sys/devices/system/cpu/cpu5/online + echo 1 > /sys/devices/system/cpu/cpu6/online + echo 1 > /sys/devices/system/cpu/cpu7/online + + # configure LPM + echo N > /sys/module/lpm_levels/system/pwr/cpu0/ret/idle_enabled + echo N > /sys/module/lpm_levels/system/pwr/cpu1/ret/idle_enabled + echo N > /sys/module/lpm_levels/system/pwr/cpu2/ret/idle_enabled + echo N > /sys/module/lpm_levels/system/pwr/cpu3/ret/idle_enabled + echo N > /sys/module/lpm_levels/system/perf/cpu4/ret/idle_enabled + echo N > /sys/module/lpm_levels/system/perf/cpu5/ret/idle_enabled + echo N > /sys/module/lpm_levels/system/perf/cpu6/ret/idle_enabled + echo N > /sys/module/lpm_levels/system/perf/cpu7/ret/idle_enabled + echo N > /sys/module/lpm_levels/system/pwr/pwr-l2-dynret/idle_enabled + echo N > /sys/module/lpm_levels/system/perf/perf-l2-dynret/idle_enabled + echo N > /sys/module/lpm_levels/system/pwr/pwr-l2-ret/idle_enabled + echo N > /sys/module/lpm_levels/system/perf/perf-l2-ret/idle_enabled + + # re-enable thermal and BCL hotplug + echo 1 > /sys/module/msm_thermal/core_control/enabled + + # Enable bus-dcvs + for cpubw in /sys/class/devfreq/*qcom,cpubw* + do + echo "bw_hwmon" > $cpubw/governor + echo 50 > $cpubw/polling_interval + echo 762 > $cpubw/min_freq + echo "1525 3143 5859 7759 9887 10327 11863 13763" > $cpubw/bw_hwmon/mbps_zones + echo 4 > $cpubw/bw_hwmon/sample_ms + echo 85 > $cpubw/bw_hwmon/io_percent + echo 100 > $cpubw/bw_hwmon/decay_rate + echo 50 > $cpubw/bw_hwmon/bw_step + echo 20 > $cpubw/bw_hwmon/hist_memory + echo 0 > $cpubw/bw_hwmon/hyst_length + echo 80 > $cpubw/bw_hwmon/down_thres + echo 0 > $cpubw/bw_hwmon/low_power_ceil_mbps + echo 34 > $cpubw/bw_hwmon/low_power_io_percent + echo 20 > $cpubw/bw_hwmon/low_power_delay + echo 0 > $cpubw/bw_hwmon/guard_band_mbps + echo 250 > $cpubw/bw_hwmon/up_scale + echo 1600 > $cpubw/bw_hwmon/idle_mbps + done + + for memlat in /sys/class/devfreq/*qcom,memlat-cpu* + do + echo "mem_latency" > $memlat/governor + echo 10 > $memlat/polling_interval + echo 400 > $memlat/mem_latency/ratio_ceil + done + echo "cpufreq" > /sys/class/devfreq/soc:qcom,mincpubw/governor +} + +function sdm660_sched_schedutil_dcvs() { + + # configure governor settings for little cluster + echo "schedutil" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor + echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/up_rate_limit_us + echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/down_rate_limit_us + echo 1401600 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/hispeed_freq + + # configure governor settings for big cluster + echo "schedutil" > /sys/devices/system/cpu/cpu4/cpufreq/scaling_governor + echo 0 > /sys/devices/system/cpu/cpu4/cpufreq/schedutil/up_rate_limit_us + echo 0 > /sys/devices/system/cpu/cpu4/cpufreq/schedutil/down_rate_limit_us + echo 1401600 > /sys/devices/system/cpu/cpu4/cpufreq/schedutil/hispeed_freq + + echo 1 > /proc/sys/kernel/sched_walt_rotate_big_tasks + + echo "0:1401600" > /sys/module/cpu_boost/parameters/input_boost_freq + echo 40 > /sys/module/cpu_boost/parameters/input_boost_ms + + # sched_load_boost as -6 is equivalent to target load as 85. It is per cpu tunable. + echo -6 > /sys/devices/system/cpu/cpu0/sched_load_boost + echo -6 > /sys/devices/system/cpu/cpu1/sched_load_boost + echo -6 > /sys/devices/system/cpu/cpu2/sched_load_boost + echo -6 > /sys/devices/system/cpu/cpu3/sched_load_boost + echo -6 > /sys/devices/system/cpu/cpu4/sched_load_boost + echo -6 > /sys/devices/system/cpu/cpu5/sched_load_boost + echo -6 > /sys/devices/system/cpu/cpu6/sched_load_boost + echo -6 > /sys/devices/system/cpu/cpu7/sched_load_boost + echo 85 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/hispeed_load + echo 85 > /sys/devices/system/cpu/cpu4/cpufreq/schedutil/hispeed_load + + # Enable bus-dcvs + for device in /sys/devices/platform/soc + do + for cpubw in $device/*cpu-cpu-ddr-bw/devfreq/*cpu-cpu-ddr-bw + do + echo "bw_hwmon" > $cpubw/governor + echo 50 > $cpubw/polling_interval + echo 762 > $cpubw/min_freq + echo "1525 3143 5859 7759 9887 10327 11863 13763" > $cpubw/bw_hwmon/mbps_zones + echo 4 > $cpubw/bw_hwmon/sample_ms + echo 85 > $cpubw/bw_hwmon/io_percent + echo 100 > $cpubw/bw_hwmon/decay_rate + echo 50 > $cpubw/bw_hwmon/bw_step + echo 20 > $cpubw/bw_hwmon/hist_memory + echo 0 > $cpubw/bw_hwmon/hyst_length + echo 80 > $cpubw/bw_hwmon/down_thres + echo 0 > $cpubw/bw_hwmon/guard_band_mbps + echo 250 > $cpubw/bw_hwmon/up_scale + echo 1600 > $cpubw/bw_hwmon/idle_mbps + done + + for memlat in $device/*cpu*-lat/devfreq/*cpu*-lat + do + echo "mem_latency" > $memlat/governor + echo 10 > $memlat/polling_interval + echo 400 > $memlat/mem_latency/ratio_ceil + done + + for latfloor in $device/*cpu*-ddr-latfloor*/devfreq/*cpu-ddr-latfloor* + do + echo "compute" > $latfloor/governor + echo 10 > $latfloor/polling_interval + done + + done +} + +target=`getprop ro.board.platform` + +function configure_zram_parameters() { + MemTotalStr=`cat /proc/meminfo | grep MemTotal` + MemTotal=${MemTotalStr:16:8} + + low_ram=`getprop ro.config.low_ram` + + # Zram disk - 75% for Go devices. + # For 512MB Go device, size = 384MB, set same for Non-Go. + # For 1GB Go device, size = 768MB, set same for Non-Go. + # For 2GB Go device, size = 1536MB, set same for Non-Go. + # For >2GB Non-Go devices, size = 50% of RAM size. Limit the size to 4GB. + # And enable lz4 zram compression for Go targets. + + RamSizeGB=`echo "($MemTotal / 1048576 ) + 1" | bc` + if [ $RamSizeGB -le 2 ]; then + zRamSizeBytes=`echo "$RamSizeGB * 1024 * 1024 * 1024 * 3 / 4" | bc` + zRamSizeMB=`echo "$RamSizeGB * 1024 * 3 / 4" | bc` + else + zRamSizeBytes=`echo "$RamSizeGB * 1024 * 1024 * 1024 / 2" | bc` + zRamSizeMB=`echo "$RamSizeGB * 1024 / 2" | bc` + fi + + # use MB avoid 32 bit overflow + if [ $zRamSizeMB -gt 4096 ]; then + zRamSizeBytes=4294967296 + fi + + if [ "$low_ram" == "true" ]; then + echo lz4 > /sys/block/zram0/comp_algorithm + fi + + if [ -f /sys/block/zram0/disksize ]; then + if [ -f /sys/block/zram0/use_dedup ]; then + echo 1 > /sys/block/zram0/use_dedup + fi + echo $zRamSizeBytes > /sys/block/zram0/disksize + + # ZRAM may use more memory than it saves if SLAB_STORE_USER + # debug option is enabled. + if [ -e /sys/kernel/slab/zs_handle ]; then + echo 0 > /sys/kernel/slab/zs_handle/store_user + fi + if [ -e /sys/kernel/slab/zspage ]; then + echo 0 > /sys/kernel/slab/zspage/store_user + fi + + mkswap /dev/block/zram0 + swapon /dev/block/zram0 -p 32758 + fi +} + +function configure_read_ahead_kb_values() { + MemTotalStr=`cat /proc/meminfo | grep MemTotal` + MemTotal=${MemTotalStr:16:8} + + dmpts=$(ls /sys/block/*/queue/read_ahead_kb | grep -e dm -e mmc) + + # Set 128 for <= 3GB & + # set 512 for >= 4GB targets. + if [ $MemTotal -le 3145728 ]; then + echo 128 > /sys/block/mmcblk0/bdi/read_ahead_kb + echo 128 > /sys/block/mmcblk0rpmb/bdi/read_ahead_kb + for dm in $dmpts; do + echo 128 > $dm + done + else + echo 512 > /sys/block/mmcblk0/bdi/read_ahead_kb + echo 512 > /sys/block/mmcblk0rpmb/bdi/read_ahead_kb + for dm in $dmpts; do + echo 512 > $dm + done + fi +} + +function disable_core_ctl() { + if [ -f /sys/devices/system/cpu/cpu0/core_ctl/enable ]; then + echo 0 > /sys/devices/system/cpu/cpu0/core_ctl/enable + else + echo 1 > /sys/devices/system/cpu/cpu0/core_ctl/disable + fi +} + +function enable_swap() { + MemTotalStr=`cat /proc/meminfo | grep MemTotal` + MemTotal=${MemTotalStr:16:8} + + SWAP_ENABLE_THRESHOLD=1048576 + swap_enable=`getprop ro.vendor.qti.config.swap` + + # Enable swap initially only for 1 GB targets + if [ "$MemTotal" -le "$SWAP_ENABLE_THRESHOLD" ] && [ "$swap_enable" == "true" ]; then + # Static swiftness + echo 1 > /proc/sys/vm/swap_ratio_enable + echo 70 > /proc/sys/vm/swap_ratio + + # Swap disk - 200MB size + if [ ! -f /data/vendor/swap/swapfile ]; then + dd if=/dev/zero of=/data/vendor/swap/swapfile bs=1m count=200 + fi + mkswap /data/vendor/swap/swapfile + swapon /data/vendor/swap/swapfile -p 32758 + fi +} + +function configure_memory_parameters() { + # Set Memory parameters. + # + # Set per_process_reclaim tuning parameters + # All targets will use vmpressure range 50-70, + # All targets will use 512 pages swap size. + # + # Set Low memory killer minfree parameters + # 32 bit Non-Go, all memory configurations will use 15K series + # 32 bit Go, all memory configurations will use uLMK + Memcg + # 64 bit will use Google default LMK series. + # + # Set ALMK parameters (usually above the highest minfree values) + # vmpressure_file_min threshold is always set slightly higher + # than LMK minfree's last bin value for all targets. It is calculated as + # vmpressure_file_min = (last bin - second last bin ) + last bin + # + # Set allocstall_threshold to 0 for all targets. + # + +ProductName=`getprop ro.board.platform` +low_ram=`getprop ro.config.low_ram` + +if [ "$ProductName" == "msmnile" ] || [ "$ProductName" == "kona" ] || [ "$ProductName" == "sdmshrike_au" ] || [ "$ProductName" == "lito" ] ; then + # Enable ZRAM + configure_zram_parameters + configure_read_ahead_kb_values + echo 0 > /proc/sys/vm/page-cluster + echo 100 > /proc/sys/vm/swappiness +else + arch_type=`uname -m` + + # Set parameters for 32-bit Go targets. + if [ "$low_ram" == "true" ]; then + # Disable KLMK, ALMK, PPR & Core Control for Go devices + echo 0 > /sys/module/lowmemorykiller/parameters/enable_lmk + echo 0 > /sys/module/lowmemorykiller/parameters/enable_adaptive_lmk + echo 0 > /sys/module/process_reclaim/parameters/enable_process_reclaim + disable_core_ctl + # Enable oom_reaper for Go devices + if [ -f /proc/sys/vm/reap_mem_on_sigkill ]; then + echo 1 > /proc/sys/vm/reap_mem_on_sigkill + fi + else + + # Read adj series and set adj threshold for PPR and ALMK. + # This is required since adj values change from framework to framework. + adj_series=`cat /sys/module/lowmemorykiller/parameters/adj` + adj_1="${adj_series#*,}" + set_almk_ppr_adj="${adj_1%%,*}" + + # PPR and ALMK should not act on HOME adj and below. + # Normalized ADJ for HOME is 6. Hence multiply by 6 + # ADJ score represented as INT in LMK params, actual score can be in decimal + # Hence add 6 considering a worst case of 0.9 conversion to INT (0.9*6). + # For uLMK + Memcg, this will be set as 6 since adj is zero. + set_almk_ppr_adj=$(((set_almk_ppr_adj * 6) + 6)) + echo $set_almk_ppr_adj > /sys/module/lowmemorykiller/parameters/adj_max_shift + + # Calculate vmpressure_file_min as below & set for 64 bit: + # vmpressure_file_min = last_lmk_bin + (last_lmk_bin - last_but_one_lmk_bin) + if [ "$arch_type" == "aarch64" ]; then + minfree_series=`cat /sys/module/lowmemorykiller/parameters/minfree` + minfree_1="${minfree_series#*,}" ; rem_minfree_1="${minfree_1%%,*}" + minfree_2="${minfree_1#*,}" ; rem_minfree_2="${minfree_2%%,*}" + minfree_3="${minfree_2#*,}" ; rem_minfree_3="${minfree_3%%,*}" + minfree_4="${minfree_3#*,}" ; rem_minfree_4="${minfree_4%%,*}" + minfree_5="${minfree_4#*,}" + + vmpres_file_min=$((minfree_5 + (minfree_5 - rem_minfree_4))) + echo $vmpres_file_min > /sys/module/lowmemorykiller/parameters/vmpressure_file_min + else + # Set LMK series, vmpressure_file_min for 32 bit non-go targets. + # Disable Core Control, enable KLMK for non-go 8909. + if [ "$ProductName" == "msm8909" ]; then + disable_core_ctl + echo 1 > /sys/module/lowmemorykiller/parameters/enable_lmk + fi + echo "15360,19200,23040,26880,34415,43737" > /sys/module/lowmemorykiller/parameters/minfree + echo 53059 > /sys/module/lowmemorykiller/parameters/vmpressure_file_min + fi + + # Enable adaptive LMK for all targets & + # use Google default LMK series for all 64-bit targets >=2GB. + echo 1 > /sys/module/lowmemorykiller/parameters/enable_adaptive_lmk + + # Enable oom_reaper + if [ -f /sys/module/lowmemorykiller/parameters/oom_reaper ]; then + echo 1 > /sys/module/lowmemorykiller/parameters/oom_reaper + fi + + if [ "$ProductName" != "bengal_32" ]; then + #bengal_32 has appcompaction enabled. So not needed + # Set PPR parametersi for other targets + if [ -f /sys/devices/soc0/soc_id ]; then + soc_id=`cat /sys/devices/soc0/soc_id` + else + soc_id=`cat /sys/devices/system/soc/soc0/id` + fi + + case "$soc_id" in + # Do not set PPR parameters for premium targets + # sdm845 - 321, 341 + # msm8998 - 292, 319 + # msm8996 - 246, 291, 305, 312 + "321" | "341" | "292" | "319" | "246" | "291" | "305" | "312") + ;; + *) + #Set PPR parameters for all other targets. + echo $set_almk_ppr_adj > /sys/module/process_reclaim/parameters/min_score_adj + echo 1 > /sys/module/process_reclaim/parameters/enable_process_reclaim + echo 50 > /sys/module/process_reclaim/parameters/pressure_min + echo 70 > /sys/module/process_reclaim/parameters/pressure_max + echo 30 > /sys/module/process_reclaim/parameters/swap_opt_eff + echo 512 > /sys/module/process_reclaim/parameters/per_swap_size + ;; + esac + fi + fi + + # Set allocstall_threshold to 0 for all targets. + # Set swappiness to 100 for all targets + echo 0 > /sys/module/vmpressure/parameters/allocstall_threshold + echo 100 > /proc/sys/vm/swappiness + + # Disable wsf for all targets beacause we are using efk. + # wsf Range : 1..1000 So set to bare minimum value 1. + echo 1 > /proc/sys/vm/watermark_scale_factor + + configure_zram_parameters + + configure_read_ahead_kb_values + + enable_swap +fi +} + +function enable_memory_features() +{ + MemTotalStr=`cat /proc/meminfo | grep MemTotal` + MemTotal=${MemTotalStr:16:8} + + if [ $MemTotal -le 2097152 ]; then + #Enable B service adj transition for 2GB or less memory + setprop ro.vendor.qti.sys.fw.bservice_enable true + setprop ro.vendor.qti.sys.fw.bservice_limit 5 + setprop ro.vendor.qti.sys.fw.bservice_age 5000 + + #Enable Delay Service Restart + setprop ro.vendor.qti.am.reschedule_service true + fi +} + +function start_hbtp() +{ + # Start the Host based Touch processing but not in the power off mode. + bootmode=`getprop ro.bootmode` + if [ "charger" != $bootmode ]; then + start vendor.hbtp + fi +} + +case "$target" in + "msm7201a_ffa" | "msm7201a_surf" | "msm7627_ffa" | "msm7627_6x" | "msm7627a" | "msm7627_surf" | \ + "qsd8250_surf" | "qsd8250_ffa" | "msm7630_surf" | "msm7630_1x" | "msm7630_fusion" | "qsd8650a_st1x") + echo "ondemand" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor + echo 90 > /sys/devices/system/cpu/cpufreq/ondemand/up_threshold + ;; +esac + +case "$target" in + "msm7201a_ffa" | "msm7201a_surf") + echo 500000 > /sys/devices/system/cpu/cpufreq/ondemand/sampling_rate + ;; +esac + +case "$target" in + "msm7630_surf" | "msm7630_1x" | "msm7630_fusion") + echo 75000 > /sys/devices/system/cpu/cpufreq/ondemand/sampling_rate + echo 1 > /sys/module/pm2/parameters/idle_sleep_mode + ;; +esac + +case "$target" in + "msm7201a_ffa" | "msm7201a_surf" | "msm7627_ffa" | "msm7627_6x" | "msm7627_surf" | "msm7630_surf" | "msm7630_1x" | "msm7630_fusion" | "msm7627a" ) + echo 245760 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq + ;; +esac + +case "$target" in + "msm8660") + echo 1 > /sys/module/rpm_resources/enable_low_power/L2_cache + echo 1 > /sys/module/rpm_resources/enable_low_power/pxo + echo 2 > /sys/module/rpm_resources/enable_low_power/vdd_dig + echo 2 > /sys/module/rpm_resources/enable_low_power/vdd_mem + echo 1 > /sys/module/rpm_resources/enable_low_power/rpm_cpu + echo 1 > /sys/module/msm_pm/modes/cpu0/power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu1/power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu0/standalone_power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu1/standalone_power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu0/power_collapse/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu1/power_collapse/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu0/standalone_power_collapse/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu1/standalone_power_collapse/idle_enabled + echo "ondemand" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor + echo "ondemand" > /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor + echo 50000 > /sys/devices/system/cpu/cpufreq/ondemand/sampling_rate + echo 90 > /sys/devices/system/cpu/cpufreq/ondemand/up_threshold + echo 1 > /sys/devices/system/cpu/cpufreq/ondemand/io_is_busy + echo 4 > /sys/devices/system/cpu/cpufreq/ondemand/sampling_down_factor + echo 384000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq + echo 384000 > /sys/devices/system/cpu/cpu1/cpufreq/scaling_min_freq + chown -h system /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq + chown -h system /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq + chown -h system /sys/devices/system/cpu/cpu1/cpufreq/scaling_max_freq + chown -h system /sys/devices/system/cpu/cpu1/cpufreq/scaling_min_freq + chown -h root.system /sys/devices/system/cpu/mfreq + chmod -h 220 /sys/devices/system/cpu/mfreq + chown -h root.system /sys/devices/system/cpu/cpu1/online + chmod -h 664 /sys/devices/system/cpu/cpu1/online + ;; +esac + +case "$target" in + "msm8960") + echo 1 > /sys/module/rpm_resources/enable_low_power/L2_cache + echo 1 > /sys/module/rpm_resources/enable_low_power/pxo + echo 1 > /sys/module/rpm_resources/enable_low_power/vdd_dig + echo 1 > /sys/module/rpm_resources/enable_low_power/vdd_mem + echo 1 > /sys/module/msm_pm/modes/cpu0/retention/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu0/power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu1/power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu2/power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu3/power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu0/standalone_power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu1/standalone_power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu2/standalone_power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu3/standalone_power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu0/standalone_power_collapse/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu1/standalone_power_collapse/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu2/standalone_power_collapse/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu3/standalone_power_collapse/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu0/power_collapse/idle_enabled + echo 0 > /sys/module/msm_thermal/core_control/enabled + echo 1 > /sys/devices/system/cpu/cpu1/online + echo 1 > /sys/devices/system/cpu/cpu2/online + echo 1 > /sys/devices/system/cpu/cpu3/online + echo "ondemand" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor + echo "ondemand" > /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor + echo "ondemand" > /sys/devices/system/cpu/cpu2/cpufreq/scaling_governor + echo "ondemand" > /sys/devices/system/cpu/cpu3/cpufreq/scaling_governor + echo 50000 > /sys/devices/system/cpu/cpufreq/ondemand/sampling_rate + echo 90 > /sys/devices/system/cpu/cpufreq/ondemand/up_threshold + echo 1 > /sys/devices/system/cpu/cpufreq/ondemand/io_is_busy + echo 4 > /sys/devices/system/cpu/cpufreq/ondemand/sampling_down_factor + echo 10 > /sys/devices/system/cpu/cpufreq/ondemand/down_differential + echo 70 > /sys/devices/system/cpu/cpufreq/ondemand/up_threshold_multi_core + echo 3 > /sys/devices/system/cpu/cpufreq/ondemand/down_differential_multi_core + echo 918000 > /sys/devices/system/cpu/cpufreq/ondemand/optimal_freq + echo 1026000 > /sys/devices/system/cpu/cpufreq/ondemand/sync_freq + echo 80 > /sys/devices/system/cpu/cpufreq/ondemand/up_threshold_any_cpu_load + chown -h system /sys/devices/system/cpu/cpufreq/ondemand/sampling_rate + chown -h system /sys/devices/system/cpu/cpufreq/ondemand/sampling_down_factor + chown -h system /sys/devices/system/cpu/cpufreq/ondemand/io_is_busy + echo 384000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq + echo 384000 > /sys/devices/system/cpu/cpu1/cpufreq/scaling_min_freq + echo 384000 > /sys/devices/system/cpu/cpu2/cpufreq/scaling_min_freq + echo 384000 > /sys/devices/system/cpu/cpu3/cpufreq/scaling_min_freq + chown -h system /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq + chown -h system /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq + chown -h system /sys/devices/system/cpu/cpu1/cpufreq/scaling_max_freq + chown -h system /sys/devices/system/cpu/cpu1/cpufreq/scaling_min_freq + chown -h system /sys/devices/system/cpu/cpu2/cpufreq/scaling_max_freq + chown -h system /sys/devices/system/cpu/cpu2/cpufreq/scaling_min_freq + chown -h system /sys/devices/system/cpu/cpu3/cpufreq/scaling_max_freq + chown -h system /sys/devices/system/cpu/cpu3/cpufreq/scaling_min_freq + echo 1 > /sys/module/msm_thermal/core_control/enabled + chown -h root.system /sys/devices/system/cpu/mfreq + chmod -h 220 /sys/devices/system/cpu/mfreq + chown -h root.system /sys/devices/system/cpu/cpu1/online + chown -h root.system /sys/devices/system/cpu/cpu2/online + chown -h root.system /sys/devices/system/cpu/cpu3/online + chmod -h 664 /sys/devices/system/cpu/cpu1/online + chmod -h 664 /sys/devices/system/cpu/cpu2/online + chmod -h 664 /sys/devices/system/cpu/cpu3/online + # set DCVS parameters for CPU + echo 40000 > /sys/module/msm_dcvs/cores/cpu0/slack_time_max_us + echo 40000 > /sys/module/msm_dcvs/cores/cpu0/slack_time_min_us + echo 100000 > /sys/module/msm_dcvs/cores/cpu0/em_win_size_min_us + echo 500000 > /sys/module/msm_dcvs/cores/cpu0/em_win_size_max_us + echo 0 > /sys/module/msm_dcvs/cores/cpu0/slack_mode_dynamic + echo 1000000 > /sys/module/msm_dcvs/cores/cpu0/disable_pc_threshold + echo 25000 > /sys/module/msm_dcvs/cores/cpu1/slack_time_max_us + echo 25000 > /sys/module/msm_dcvs/cores/cpu1/slack_time_min_us + echo 100000 > /sys/module/msm_dcvs/cores/cpu1/em_win_size_min_us + echo 500000 > /sys/module/msm_dcvs/cores/cpu1/em_win_size_max_us + echo 0 > /sys/module/msm_dcvs/cores/cpu1/slack_mode_dynamic + echo 1000000 > /sys/module/msm_dcvs/cores/cpu1/disable_pc_threshold + echo 25000 > /sys/module/msm_dcvs/cores/cpu2/slack_time_max_us + echo 25000 > /sys/module/msm_dcvs/cores/cpu2/slack_time_min_us + echo 100000 > /sys/module/msm_dcvs/cores/cpu2/em_win_size_min_us + echo 500000 > /sys/module/msm_dcvs/cores/cpu2/em_win_size_max_us + echo 0 > /sys/module/msm_dcvs/cores/cpu2/slack_mode_dynamic + echo 1000000 > /sys/module/msm_dcvs/cores/cpu2/disable_pc_threshold + echo 25000 > /sys/module/msm_dcvs/cores/cpu3/slack_time_max_us + echo 25000 > /sys/module/msm_dcvs/cores/cpu3/slack_time_min_us + echo 100000 > /sys/module/msm_dcvs/cores/cpu3/em_win_size_min_us + echo 500000 > /sys/module/msm_dcvs/cores/cpu3/em_win_size_max_us + echo 0 > /sys/module/msm_dcvs/cores/cpu3/slack_mode_dynamic + echo 1000000 > /sys/module/msm_dcvs/cores/cpu3/disable_pc_threshold + # set DCVS parameters for GPU + echo 20000 > /sys/module/msm_dcvs/cores/gpu0/slack_time_max_us + echo 20000 > /sys/module/msm_dcvs/cores/gpu0/slack_time_min_us + echo 0 > /sys/module/msm_dcvs/cores/gpu0/slack_mode_dynamic + # set msm_mpdecision parameters + echo 45000 > /sys/module/msm_mpdecision/slack_time_max_us + echo 15000 > /sys/module/msm_mpdecision/slack_time_min_us + echo 100000 > /sys/module/msm_mpdecision/em_win_size_min_us + echo 1000000 > /sys/module/msm_mpdecision/em_win_size_max_us + echo 3 > /sys/module/msm_mpdecision/online_util_pct_min + echo 25 > /sys/module/msm_mpdecision/online_util_pct_max + echo 97 > /sys/module/msm_mpdecision/em_max_util_pct + echo 2 > /sys/module/msm_mpdecision/rq_avg_poll_ms + echo 10 > /sys/module/msm_mpdecision/mp_em_rounding_point_min + echo 85 > /sys/module/msm_mpdecision/mp_em_rounding_point_max + echo 50 > /sys/module/msm_mpdecision/iowait_threshold_pct + #set permissions for the nodes needed by display on/off hook + chown -h system /sys/module/msm_dcvs/cores/cpu0/slack_time_max_us + chown -h system /sys/module/msm_dcvs/cores/cpu0/slack_time_min_us + chown -h system /sys/module/msm_mpdecision/slack_time_max_us + chown -h system /sys/module/msm_mpdecision/slack_time_min_us + chmod -h 664 /sys/module/msm_dcvs/cores/cpu0/slack_time_max_us + chmod -h 664 /sys/module/msm_dcvs/cores/cpu0/slack_time_min_us + chmod -h 664 /sys/module/msm_mpdecision/slack_time_max_us + chmod -h 664 /sys/module/msm_mpdecision/slack_time_min_us + if [ -f /sys/devices/soc0/soc_id ]; then + soc_id=`cat /sys/devices/soc0/soc_id` + else + soc_id=`cat /sys/devices/system/soc/soc0/id` + fi + case "$soc_id" in + "130") + echo 230 > /sys/class/gpio/export + echo 228 > /sys/class/gpio/export + echo 229 > /sys/class/gpio/export + echo "in" > /sys/class/gpio/gpio230/direction + echo "rising" > /sys/class/gpio/gpio230/edge + echo "in" > /sys/class/gpio/gpio228/direction + echo "rising" > /sys/class/gpio/gpio228/edge + echo "in" > /sys/class/gpio/gpio229/direction + echo "rising" > /sys/class/gpio/gpio229/edge + echo 253 > /sys/class/gpio/export + echo 254 > /sys/class/gpio/export + echo 257 > /sys/class/gpio/export + echo 258 > /sys/class/gpio/export + echo 259 > /sys/class/gpio/export + echo "out" > /sys/class/gpio/gpio253/direction + echo "out" > /sys/class/gpio/gpio254/direction + echo "out" > /sys/class/gpio/gpio257/direction + echo "out" > /sys/class/gpio/gpio258/direction + echo "out" > /sys/class/gpio/gpio259/direction + chown -h media /sys/class/gpio/gpio253/value + chown -h media /sys/class/gpio/gpio254/value + chown -h media /sys/class/gpio/gpio257/value + chown -h media /sys/class/gpio/gpio258/value + chown -h media /sys/class/gpio/gpio259/value + chown -h media /sys/class/gpio/gpio253/direction + chown -h media /sys/class/gpio/gpio254/direction + chown -h media /sys/class/gpio/gpio257/direction + chown -h media /sys/class/gpio/gpio258/direction + chown -h media /sys/class/gpio/gpio259/direction + echo 0 > /sys/module/rpm_resources/enable_low_power/vdd_dig + echo 0 > /sys/module/rpm_resources/enable_low_power/vdd_mem + ;; + esac + ;; +esac + +case "$target" in + "msm8974") + echo 4 > /sys/module/lpm_levels/enable_low_power/l2 + echo 1 > /sys/module/msm_pm/modes/cpu0/power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu1/power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu2/power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu3/power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu0/power_collapse/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu1/power_collapse/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu2/power_collapse/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu3/power_collapse/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu0/standalone_power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu1/standalone_power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu2/standalone_power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu3/standalone_power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu0/standalone_power_collapse/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu1/standalone_power_collapse/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu2/standalone_power_collapse/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu3/standalone_power_collapse/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu0/retention/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu1/retention/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu2/retention/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu3/retention/idle_enabled + echo 0 > /sys/module/msm_thermal/core_control/enabled + echo 1 > /sys/devices/system/cpu/cpu1/online + echo 1 > /sys/devices/system/cpu/cpu2/online + echo 1 > /sys/devices/system/cpu/cpu3/online + if [ -f /sys/devices/soc0/soc_id ]; then + soc_id=`cat /sys/devices/soc0/soc_id` + else + soc_id=`cat /sys/devices/system/soc/soc0/id` + fi + case "$soc_id" in + "208" | "211" | "214" | "217" | "209" | "212" | "215" | "218" | "194" | "210" | "213" | "216") + for devfreq_gov in /sys/class/devfreq/qcom,cpubw*/governor + do + echo "cpubw_hwmon" > $devfreq_gov + done + echo "interactive" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor + echo "interactive" > /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor + echo "interactive" > /sys/devices/system/cpu/cpu2/cpufreq/scaling_governor + echo "interactive" > /sys/devices/system/cpu/cpu3/cpufreq/scaling_governor + echo "20000 1400000:40000 1700000:20000" > /sys/devices/system/cpu/cpufreq/interactive/above_hispeed_delay + echo 90 > /sys/devices/system/cpu/cpufreq/interactive/go_hispeed_load + echo 1190400 > /sys/devices/system/cpu/cpufreq/interactive/hispeed_freq + echo 1 > /sys/devices/system/cpu/cpufreq/interactive/io_is_busy + echo "85 1500000:90 1800000:70" > /sys/devices/system/cpu/cpufreq/interactive/target_loads + echo 40000 > /sys/devices/system/cpu/cpufreq/interactive/min_sample_time + echo 20 > /sys/module/cpu_boost/parameters/boost_ms + echo 1728000 > /sys/module/cpu_boost/parameters/sync_threshold + echo 100000 > /sys/devices/system/cpu/cpufreq/interactive/sampling_down_factor + echo 1497600 > /sys/module/cpu_boost/parameters/input_boost_freq + echo 40 > /sys/module/cpu_boost/parameters/input_boost_ms + ;; + *) + echo "ondemand" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor + echo "ondemand" > /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor + echo "ondemand" > /sys/devices/system/cpu/cpu2/cpufreq/scaling_governor + echo "ondemand" > /sys/devices/system/cpu/cpu3/cpufreq/scaling_governor + echo 50000 > /sys/devices/system/cpu/cpufreq/ondemand/sampling_rate + echo 90 > /sys/devices/system/cpu/cpufreq/ondemand/up_threshold + echo 1 > /sys/devices/system/cpu/cpufreq/ondemand/io_is_busy + echo 2 > /sys/devices/system/cpu/cpufreq/ondemand/sampling_down_factor + echo 10 > /sys/devices/system/cpu/cpufreq/ondemand/down_differential + echo 70 > /sys/devices/system/cpu/cpufreq/ondemand/up_threshold_multi_core + echo 3 > /sys/devices/system/cpu/cpufreq/ondemand/down_differential_multi_core + echo 960000 > /sys/devices/system/cpu/cpufreq/ondemand/optimal_freq + echo 960000 > /sys/devices/system/cpu/cpufreq/ondemand/sync_freq + echo 1190400 > /sys/devices/system/cpu/cpufreq/ondemand/input_boost + echo 80 > /sys/devices/system/cpu/cpufreq/ondemand/up_threshold_any_cpu_load + ;; + esac + echo 300000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq + echo 300000 > /sys/devices/system/cpu/cpu1/cpufreq/scaling_min_freq + echo 300000 > /sys/devices/system/cpu/cpu2/cpufreq/scaling_min_freq + echo 300000 > /sys/devices/system/cpu/cpu3/cpufreq/scaling_min_freq + chown -h system /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq + chown -h system /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq + echo 1 > /sys/module/msm_thermal/core_control/enabled + chown -h root.system /sys/devices/system/cpu/mfreq + chmod -h 220 /sys/devices/system/cpu/mfreq + chown -h root.system /sys/devices/system/cpu/cpu1/online + chown -h root.system /sys/devices/system/cpu/cpu2/online + chown -h root.system /sys/devices/system/cpu/cpu3/online + chmod -h 664 /sys/devices/system/cpu/cpu1/online + chmod -h 664 /sys/devices/system/cpu/cpu2/online + chmod -h 664 /sys/devices/system/cpu/cpu3/online + echo 1 > /dev/cpuctl/apps/cpu.notify_on_migrate + ;; +esac + +case "$target" in + "msm8916") + if [ -f /sys/devices/soc0/soc_id ]; then + soc_id=`cat /sys/devices/soc0/soc_id` + else + soc_id=`cat /sys/devices/system/soc/soc0/id` + fi + case "$soc_id" in + "206") + echo 0 > /sys/module/lpm_levels/parameters/sleep_disabled + echo 1 > /sys/devices/system/cpu/cpu1/online + echo 1 > /sys/devices/system/cpu/cpu2/online + echo 1 > /sys/devices/system/cpu/cpu3/online + echo 2 > /sys/class/net/rmnet0/queues/rx-0/rps_cpus + ;; + "247" | "248" | "249" | "250") + echo 0 > /sys/module/lpm_levels/parameters/sleep_disabled + echo 1 > /sys/devices/system/cpu/cpu1/online + echo 1 > /sys/devices/system/cpu/cpu2/online + echo 1 > /sys/devices/system/cpu/cpu3/online + ;; + "239" | "241" | "263") + if [ -f /sys/devices/soc0/revision ]; then + revision=`cat /sys/devices/soc0/revision` + else + revision=`cat /sys/devices/system/soc/soc0/revision` + fi + echo 10 > /sys/class/net/rmnet0/queues/rx-0/rps_cpus + if [ -f /sys/devices/soc0/platform_subtype_id ]; then + platform_subtype_id=`cat /sys/devices/soc0/platform_subtype_id` + fi + if [ -f /sys/devices/soc0/hw_platform ]; then + hw_platform=`cat /sys/devices/soc0/hw_platform` + fi + case "$soc_id" in + "239") + case "$hw_platform" in + "Surf") + case "$platform_subtype_id" in + "1" | "2") + start_hbtp + ;; + esac + ;; + "MTP") + case "$platform_subtype_id" in + "3") + start_hbtp + ;; + esac + ;; + esac + ;; + esac + ;; + "268" | "269" | "270" | "271") + echo 10 > /sys/class/net/rmnet0/queues/rx-0/rps_cpus + ;; + "233" | "240" | "242") + echo 1 > /sys/devices/system/cpu/cpu1/online + echo 1 > /sys/devices/system/cpu/cpu2/online + echo 1 > /sys/devices/system/cpu/cpu3/online + ;; + esac + ;; +esac + +case "$target" in + "msm8226") + echo 4 > /sys/module/lpm_levels/enable_low_power/l2 + echo 1 > /sys/module/msm_pm/modes/cpu0/power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu1/power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu2/power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu3/power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu0/standalone_power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu1/standalone_power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu2/standalone_power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu3/standalone_power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu0/standalone_power_collapse/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu1/standalone_power_collapse/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu2/standalone_power_collapse/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu3/standalone_power_collapse/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu0/power_collapse/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu1/power_collapse/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu2/power_collapse/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu3/power_collapse/idle_enabled + echo 1 > /sys/devices/system/cpu/cpu1/online + echo 1 > /sys/devices/system/cpu/cpu2/online + echo 1 > /sys/devices/system/cpu/cpu3/online + echo "ondemand" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor + echo 50000 > /sys/devices/system/cpu/cpufreq/ondemand/sampling_rate + echo 90 > /sys/devices/system/cpu/cpufreq/ondemand/up_threshold + echo 1 > /sys/devices/system/cpu/cpufreq/ondemand/io_is_busy + echo 2 > /sys/devices/system/cpu/cpufreq/ondemand/sampling_down_factor + echo 10 > /sys/devices/system/cpu/cpufreq/ondemand/down_differential + echo 70 > /sys/devices/system/cpu/cpufreq/ondemand/up_threshold_multi_core + echo 10 > /sys/devices/system/cpu/cpufreq/ondemand/down_differential_multi_core + echo 787200 > /sys/devices/system/cpu/cpufreq/ondemand/optimal_freq + echo 300000 > /sys/devices/system/cpu/cpufreq/ondemand/sync_freq + echo 80 > /sys/devices/system/cpu/cpufreq/ondemand/up_threshold_any_cpu_load + echo 300000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq + chown -h system /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq + chown -h system /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq + chown -h root.system /sys/devices/system/cpu/cpu1/online + chown -h root.system /sys/devices/system/cpu/cpu2/online + chown -h root.system /sys/devices/system/cpu/cpu3/online + chmod -h 664 /sys/devices/system/cpu/cpu1/online + chmod -h 664 /sys/devices/system/cpu/cpu2/online + chmod -h 664 /sys/devices/system/cpu/cpu3/online + ;; +esac + +case "$target" in + "msm8610") + echo 4 > /sys/module/lpm_levels/enable_low_power/l2 + echo 1 > /sys/module/msm_pm/modes/cpu0/power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu1/power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu2/power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu3/power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu0/standalone_power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu1/standalone_power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu2/standalone_power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu3/standalone_power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu0/standalone_power_collapse/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu1/standalone_power_collapse/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu2/standalone_power_collapse/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu3/standalone_power_collapse/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu0/power_collapse/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu1/power_collapse/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu2/power_collapse/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu3/power_collapse/idle_enabled + echo 1 > /sys/devices/system/cpu/cpu1/online + echo 1 > /sys/devices/system/cpu/cpu2/online + echo 1 > /sys/devices/system/cpu/cpu3/online + echo "ondemand" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor + echo 50000 > /sys/devices/system/cpu/cpufreq/ondemand/sampling_rate + echo 90 > /sys/devices/system/cpu/cpufreq/ondemand/up_threshold + echo 1 > /sys/devices/system/cpu/cpufreq/ondemand/io_is_busy + echo 2 > /sys/devices/system/cpu/cpufreq/ondemand/sampling_down_factor + echo 10 > /sys/devices/system/cpu/cpufreq/ondemand/down_differential + echo 70 > /sys/devices/system/cpu/cpufreq/ondemand/up_threshold_multi_core + echo 10 > /sys/devices/system/cpu/cpufreq/ondemand/down_differential_multi_core + echo 787200 > /sys/devices/system/cpu/cpufreq/ondemand/optimal_freq + echo 300000 > /sys/devices/system/cpu/cpufreq/ondemand/sync_freq + echo 80 > /sys/devices/system/cpu/cpufreq/ondemand/up_threshold_any_cpu_load + echo 300000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq + setprop ro.qualcomm.perf.min_freq 7 + echo 1 > /sys/kernel/mm/ksm/deferred_timer + chown -h system /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq + chown -h system /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq + chown -h root.system /sys/devices/system/cpu/cpu1/online + chown -h root.system /sys/devices/system/cpu/cpu2/online + chown -h root.system /sys/devices/system/cpu/cpu3/online + chmod -h 664 /sys/devices/system/cpu/cpu1/online + chmod -h 664 /sys/devices/system/cpu/cpu2/online + chmod -h 664 /sys/devices/system/cpu/cpu3/online + ;; +esac + +case "$target" in + "msm8916") + + if [ -f /sys/devices/soc0/soc_id ]; then + soc_id=`cat /sys/devices/soc0/soc_id` + else + soc_id=`cat /sys/devices/system/soc/soc0/id` + fi + + # HMP scheduler settings for 8916, 8936, 8939, 8929 + echo 3 > /proc/sys/kernel/sched_window_stats_policy + echo 3 > /proc/sys/kernel/sched_ravg_hist_size + + # Apply governor settings for 8916 + case "$soc_id" in + "206" | "247" | "248" | "249" | "250") + + # HMP scheduler load tracking settings + echo 3 > /proc/sys/kernel/sched_ravg_hist_size + + # HMP Task packing settings for 8916 + echo 20 > /proc/sys/kernel/sched_small_task + echo 30 > /proc/sys/kernel/sched_mostly_idle_load + echo 3 > /proc/sys/kernel/sched_mostly_idle_nr_run + + # disable thermal core_control to update scaling_min_freq + echo 0 > /sys/module/msm_thermal/core_control/enabled + echo 1 > /sys/devices/system/cpu/cpu0/online + echo "interactive" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor + echo 800000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq + # enable thermal core_control now + echo 1 > /sys/module/msm_thermal/core_control/enabled + + echo "25000 1094400:50000" > /sys/devices/system/cpu/cpufreq/interactive/above_hispeed_delay + echo 90 > /sys/devices/system/cpu/cpufreq/interactive/go_hispeed_load + echo 30000 > /sys/devices/system/cpu/cpufreq/interactive/timer_rate + echo 998400 > /sys/devices/system/cpu/cpufreq/interactive/hispeed_freq + echo 0 > /sys/devices/system/cpu/cpufreq/interactive/io_is_busy + echo "1 800000:85 998400:90 1094400:80" > /sys/devices/system/cpu/cpufreq/interactive/target_loads + echo 50000 > /sys/devices/system/cpu/cpufreq/interactive/min_sample_time + echo 50000 > /sys/devices/system/cpu/cpufreq/interactive/sampling_down_factor + + # Bring up all cores online + echo 1 > /sys/devices/system/cpu/cpu1/online + echo 1 > /sys/devices/system/cpu/cpu2/online + echo 1 > /sys/devices/system/cpu/cpu3/online + echo 1 > /sys/devices/system/cpu/cpu4/online + ;; + esac + + # Apply governor settings for 8936 + case "$soc_id" in + "233" | "240" | "242") + + # HMP scheduler load tracking settings + echo 3 > /proc/sys/kernel/sched_ravg_hist_size + + # HMP Task packing settings for 8936 + echo 50 > /proc/sys/kernel/sched_small_task + echo 50 > /proc/sys/kernel/sched_mostly_idle_load + echo 10 > /proc/sys/kernel/sched_mostly_idle_nr_run + + # disable thermal core_control to update scaling_min_freq, interactive gov + echo 0 > /sys/module/msm_thermal/core_control/enabled + echo 1 > /sys/devices/system/cpu/cpu0/online + echo "interactive" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor + echo 800000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq + # enable thermal core_control now + echo 1 > /sys/module/msm_thermal/core_control/enabled + + echo "25000 1113600:50000" > /sys/devices/system/cpu/cpufreq/interactive/above_hispeed_delay + echo 90 > /sys/devices/system/cpu/cpufreq/interactive/go_hispeed_load + echo 30000 > /sys/devices/system/cpu/cpufreq/interactive/timer_rate + echo 960000 > /sys/devices/system/cpu/cpufreq/interactive/hispeed_freq + echo 0 > /sys/devices/system/cpu/cpufreq/interactive/io_is_busy + echo "1 800000:85 1113600:90 1267200:80" > /sys/devices/system/cpu/cpufreq/interactive/target_loads + echo 50000 > /sys/devices/system/cpu/cpufreq/interactive/min_sample_time + echo 50000 > /sys/devices/system/cpu/cpufreq/interactive/sampling_down_factor + + # Bring up all cores online + echo 1 > /sys/devices/system/cpu/cpu1/online + echo 1 > /sys/devices/system/cpu/cpu2/online + echo 1 > /sys/devices/system/cpu/cpu3/online + echo 1 > /sys/devices/system/cpu/cpu4/online + + # Enable low power modes + echo 0 > /sys/module/lpm_levels/parameters/sleep_disabled + + for gpu_bimc_io_percent in /sys/class/devfreq/*qcom,gpubw*/bw_hwmon/io_percent + do + echo 40 > $gpu_bimc_io_percent + done + ;; + esac + + # Apply governor settings for 8939 + case "$soc_id" in + "239" | "241" | "263" | "268" | "269" | "270" | "271") + + if [ `cat /sys/devices/soc0/revision` != "3.0" ]; then + # Apply 1.0 and 2.0 specific Sched & Governor settings + + # HMP scheduler load tracking settings + echo 5 > /proc/sys/kernel/sched_ravg_hist_size + + # HMP Task packing settings for 8939, 8929 + echo 20 > /proc/sys/kernel/sched_small_task + + for devfreq_gov in /sys/class/devfreq/*qcom,mincpubw*/governor + do + echo "cpufreq" > $devfreq_gov + done + + for devfreq_gov in /sys/class/devfreq/*qcom,cpubw*/governor + do + echo "bw_hwmon" > $devfreq_gov + for cpu_io_percent in /sys/class/devfreq/*qcom,cpubw*/bw_hwmon/io_percent + do + echo 20 > $cpu_io_percent + done + done + + for gpu_bimc_io_percent in /sys/class/devfreq/*qcom,gpubw*/bw_hwmon/io_percent + do + echo 40 > $gpu_bimc_io_percent + done + # disable thermal core_control to update interactive gov settings + echo 0 > /sys/module/msm_thermal/core_control/enabled + + # enable governor for perf cluster + echo 1 > /sys/devices/system/cpu/cpu0/online + echo "interactive" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor + echo "20000 1113600:50000" > /sys/devices/system/cpu/cpu0/cpufreq/interactive/above_hispeed_delay + echo 85 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/go_hispeed_load + echo 20000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/timer_rate + echo 1113600 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/hispeed_freq + echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/io_is_busy + echo "1 960000:85 1113600:90 1344000:80" > /sys/devices/system/cpu/cpu0/cpufreq/interactive/target_loads + echo 50000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/min_sample_time + echo 50000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/sampling_down_factor + echo 960000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq + + # enable governor for power cluster + echo 1 > /sys/devices/system/cpu/cpu4/online + echo "interactive" > /sys/devices/system/cpu/cpu4/cpufreq/scaling_governor + echo "25000 800000:50000" > /sys/devices/system/cpu/cpu4/cpufreq/interactive/above_hispeed_delay + echo 90 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/go_hispeed_load + echo 40000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/timer_rate + echo 998400 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/hispeed_freq + echo 0 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/io_is_busy + echo "1 800000:90" > /sys/devices/system/cpu/cpu4/cpufreq/interactive/target_loads + echo 40000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/min_sample_time + echo 40000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/sampling_down_factor + echo 800000 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_min_freq + + # enable thermal core_control now + echo 1 > /sys/module/msm_thermal/core_control/enabled + + # Bring up all cores online + echo 1 > /sys/devices/system/cpu/cpu1/online + echo 1 > /sys/devices/system/cpu/cpu2/online + echo 1 > /sys/devices/system/cpu/cpu3/online + echo 1 > /sys/devices/system/cpu/cpu4/online + echo 1 > /sys/devices/system/cpu/cpu5/online + echo 1 > /sys/devices/system/cpu/cpu6/online + echo 1 > /sys/devices/system/cpu/cpu7/online + + # Enable low power modes + echo 0 > /sys/module/lpm_levels/parameters/sleep_disabled + + # HMP scheduler (big.Little cluster related) settings + echo 75 > /proc/sys/kernel/sched_upmigrate + echo 60 > /proc/sys/kernel/sched_downmigrate + + # cpu idle load threshold + echo 30 > /sys/devices/system/cpu/cpu0/sched_mostly_idle_load + echo 30 > /sys/devices/system/cpu/cpu1/sched_mostly_idle_load + echo 30 > /sys/devices/system/cpu/cpu2/sched_mostly_idle_load + echo 30 > /sys/devices/system/cpu/cpu3/sched_mostly_idle_load + echo 30 > /sys/devices/system/cpu/cpu4/sched_mostly_idle_load + echo 30 > /sys/devices/system/cpu/cpu5/sched_mostly_idle_load + echo 30 > /sys/devices/system/cpu/cpu6/sched_mostly_idle_load + echo 30 > /sys/devices/system/cpu/cpu7/sched_mostly_idle_load + + # cpu idle nr run threshold + echo 3 > /sys/devices/system/cpu/cpu0/sched_mostly_idle_nr_run + echo 3 > /sys/devices/system/cpu/cpu1/sched_mostly_idle_nr_run + echo 3 > /sys/devices/system/cpu/cpu2/sched_mostly_idle_nr_run + echo 3 > /sys/devices/system/cpu/cpu3/sched_mostly_idle_nr_run + echo 3 > /sys/devices/system/cpu/cpu4/sched_mostly_idle_nr_run + echo 3 > /sys/devices/system/cpu/cpu5/sched_mostly_idle_nr_run + echo 3 > /sys/devices/system/cpu/cpu6/sched_mostly_idle_nr_run + echo 3 > /sys/devices/system/cpu/cpu7/sched_mostly_idle_nr_run + + else + # Apply 3.0 specific Sched & Governor settings + # HMP scheduler settings for 8939 V3.0 + echo 3 > /proc/sys/kernel/sched_window_stats_policy + echo 3 > /proc/sys/kernel/sched_ravg_hist_size + echo 20000000 > /proc/sys/kernel/sched_ravg_window + + # HMP Task packing settings for 8939 V3.0 + echo 20 > /proc/sys/kernel/sched_small_task + echo 30 > /proc/sys/kernel/sched_mostly_idle_load + echo 3 > /proc/sys/kernel/sched_mostly_idle_nr_run + + echo 0 > /sys/devices/system/cpu/cpu0/sched_prefer_idle + echo 0 > /sys/devices/system/cpu/cpu1/sched_prefer_idle + echo 0 > /sys/devices/system/cpu/cpu2/sched_prefer_idle + echo 0 > /sys/devices/system/cpu/cpu3/sched_prefer_idle + echo 0 > /sys/devices/system/cpu/cpu4/sched_prefer_idle + echo 0 > /sys/devices/system/cpu/cpu5/sched_prefer_idle + echo 0 > /sys/devices/system/cpu/cpu6/sched_prefer_idle + echo 0 > /sys/devices/system/cpu/cpu7/sched_prefer_idle + + for devfreq_gov in /sys/class/devfreq/*qcom,mincpubw*/governor + do + echo "cpufreq" > $devfreq_gov + done + + for devfreq_gov in /sys/class/devfreq/*qcom,cpubw*/governor + do + echo "bw_hwmon" > $devfreq_gov + for cpu_io_percent in /sys/class/devfreq/*qcom,cpubw*/bw_hwmon/io_percent + do + echo 20 > $cpu_io_percent + done + done + + for gpu_bimc_io_percent in /sys/class/devfreq/*qcom,gpubw*/bw_hwmon/io_percent + do + echo 40 > $gpu_bimc_io_percent + done + # disable thermal core_control to update interactive gov settings + echo 0 > /sys/module/msm_thermal/core_control/enabled + + # enable governor for perf cluster + echo 1 > /sys/devices/system/cpu/cpu0/online + echo "interactive" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor + echo "19000 1113600:39000" > /sys/devices/system/cpu/cpu0/cpufreq/interactive/above_hispeed_delay + echo 85 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/go_hispeed_load + echo 20000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/timer_rate + echo 1113600 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/hispeed_freq + echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/io_is_busy + echo "1 960000:85 1113600:90 1344000:80" > /sys/devices/system/cpu/cpu0/cpufreq/interactive/target_loads + echo 40000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/min_sample_time + echo 40000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/sampling_down_factor + echo 960000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq + + # enable governor for power cluster + echo 1 > /sys/devices/system/cpu/cpu4/online + echo "interactive" > /sys/devices/system/cpu/cpu4/cpufreq/scaling_governor + echo 39000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/above_hispeed_delay + echo 90 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/go_hispeed_load + echo 20000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/timer_rate + echo 800000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/hispeed_freq + echo 0 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/io_is_busy + echo "1 800000:90" > /sys/devices/system/cpu/cpu4/cpufreq/interactive/target_loads + echo 40000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/min_sample_time + echo 40000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/sampling_down_factor + echo 800000 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_min_freq + + # enable thermal core_control now + echo 1 > /sys/module/msm_thermal/core_control/enabled + + # Bring up all cores online + echo 1 > /sys/devices/system/cpu/cpu1/online + echo 1 > /sys/devices/system/cpu/cpu2/online + echo 1 > /sys/devices/system/cpu/cpu3/online + echo 1 > /sys/devices/system/cpu/cpu5/online + echo 1 > /sys/devices/system/cpu/cpu6/online + echo 1 > /sys/devices/system/cpu/cpu7/online + + # Enable low power modes + echo 0 > /sys/module/lpm_levels/parameters/sleep_disabled + + # HMP scheduler (big.Little cluster related) settings + echo 93 > /proc/sys/kernel/sched_upmigrate + echo 83 > /proc/sys/kernel/sched_downmigrate + + # Enable sched guided freq control + echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/use_sched_load + echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/use_migration_notif + echo 1 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/use_sched_load + echo 1 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/use_migration_notif + echo 50000 > /proc/sys/kernel/sched_freq_inc_notify + echo 50000 > /proc/sys/kernel/sched_freq_dec_notify + + # Enable core control +# insmod /system/lib/modules/core_ctl.ko + echo 2 > /sys/devices/system/cpu/cpu0/core_ctl/min_cpus + echo 4 > /sys/devices/system/cpu/cpu0/core_ctl/max_cpus + echo 68 > /sys/devices/system/cpu/cpu0/core_ctl/busy_up_thres + echo 40 > /sys/devices/system/cpu/cpu0/core_ctl/busy_down_thres + echo 100 > /sys/devices/system/cpu/cpu0/core_ctl/offline_delay_ms + case "$revision" in + "3.0") + # Enable dynamic clock gatin + echo 1 > /sys/module/lpm_levels/lpm_workarounds/dynamic_clock_gating + ;; + esac + fi + ;; + esac + # Set Memory parameters + configure_memory_parameters + ;; +esac + +case "$target" in + "msm8952") + + if [ -f /sys/devices/soc0/soc_id ]; then + soc_id=`cat /sys/devices/soc0/soc_id` + else + soc_id=`cat /sys/devices/system/soc/soc0/id` + fi + case "$soc_id" in + "264" | "289") + # Apply Scheduler and Governor settings for 8952 + + # HMP scheduler settings + echo 3 > /proc/sys/kernel/sched_window_stats_policy + echo 3 > /proc/sys/kernel/sched_ravg_hist_size + echo 20000000 > /proc/sys/kernel/sched_ravg_window + + # HMP Task packing settings + echo 20 > /proc/sys/kernel/sched_small_task + echo 30 > /sys/devices/system/cpu/cpu0/sched_mostly_idle_load + echo 30 > /sys/devices/system/cpu/cpu1/sched_mostly_idle_load + echo 30 > /sys/devices/system/cpu/cpu2/sched_mostly_idle_load + echo 30 > /sys/devices/system/cpu/cpu3/sched_mostly_idle_load + echo 30 > /sys/devices/system/cpu/cpu4/sched_mostly_idle_load + echo 30 > /sys/devices/system/cpu/cpu5/sched_mostly_idle_load + echo 30 > /sys/devices/system/cpu/cpu6/sched_mostly_idle_load + echo 30 > /sys/devices/system/cpu/cpu7/sched_mostly_idle_load + + echo 3 > /sys/devices/system/cpu/cpu0/sched_mostly_idle_nr_run + echo 3 > /sys/devices/system/cpu/cpu1/sched_mostly_idle_nr_run + echo 3 > /sys/devices/system/cpu/cpu2/sched_mostly_idle_nr_run + echo 3 > /sys/devices/system/cpu/cpu3/sched_mostly_idle_nr_run + echo 3 > /sys/devices/system/cpu/cpu4/sched_mostly_idle_nr_run + echo 3 > /sys/devices/system/cpu/cpu5/sched_mostly_idle_nr_run + echo 3 > /sys/devices/system/cpu/cpu6/sched_mostly_idle_nr_run + echo 3 > /sys/devices/system/cpu/cpu7/sched_mostly_idle_nr_run + + echo 0 > /sys/devices/system/cpu/cpu0/sched_prefer_idle + echo 0 > /sys/devices/system/cpu/cpu1/sched_prefer_idle + echo 0 > /sys/devices/system/cpu/cpu2/sched_prefer_idle + echo 0 > /sys/devices/system/cpu/cpu3/sched_prefer_idle + echo 0 > /sys/devices/system/cpu/cpu4/sched_prefer_idle + echo 0 > /sys/devices/system/cpu/cpu5/sched_prefer_idle + echo 0 > /sys/devices/system/cpu/cpu6/sched_prefer_idle + echo 0 > /sys/devices/system/cpu/cpu7/sched_prefer_idle + + echo 0 > /proc/sys/kernel/sched_boost + + for devfreq_gov in /sys/class/devfreq/*qcom,mincpubw*/governor + do + echo "cpufreq" > $devfreq_gov + done + + for devfreq_gov in /sys/class/devfreq/*qcom,cpubw*/governor + do + echo "bw_hwmon" > $devfreq_gov + for cpu_io_percent in /sys/class/devfreq/*qcom,cpubw*/bw_hwmon/io_percent + do + echo 20 > $cpu_io_percent + done + for cpu_guard_band in /sys/class/devfreq/*qcom,cpubw*/bw_hwmon/guard_band_mbps + do + echo 30 > $cpu_guard_band + done + done + + for gpu_bimc_io_percent in /sys/class/devfreq/qcom,gpubw*/bw_hwmon/io_percent + do + echo 40 > $gpu_bimc_io_percent + done + # disable thermal & BCL core_control to update interactive gov settings + echo 0 > /sys/module/msm_thermal/core_control/enabled + for mode in /sys/devices/soc.0/qcom,bcl.*/mode + do + echo -n disable > $mode + done + for hotplug_mask in /sys/devices/soc.0/qcom,bcl.*/hotplug_mask + do + bcl_hotplug_mask=`cat $hotplug_mask` + echo 0 > $hotplug_mask + done + for hotplug_soc_mask in /sys/devices/soc.0/qcom,bcl.*/hotplug_soc_mask + do + bcl_soc_hotplug_mask=`cat $hotplug_soc_mask` + echo 0 > $hotplug_soc_mask + done + for mode in /sys/devices/soc.0/qcom,bcl.*/mode + do + echo -n enable > $mode + done + + # enable governor for perf cluster + echo 1 > /sys/devices/system/cpu/cpu0/online + echo "interactive" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor + echo "19000 1113600:39000" > /sys/devices/system/cpu/cpu0/cpufreq/interactive/above_hispeed_delay + echo 85 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/go_hispeed_load + echo 20000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/timer_rate + echo 1113600 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/hispeed_freq + echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/io_is_busy + echo "1 960000:85 1113600:90 1344000:80" > /sys/devices/system/cpu/cpu0/cpufreq/interactive/target_loads + echo 40000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/min_sample_time + echo 40000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/sampling_down_factor + echo 960000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq + + # enable governor for power cluster + echo 1 > /sys/devices/system/cpu/cpu4/online + echo "interactive" > /sys/devices/system/cpu/cpu4/cpufreq/scaling_governor + echo 39000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/above_hispeed_delay + echo 90 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/go_hispeed_load + echo 20000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/timer_rate + echo 806400 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/hispeed_freq + echo 0 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/io_is_busy + echo "1 806400:90" > /sys/devices/system/cpu/cpu4/cpufreq/interactive/target_loads + echo 40000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/min_sample_time + echo 40000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/sampling_down_factor + echo 806400 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_min_freq + + # Bring up all cores online + echo 1 > /sys/devices/system/cpu/cpu1/online + echo 1 > /sys/devices/system/cpu/cpu2/online + echo 1 > /sys/devices/system/cpu/cpu3/online + echo 1 > /sys/devices/system/cpu/cpu4/online + echo 1 > /sys/devices/system/cpu/cpu5/online + echo 1 > /sys/devices/system/cpu/cpu6/online + echo 1 > /sys/devices/system/cpu/cpu7/online + + # Enable Low power modes + echo 0 > /sys/module/lpm_levels/parameters/sleep_disabled + + # HMP scheduler (big.Little cluster related) settings + echo 93 > /proc/sys/kernel/sched_upmigrate + echo 83 > /proc/sys/kernel/sched_downmigrate + + # Enable sched guided freq control + echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/use_sched_load + echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/use_migration_notif + echo 1 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/use_sched_load + echo 1 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/use_migration_notif + echo 50000 > /proc/sys/kernel/sched_freq_inc_notify + echo 50000 > /proc/sys/kernel/sched_freq_dec_notify + + # Enable core control + echo 2 > /sys/devices/system/cpu/cpu0/core_ctl/min_cpus + echo 4 > /sys/devices/system/cpu/cpu0/core_ctl/max_cpus + echo 68 > /sys/devices/system/cpu/cpu0/core_ctl/busy_up_thres + echo 40 > /sys/devices/system/cpu/cpu0/core_ctl/busy_down_thres + echo 100 > /sys/devices/system/cpu/cpu0/core_ctl/offline_delay_ms + echo 1 > /sys/devices/system/cpu/cpu0/core_ctl/is_big_cluster + + # re-enable thermal & BCL core_control now + echo 1 > /sys/module/msm_thermal/core_control/enabled + for mode in /sys/devices/soc.0/qcom,bcl.*/mode + do + echo -n disable > $mode + done + for hotplug_mask in /sys/devices/soc.0/qcom,bcl.*/hotplug_mask + do + echo $bcl_hotplug_mask > $hotplug_mask + done + for hotplug_soc_mask in /sys/devices/soc.0/qcom,bcl.*/hotplug_soc_mask + do + echo $bcl_soc_hotplug_mask > $hotplug_soc_mask + done + for mode in /sys/devices/soc.0/qcom,bcl.*/mode + do + echo -n enable > $mode + done + + # Enable dynamic clock gating + echo 1 > /sys/module/lpm_levels/lpm_workarounds/dynamic_clock_gating + # Enable timer migration to little cluster + echo 1 > /proc/sys/kernel/power_aware_timer_migration + + # Set Memory parameters + configure_memory_parameters + + ;; + *) + panel=`cat /sys/class/graphics/fb0/modes` + if [ "${panel:5:1}" == "x" ]; then + panel=${panel:2:3} + else + panel=${panel:2:4} + fi + + # Apply Scheduler and Governor settings for 8976 + # SoC IDs are 266, 274, 277, 278 + + # HMP scheduler (big.Little cluster related) settings + echo 95 > /proc/sys/kernel/sched_upmigrate + echo 85 > /proc/sys/kernel/sched_downmigrate + + echo 2 > /proc/sys/kernel/sched_window_stats_policy + echo 5 > /proc/sys/kernel/sched_ravg_hist_size + + echo 3 > /sys/devices/system/cpu/cpu0/sched_mostly_idle_nr_run + echo 3 > /sys/devices/system/cpu/cpu1/sched_mostly_idle_nr_run + echo 3 > /sys/devices/system/cpu/cpu2/sched_mostly_idle_nr_run + echo 3 > /sys/devices/system/cpu/cpu3/sched_mostly_idle_nr_run + echo 3 > /sys/devices/system/cpu/cpu4/sched_mostly_idle_nr_run + echo 3 > /sys/devices/system/cpu/cpu5/sched_mostly_idle_nr_run + echo 3 > /sys/devices/system/cpu/cpu6/sched_mostly_idle_nr_run + echo 3 > /sys/devices/system/cpu/cpu7/sched_mostly_idle_nr_run + + for devfreq_gov in /sys/class/devfreq/*qcom,mincpubw*/governor + do + echo "cpufreq" > $devfreq_gov + done + + for devfreq_gov in /sys/class/devfreq/*qcom,cpubw*/governor + do + echo "bw_hwmon" > $devfreq_gov + for cpu_io_percent in /sys/class/devfreq/*qcom,cpubw*/bw_hwmon/io_percent + do + echo 20 > $cpu_io_percent + done + for cpu_guard_band in /sys/class/devfreq/*qcom,cpubw*/bw_hwmon/guard_band_mbps + do + echo 30 > $cpu_guard_band + done + done + + for gpu_bimc_io_percent in /sys/class/devfreq/qcom,gpubw*/bw_hwmon/io_percent + do + echo 40 > $gpu_bimc_io_percent + done + # disable thermal & BCL core_control to update interactive gov settings + echo 0 > /sys/module/msm_thermal/core_control/enabled + for mode in /sys/devices/soc.0/qcom,bcl.*/mode + do + echo -n disable > $mode + done + for hotplug_mask in /sys/devices/soc.0/qcom,bcl.*/hotplug_mask + do + bcl_hotplug_mask=`cat $hotplug_mask` + echo 0 > $hotplug_mask + done + for hotplug_soc_mask in /sys/devices/soc.0/qcom,bcl.*/hotplug_soc_mask + do + bcl_soc_hotplug_mask=`cat $hotplug_soc_mask` + echo 0 > $hotplug_soc_mask + done + for mode in /sys/devices/soc.0/qcom,bcl.*/mode + do + echo -n enable > $mode + done + + # enable governor for power cluster + echo 1 > /sys/devices/system/cpu/cpu0/online + echo "interactive" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor + echo 80 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/go_hispeed_load + echo 20000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/timer_rate + echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/io_is_busy + echo 40000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/min_sample_time + echo 691200 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq + + # enable governor for perf cluster + echo 1 > /sys/devices/system/cpu/cpu4/online + echo "interactive" > /sys/devices/system/cpu/cpu4/cpufreq/scaling_governor + echo 85 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/go_hispeed_load + echo 20000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/timer_rate + echo 0 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/io_is_busy + echo 40000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/min_sample_time + echo 40000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/sampling_down_factor + echo 883200 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_min_freq + echo 60000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/max_freq_hysteresis + + if [ $panel -gt 1080 ]; then + #set texture cache size for resolution greater than 1080p + setprop ro.hwui.texture_cache_size 72 + fi + + echo 59000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/above_hispeed_delay + echo 1305600 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/hispeed_freq + echo "1 691200:80" > /sys/devices/system/cpu/cpu0/cpufreq/interactive/target_loads + echo 1382400 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/hispeed_freq + echo "19000 1382400:39000" > /sys/devices/system/cpu/cpu4/cpufreq/interactive/above_hispeed_delay + echo "85 1382400:90 1747200:80" > /sys/devices/system/cpu/cpu4/cpufreq/interactive/target_loads + # HMP Task packing settings for 8976 + echo 30 > /proc/sys/kernel/sched_small_task + echo 20 > /sys/devices/system/cpu/cpu0/sched_mostly_idle_load + echo 20 > /sys/devices/system/cpu/cpu1/sched_mostly_idle_load + echo 20 > /sys/devices/system/cpu/cpu2/sched_mostly_idle_load + echo 20 > /sys/devices/system/cpu/cpu3/sched_mostly_idle_load + echo 20 > /sys/devices/system/cpu/cpu4/sched_mostly_idle_load + echo 20 > /sys/devices/system/cpu/cpu5/sched_mostly_idle_load + echo 20 > /sys/devices/system/cpu/cpu6/sched_mostly_idle_load + echo 20 > /sys/devices/system/cpu/cpu7/sched_mostly_idle_load + + echo 0 > /proc/sys/kernel/sched_boost + + # Bring up all cores online + echo 1 > /sys/devices/system/cpu/cpu1/online + echo 1 > /sys/devices/system/cpu/cpu2/online + echo 1 > /sys/devices/system/cpu/cpu3/online + echo 1 > /sys/devices/system/cpu/cpu4/online + echo 1 > /sys/devices/system/cpu/cpu5/online + echo 1 > /sys/devices/system/cpu/cpu6/online + echo 1 > /sys/devices/system/cpu/cpu7/online + + #Disable CPU retention modes for 32bit builds + ProductName=`getprop ro.product.name` + if [ "$ProductName" == "msm8952_32" ] || [ "$ProductName" == "msm8952_32_LMT" ]; then + echo N > /sys/module/lpm_levels/system/a72/cpu4/retention/idle_enabled + echo N > /sys/module/lpm_levels/system/a72/cpu5/retention/idle_enabled + echo N > /sys/module/lpm_levels/system/a72/cpu6/retention/idle_enabled + echo N > /sys/module/lpm_levels/system/a72/cpu7/retention/idle_enabled + fi + + if [ `cat /sys/devices/soc0/revision` == "1.0" ]; then + # Disable l2-pc and l2-gdhs low power modes + echo N > /sys/module/lpm_levels/system/a53/a53-l2-gdhs/idle_enabled + echo N > /sys/module/lpm_levels/system/a72/a72-l2-gdhs/idle_enabled + echo N > /sys/module/lpm_levels/system/a53/a53-l2-pc/idle_enabled + echo N > /sys/module/lpm_levels/system/a72/a72-l2-pc/idle_enabled + fi + + # Enable LPM Prediction + echo 1 > /sys/module/lpm_levels/parameters/lpm_prediction + + # Enable Low power modes + echo 0 > /sys/module/lpm_levels/parameters/sleep_disabled + # Disable L2 GDHS on 8976 + echo N > /sys/module/lpm_levels/system/a53/a53-l2-gdhs/idle_enabled + echo N > /sys/module/lpm_levels/system/a72/a72-l2-gdhs/idle_enabled + + # Enable sched guided freq control + echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/use_sched_load + echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/use_migration_notif + echo 1 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/use_sched_load + echo 1 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/use_migration_notif + echo 50000 > /proc/sys/kernel/sched_freq_inc_notify + echo 50000 > /proc/sys/kernel/sched_freq_dec_notify + + # Enable core control + #for 8976 + echo 2 > /sys/devices/system/cpu/cpu4/core_ctl/min_cpus + echo 4 > /sys/devices/system/cpu/cpu4/core_ctl/max_cpus + echo 68 > /sys/devices/system/cpu/cpu4/core_ctl/busy_up_thres + echo 40 > /sys/devices/system/cpu/cpu4/core_ctl/busy_down_thres + echo 100 > /sys/devices/system/cpu/cpu4/core_ctl/offline_delay_ms + echo 1 > /sys/devices/system/cpu/cpu4/core_ctl/is_big_cluster + + # re-enable thermal & BCL core_control now + echo 1 > /sys/module/msm_thermal/core_control/enabled + for mode in /sys/devices/soc.0/qcom,bcl.*/mode + do + echo -n disable > $mode + done + for hotplug_mask in /sys/devices/soc.0/qcom,bcl.*/hotplug_mask + do + echo $bcl_hotplug_mask > $hotplug_mask + done + for hotplug_soc_mask in /sys/devices/soc.0/qcom,bcl.*/hotplug_soc_mask + do + echo $bcl_soc_hotplug_mask > $hotplug_soc_mask + done + for mode in /sys/devices/soc.0/qcom,bcl.*/mode + do + echo -n enable > $mode + done + + # Enable timer migration to little cluster + echo 1 > /proc/sys/kernel/power_aware_timer_migration + + case "$soc_id" in + "277" | "278") + # Start energy-awareness for 8976 + start energy-awareness + ;; + esac + + #enable sched colocation and colocation inheritance + echo 130 > /proc/sys/kernel/sched_grp_upmigrate + echo 110 > /proc/sys/kernel/sched_grp_downmigrate + echo 1 > /proc/sys/kernel/sched_enable_thread_grouping + + # Set Memory parameters + configure_memory_parameters + + ;; + esac + #Enable Memory Features + enable_memory_features + restorecon -R /sys/devices/system/cpu + ;; +esac + +case "$target" in + "msm8953") + + if [ -f /sys/devices/soc0/soc_id ]; then + soc_id=`cat /sys/devices/soc0/soc_id` + else + soc_id=`cat /sys/devices/system/soc/soc0/id` + fi + + if [ -f /sys/devices/soc0/hw_platform ]; then + hw_platform=`cat /sys/devices/soc0/hw_platform` + else + hw_platform=`cat /sys/devices/system/soc/soc0/hw_platform` + fi + + if [ -f /sys/devices/soc0/platform_subtype_id ]; then + platform_subtype_id=`cat /sys/devices/soc0/platform_subtype_id` + fi + + echo 0 > /proc/sys/kernel/sched_boost + + case "$soc_id" in + "293" | "304" | "338" | "351") + + # Start Host based Touch processing + case "$hw_platform" in + "MTP" | "Surf" | "RCM" ) + #if this directory is present, it means that a + #1200p panel is connected to the device. + dir="/sys/bus/i2c/devices/3-0038" + if [ ! -d "$dir" ]; then + start_hbtp + fi + ;; + esac + + if [ $soc_id -eq "338" ]; then + case "$hw_platform" in + "QRD" ) + if [ $platform_subtype_id -eq "1" ]; then + start_hbtp + fi + ;; + esac + fi + + #init task load, restrict wakeups to preferred cluster + echo 15 > /proc/sys/kernel/sched_init_task_load + + for devfreq_gov in /sys/class/devfreq/qcom,mincpubw*/governor + do + echo "cpufreq" > $devfreq_gov + done + + for devfreq_gov in /sys/class/devfreq/soc:qcom,cpubw/governor + do + echo "bw_hwmon" > $devfreq_gov + for cpu_io_percent in /sys/class/devfreq/soc:qcom,cpubw/bw_hwmon/io_percent + do + echo 34 > $cpu_io_percent + done + for cpu_guard_band in /sys/class/devfreq/soc:qcom,cpubw/bw_hwmon/guard_band_mbps + do + echo 0 > $cpu_guard_band + done + for cpu_hist_memory in /sys/class/devfreq/soc:qcom,cpubw/bw_hwmon/hist_memory + do + echo 20 > $cpu_hist_memory + done + for cpu_hyst_length in /sys/class/devfreq/soc:qcom,cpubw/bw_hwmon/hyst_length + do + echo 10 > $cpu_hyst_length + done + for cpu_idle_mbps in /sys/class/devfreq/soc:qcom,cpubw/bw_hwmon/idle_mbps + do + echo 1600 > $cpu_idle_mbps + done + for cpu_low_power_delay in /sys/class/devfreq/soc:qcom,cpubw/bw_hwmon/low_power_delay + do + echo 20 > $cpu_low_power_delay + done + for cpu_low_power_io_percent in /sys/class/devfreq/soc:qcom,cpubw/bw_hwmon/low_power_io_percent + do + echo 34 > $cpu_low_power_io_percent + done + for cpu_mbps_zones in /sys/class/devfreq/soc:qcom,cpubw/bw_hwmon/mbps_zones + do + echo "1611 3221 5859 6445 7104" > $cpu_mbps_zones + done + for cpu_sample_ms in /sys/class/devfreq/soc:qcom,cpubw/bw_hwmon/sample_ms + do + echo 4 > $cpu_sample_ms + done + for cpu_up_scale in /sys/class/devfreq/soc:qcom,cpubw/bw_hwmon/up_scale + do + echo 250 > $cpu_up_scale + done + for cpu_min_freq in /sys/class/devfreq/soc:qcom,cpubw/min_freq + do + echo 1611 > $cpu_min_freq + done + done + + for gpu_bimc_io_percent in /sys/class/devfreq/soc:qcom,gpubw/bw_hwmon/io_percent + do + echo 40 > $gpu_bimc_io_percent + done + + # disable thermal & BCL core_control to update interactive gov settings + echo 0 > /sys/module/msm_thermal/core_control/enabled + for mode in /sys/devices/soc.0/qcom,bcl.*/mode + do + echo -n disable > $mode + done + for hotplug_mask in /sys/devices/soc.0/qcom,bcl.*/hotplug_mask + do + bcl_hotplug_mask=`cat $hotplug_mask` + echo 0 > $hotplug_mask + done + for hotplug_soc_mask in /sys/devices/soc.0/qcom,bcl.*/hotplug_soc_mask + do + bcl_soc_hotplug_mask=`cat $hotplug_soc_mask` + echo 0 > $hotplug_soc_mask + done + for mode in /sys/devices/soc.0/qcom,bcl.*/mode + do + echo -n enable > $mode + done + + #if the kernel version >=4.9,use the schedutil governor + KernelVersionStr=`cat /proc/sys/kernel/osrelease` + KernelVersionS=${KernelVersionStr:2:2} + KernelVersionA=${KernelVersionStr:0:1} + KernelVersionB=${KernelVersionS%.*} + if [ $KernelVersionA -ge 4 ] && [ $KernelVersionB -ge 9 ]; then + 8953_sched_dcvs_eas + else + 8953_sched_dcvs_hmp + fi + echo 652800 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq + + # Bring up all cores online + echo 1 > /sys/devices/system/cpu/cpu1/online + echo 1 > /sys/devices/system/cpu/cpu2/online + echo 1 > /sys/devices/system/cpu/cpu3/online + echo 1 > /sys/devices/system/cpu/cpu4/online + echo 1 > /sys/devices/system/cpu/cpu5/online + echo 1 > /sys/devices/system/cpu/cpu6/online + echo 1 > /sys/devices/system/cpu/cpu7/online + + # Enable low power modes + echo 0 > /sys/module/lpm_levels/parameters/sleep_disabled + + # re-enable thermal & BCL core_control now + echo 1 > /sys/module/msm_thermal/core_control/enabled + for mode in /sys/devices/soc.0/qcom,bcl.*/mode + do + echo -n disable > $mode + done + for hotplug_mask in /sys/devices/soc.0/qcom,bcl.*/hotplug_mask + do + echo $bcl_hotplug_mask > $hotplug_mask + done + for hotplug_soc_mask in /sys/devices/soc.0/qcom,bcl.*/hotplug_soc_mask + do + echo $bcl_soc_hotplug_mask > $hotplug_soc_mask + done + for mode in /sys/devices/soc.0/qcom,bcl.*/mode + do + echo -n enable > $mode + done + + # SMP scheduler + echo 85 > /proc/sys/kernel/sched_upmigrate + echo 85 > /proc/sys/kernel/sched_downmigrate + + # Set Memory parameters + configure_memory_parameters + ;; + esac + case "$soc_id" in + "349" | "350") + + # Start Host based Touch processing + case "$hw_platform" in + "MTP" | "Surf" | "RCM" | "QRD" ) + start_hbtp + ;; + esac + + for devfreq_gov in /sys/class/devfreq/qcom,mincpubw*/governor + do + echo "cpufreq" > $devfreq_gov + done + for cpubw in /sys/class/devfreq/*qcom,cpubw* + do + echo "bw_hwmon" > $cpubw/governor + echo 50 > $cpubw/polling_interval + echo "1611 3221 5859 6445 7104" > $cpubw/bw_hwmon/mbps_zones + echo 4 > $cpubw/bw_hwmon/sample_ms + echo 34 > $cpubw/bw_hwmon/io_percent + echo 20 > $cpubw/bw_hwmon/hist_memory + echo 80 > $cpubw/bw_hwmon/down_thres + echo 0 > $cpubw/bw_hwmon/hyst_length + echo 0 > $cpubw/bw_hwmon/guard_band_mbps + echo 250 > $cpubw/bw_hwmon/up_scale + echo 1600 > $cpubw/bw_hwmon/idle_mbps + done + + # Configure DCC module to capture critical register contents when device crashes + for DCC_PATH in /sys/bus/platform/devices/*.dcc* + do + echo 0 > $DCC_PATH/enable + echo cap > $DCC_PATH/func_type + echo sram > $DCC_PATH/data_sink + echo 1 > $DCC_PATH/config_reset + + # Register specifies APC CPR closed-loop settled voltage for current voltage corner + echo 0xb1d2c18 1 > $DCC_PATH/config + + # Register specifies SW programmed open-loop voltage for current voltage corner + echo 0xb1d2900 1 > $DCC_PATH/config + + # Register specifies APM switch settings and APM FSM state + echo 0xb1112b0 1 > $DCC_PATH/config + + # Register specifies CPR mode change state and also #online cores input to CPR HW + echo 0xb018798 1 > $DCC_PATH/config + + echo 1 > $DCC_PATH/enable + done + + # disable thermal & BCL core_control to update interactive gov settings + echo 0 > /sys/module/msm_thermal/core_control/enabled + for mode in /sys/devices/soc.0/qcom,bcl.*/mode + do + echo -n disable > $mode + done + for hotplug_mask in /sys/devices/soc.0/qcom,bcl.*/hotplug_mask + do + bcl_hotplug_mask=`cat $hotplug_mask` + echo 0 > $hotplug_mask + done + for hotplug_soc_mask in /sys/devices/soc.0/qcom,bcl.*/hotplug_soc_mask + do + bcl_soc_hotplug_mask=`cat $hotplug_soc_mask` + echo 0 > $hotplug_soc_mask + done + for mode in /sys/devices/soc.0/qcom,bcl.*/mode + do + echo -n enable > $mode + done + + # configure governor settings for little cluster + echo 1 > /sys/devices/system/cpu/cpu0/online + echo "schedutil" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor + echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/rate_limit_us + echo 1363200 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/hispeed_freq + #default value for hispeed_load is 90, for sdm632 it should be 85 + echo 85 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/hispeed_load + # sched_load_boost as -6 is equivalent to target load as 85. + echo -6 > /sys/devices/system/cpu/cpu0/sched_load_boost + echo -6 > /sys/devices/system/cpu/cpu1/sched_load_boost + echo -6 > /sys/devices/system/cpu/cpu2/sched_load_boost + echo -6 > /sys/devices/system/cpu/cpu3/sched_load_boost + + # configure governor settings for big cluster + echo 1 > /sys/devices/system/cpu/cpu4/online + echo "schedutil" > /sys/devices/system/cpu/cpu4/cpufreq/scaling_governor + echo 0 > /sys/devices/system/cpu/cpu4/cpufreq/schedutil/rate_limit_us + echo 1401600 > /sys/devices/system/cpu/cpu4/cpufreq/schedutil/hispeed_freq + #default value for hispeed_load is 90, for sdm632 it should be 85 + echo 85 > /sys/devices/system/cpu/cpu4/cpufreq/schedutil/hispeed_load + # sched_load_boost as -6 is equivalent to target load as 85. + echo -6 > /sys/devices/system/cpu/cpu4/sched_load_boost + echo -6 > /sys/devices/system/cpu/cpu5/sched_load_boost + echo -6 > /sys/devices/system/cpu/cpu7/sched_load_boost + echo -6 > /sys/devices/system/cpu/cpu6/sched_load_boost + + echo 614400 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq + echo 633600 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_min_freq + + # cpuset settings + echo 0-3 > /dev/cpuset/background/cpus + echo 0-3 > /dev/cpuset/system-background/cpus + # choose idle CPU for top app tasks + echo 1 > /dev/stune/top-app/schedtune.prefer_idle + + # re-enable thermal & BCL core_control now + echo 1 > /sys/module/msm_thermal/core_control/enabled + for mode in /sys/devices/soc.0/qcom,bcl.*/mode + do + echo -n disable > $mode + done + for hotplug_mask in /sys/devices/soc.0/qcom,bcl.*/hotplug_mask + do + echo $bcl_hotplug_mask > $hotplug_mask + done + for hotplug_soc_mask in /sys/devices/soc.0/qcom,bcl.*/hotplug_soc_mask + do + echo $bcl_soc_hotplug_mask > $hotplug_soc_mask + done + for mode in /sys/devices/soc.0/qcom,bcl.*/mode + do + echo -n enable > $mode + done + + # Disable Core control + echo 0 > /sys/devices/system/cpu/cpu0/core_ctl/enable + echo 0 > /sys/devices/system/cpu/cpu4/core_ctl/enable + + # Bring up all cores online + echo 1 > /sys/devices/system/cpu/cpu1/online + echo 1 > /sys/devices/system/cpu/cpu2/online + echo 1 > /sys/devices/system/cpu/cpu3/online + echo 1 > /sys/devices/system/cpu/cpu4/online + echo 1 > /sys/devices/system/cpu/cpu5/online + echo 1 > /sys/devices/system/cpu/cpu6/online + echo 1 > /sys/devices/system/cpu/cpu7/online + + # Enable low power modes + echo 0 > /sys/module/lpm_levels/parameters/sleep_disabled + + # Set Memory parameters + configure_memory_parameters + + # Setting b.L scheduler parameters + echo 76 > /proc/sys/kernel/sched_downmigrate + echo 86 > /proc/sys/kernel/sched_upmigrate + echo 80 > /proc/sys/kernel/sched_group_downmigrate + echo 90 > /proc/sys/kernel/sched_group_upmigrate + echo 1 > /proc/sys/kernel/sched_walt_rotate_big_tasks + + # Enable min frequency adjustment for big cluster + if [ -f /sys/module/big_cluster_min_freq_adjust/parameters/min_freq_cluster ]; then + echo "4-7" > /sys/module/big_cluster_min_freq_adjust/parameters/min_freq_cluster + fi + echo 1 > /sys/module/big_cluster_min_freq_adjust/parameters/min_freq_adjust + + ;; + esac + ;; +esac + +case "$target" in + "msm8937") + + if [ -f /sys/devices/soc0/soc_id ]; then + soc_id=`cat /sys/devices/soc0/soc_id` + else + soc_id=`cat /sys/devices/system/soc/soc0/id` + fi + + if [ -f /sys/devices/soc0/hw_platform ]; then + hw_platform=`cat /sys/devices/soc0/hw_platform` + else + hw_platform=`cat /sys/devices/system/soc/soc0/hw_platform` + fi + if [ -f /sys/devices/soc0/platform_subtype_id ]; then + platform_subtype_id=`cat /sys/devices/soc0/platform_subtype_id` + fi + + # Socid 386 = Pukeena + case "$soc_id" in + "303" | "307" | "308" | "309" | "320" | "386" | "436") + + # Start Host based Touch processing + case "$hw_platform" in + "MTP" ) + start_hbtp + ;; + esac + + case "$hw_platform" in + "Surf" | "RCM" ) + if [ $platform_subtype_id -ne "4" ]; then + start_hbtp + fi + ;; + esac + # Apply Scheduler and Governor settings for 8917 / 8920 + + echo 20000000 > /proc/sys/kernel/sched_ravg_window + + #disable sched_boost in 8917 + echo 0 > /proc/sys/kernel/sched_boost + + # core_ctl is not needed for 8917. Disable it. + disable_core_ctl + + for devfreq_gov in /sys/class/devfreq/qcom,mincpubw*/governor + do + echo "cpufreq" > $devfreq_gov + done + + for devfreq_gov in /sys/class/devfreq/soc:qcom,cpubw/governor + do + echo "bw_hwmon" > $devfreq_gov + for cpu_io_percent in /sys/class/devfreq/soc:qcom,cpubw/bw_hwmon/io_percent + do + echo 20 > $cpu_io_percent + done + for cpu_guard_band in /sys/class/devfreq/soc:qcom,cpubw/bw_hwmon/guard_band_mbps + do + echo 30 > $cpu_guard_band + done + done + + for gpu_bimc_io_percent in /sys/class/devfreq/soc:qcom,gpubw/bw_hwmon/io_percent + do + echo 40 > $gpu_bimc_io_percent + done + + # disable thermal core_control to update interactive gov settings + echo 0 > /sys/module/msm_thermal/core_control/enabled + + KernelVersionStr=`cat /proc/sys/kernel/osrelease` + KernelVersionS=${KernelVersionStr:2:2} + KernelVersionA=${KernelVersionStr:0:1} + KernelVersionB=${KernelVersionS%.*} + if [ $KernelVersionA -ge 4 ] && [ $KernelVersionB -ge 9 ]; then + 8917_sched_dcvs_eas + else + 8917_sched_dcvs_hmp + fi + echo 960000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq + # re-enable thermal core_control now + echo 1 > /sys/module/msm_thermal/core_control/enabled + + # Disable L2-GDHS low power modes + echo N > /sys/module/lpm_levels/perf/perf-l2-gdhs/idle_enabled + echo N > /sys/module/lpm_levels/perf/perf-l2-gdhs/suspend_enabled + + # Bring up all cores online + echo 1 > /sys/devices/system/cpu/cpu1/online + echo 1 > /sys/devices/system/cpu/cpu2/online + echo 1 > /sys/devices/system/cpu/cpu3/online + + # Enable low power modes + echo 0 > /sys/module/lpm_levels/parameters/sleep_disabled + + # Set rps mask + echo 2 > /sys/class/net/rmnet0/queues/rx-0/rps_cpus + + # Enable dynamic clock gating + echo 1 > /sys/module/lpm_levels/lpm_workarounds/dynamic_clock_gating + # Enable timer migration to little cluster + echo 1 > /proc/sys/kernel/power_aware_timer_migration + # Set Memory parameters + configure_memory_parameters + ;; + *) + ;; + esac + + case "$soc_id" in + "294" | "295" | "313" ) + + # Start Host based Touch processing + case "$hw_platform" in + "MTP" | "Surf" | "RCM" ) + start_hbtp + ;; + esac + + # Apply Scheduler and Governor settings for 8937/8940 + + # HMP scheduler settings + echo 3 > /proc/sys/kernel/sched_window_stats_policy + echo 3 > /proc/sys/kernel/sched_ravg_hist_size + echo 20000000 > /proc/sys/kernel/sched_ravg_window + + #disable sched_boost in 8937 + echo 0 > /proc/sys/kernel/sched_boost + + for devfreq_gov in /sys/class/devfreq/qcom,mincpubw*/governor + do + echo "cpufreq" > $devfreq_gov + done + + for devfreq_gov in /sys/class/devfreq/soc:qcom,cpubw/governor + do + echo "bw_hwmon" > $devfreq_gov + for cpu_io_percent in /sys/class/devfreq/soc:qcom,cpubw/bw_hwmon/io_percent + do + echo 20 > $cpu_io_percent + done + for cpu_guard_band in /sys/class/devfreq/soc:qcom,cpubw/bw_hwmon/guard_band_mbps + do + echo 30 > $cpu_guard_band + done + done + + for gpu_bimc_io_percent in /sys/class/devfreq/soc:qcom,gpubw/bw_hwmon/io_percent + do + echo 40 > $gpu_bimc_io_percent + done + + # disable thermal core_control to update interactive gov and core_ctl settings + echo 0 > /sys/module/msm_thermal/core_control/enabled + + KernelVersionStr=`cat /proc/sys/kernel/osrelease` + KernelVersionS=${KernelVersionStr:2:2} + KernelVersionA=${KernelVersionStr:0:1} + KernelVersionB=${KernelVersionS%.*} + if [ $KernelVersionA -ge 4 ] && [ $KernelVersionB -ge 9 ]; then + 8937_sched_dcvs_eas + else + 8937_sched_dcvs_hmp + fi + echo 960000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq + echo 768000 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_min_freq + # Disable L2-GDHS low power modes + echo N > /sys/module/lpm_levels/system/pwr/pwr-l2-gdhs/idle_enabled + echo N > /sys/module/lpm_levels/system/pwr/pwr-l2-gdhs/suspend_enabled + echo N > /sys/module/lpm_levels/system/perf/perf-l2-gdhs/idle_enabled + echo N > /sys/module/lpm_levels/system/perf/perf-l2-gdhs/suspend_enabled + + # Bring up all cores online + echo 1 > /sys/devices/system/cpu/cpu1/online + echo 1 > /sys/devices/system/cpu/cpu2/online + echo 1 > /sys/devices/system/cpu/cpu3/online + echo 1 > /sys/devices/system/cpu/cpu4/online + echo 1 > /sys/devices/system/cpu/cpu5/online + echo 1 > /sys/devices/system/cpu/cpu6/online + echo 1 > /sys/devices/system/cpu/cpu7/online + + # Enable low power modes + echo 0 > /sys/module/lpm_levels/parameters/sleep_disabled + + # HMP scheduler (big.Little cluster related) settings + echo 93 > /proc/sys/kernel/sched_upmigrate + echo 83 > /proc/sys/kernel/sched_downmigrate + + # Enable core control + echo 2 > /sys/devices/system/cpu/cpu0/core_ctl/min_cpus + echo 4 > /sys/devices/system/cpu/cpu0/core_ctl/max_cpus + echo 68 > /sys/devices/system/cpu/cpu0/core_ctl/busy_up_thres + echo 40 > /sys/devices/system/cpu/cpu0/core_ctl/busy_down_thres + echo 100 > /sys/devices/system/cpu/cpu0/core_ctl/offline_delay_ms + echo 1 > /sys/devices/system/cpu/cpu0/core_ctl/is_big_cluster + + # re-enable thermal core_control + echo 1 > /sys/module/msm_thermal/core_control/enabled + + # Enable dynamic clock gating + echo 1 > /sys/module/lpm_levels/lpm_workarounds/dynamic_clock_gating + # Enable timer migration to little cluster + echo 1 > /proc/sys/kernel/power_aware_timer_migration + # Set Memory parameters + configure_memory_parameters + ;; + *) + + ;; + esac + + case "$soc_id" in + "354" | "364" | "353" | "363" ) + + # Start Host based Touch processing + case "$hw_platform" in + "MTP" | "Surf" | "RCM" | "QRD" ) + start_hbtp + ;; + esac + + # Apply settings for sdm429/sda429/sdm439/sda439 + + for cpubw in /sys/class/devfreq/*qcom,mincpubw* + do + echo "cpufreq" > $cpubw/governor + done + + for cpubw in /sys/class/devfreq/*qcom,cpubw* + do + echo "bw_hwmon" > $cpubw/governor + echo 20 > $cpubw/bw_hwmon/io_percent + echo 30 > $cpubw/bw_hwmon/guard_band_mbps + done + + for gpu_bimc_io_percent in /sys/class/devfreq/soc:qcom,gpubw/bw_hwmon/io_percent + do + echo 40 > $gpu_bimc_io_percent + done + + case "$soc_id" in + "353" | "363" ) + # Apply settings for sdm439/sda439 + # configure schedutil governor settings + # enable governor for perf cluster + echo 1 > /sys/devices/system/cpu/cpu0/online + echo "schedutil" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor + echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/rate_limit_us + #set the hispeed_freq + echo 1497600 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/hispeed_freq + echo 80 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/hispeed_load + echo 960000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq + # sched_load_boost as -6 is equivalent to target load as 85. + echo -6 > /sys/devices/system/cpu/cpu0/sched_load_boost + echo -6 > /sys/devices/system/cpu/cpu1/sched_load_boost + echo -6 > /sys/devices/system/cpu/cpu2/sched_load_boost + echo -6 > /sys/devices/system/cpu/cpu3/sched_load_boost + + ## enable governor for power cluster + echo 1 > /sys/devices/system/cpu/cpu4/online + echo "schedutil" > /sys/devices/system/cpu/cpu4/cpufreq/scaling_governor + echo 0 > /sys/devices/system/cpu/cpu4/cpufreq/schedutil/rate_limit_us + #set the hispeed_freq + echo 998400 > /sys/devices/system/cpu/cpu4/cpufreq/schedutil/hispeed_freq + echo 85 > /sys/devices/system/cpu/cpu4/cpufreq/schedutil/hispeed_load + echo 768000 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_min_freq + # sched_load_boost as -6 is equivalent to target load as 85. + echo -6 > /sys/devices/system/cpu/cpu4/sched_load_boost + echo -6 > /sys/devices/system/cpu/cpu5/sched_load_boost + echo -6 > /sys/devices/system/cpu/cpu6/sched_load_boost + echo -6 > /sys/devices/system/cpu/cpu7/sched_load_boost + + # EAS scheduler (big.Little cluster related) settings + echo 93 > /proc/sys/kernel/sched_upmigrate + echo 83 > /proc/sys/kernel/sched_downmigrate + echo 140 > /proc/sys/kernel/sched_group_upmigrate + echo 120 > /proc/sys/kernel/sched_group_downmigrate + + # cpuset settings + #echo 0-3 > /dev/cpuset/background/cpus + #echo 0-3 > /dev/cpuset/system-background/cpus + + # Bring up all cores online + echo 1 > /sys/devices/system/cpu/cpu1/online + echo 1 > /sys/devices/system/cpu/cpu2/online + echo 1 > /sys/devices/system/cpu/cpu3/online + echo 1 > /sys/devices/system/cpu/cpu4/online + echo 1 > /sys/devices/system/cpu/cpu5/online + echo 1 > /sys/devices/system/cpu/cpu6/online + echo 1 > /sys/devices/system/cpu/cpu7/online + + # Enable core control + echo 2 > /sys/devices/system/cpu/cpu0/core_ctl/min_cpus + echo 4 > /sys/devices/system/cpu/cpu0/core_ctl/max_cpus + echo 68 > /sys/devices/system/cpu/cpu0/core_ctl/busy_up_thres + echo 40 > /sys/devices/system/cpu/cpu0/core_ctl/busy_down_thres + echo 100 > /sys/devices/system/cpu/cpu0/core_ctl/offline_delay_ms + echo 1 > /sys/devices/system/cpu/cpu0/core_ctl/is_big_cluster + echo 4 > /sys/devices/system/cpu/cpu0/core_ctl/task_thres + + # Big cluster min frequency adjust settings + if [ -f /sys/module/big_cluster_min_freq_adjust/parameters/min_freq_cluster ]; then + echo "0-3" > /sys/module/big_cluster_min_freq_adjust/parameters/min_freq_cluster + fi + echo 1305600 > /sys/module/big_cluster_min_freq_adjust/parameters/min_freq_floor + ;; + *) + # Apply settings for sdm429/sda429 + # configure schedutil governor settings + echo 1 > /sys/devices/system/cpu/cpu0/online + echo "schedutil" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor + echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/rate_limit_us + #set the hispeed_freq + echo 1305600 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/hispeed_freq + echo 80 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/hispeed_load + echo 960000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq + # sched_load_boost as -6 is equivalent to target load as 85. + echo -6 > /sys/devices/system/cpu/cpu0/sched_load_boost + echo -6 > /sys/devices/system/cpu/cpu1/sched_load_boost + echo -6 > /sys/devices/system/cpu/cpu2/sched_load_boost + echo -6 > /sys/devices/system/cpu/cpu3/sched_load_boost + + # Bring up all cores online + echo 1 > /sys/devices/system/cpu/cpu1/online + echo 1 > /sys/devices/system/cpu/cpu2/online + echo 1 > /sys/devices/system/cpu/cpu3/online + ;; + esac + + # Set Memory parameters + configure_memory_parameters + + #disable sched_boost + echo 0 > /proc/sys/kernel/sched_boost + + # Disable L2-GDHS low power modes + echo N > /sys/module/lpm_levels/system/pwr/pwr-l2-gdhs/idle_enabled + echo N > /sys/module/lpm_levels/system/pwr/pwr-l2-gdhs/suspend_enabled + echo N > /sys/module/lpm_levels/system/perf/perf-l2-gdhs/idle_enabled + echo N > /sys/module/lpm_levels/system/perf/perf-l2-gdhs/suspend_enabled + + # Enable low power modes + echo 0 > /sys/module/lpm_levels/parameters/sleep_disabled + + case "$soc_id" in + "353" | "363" ) + echo 1 > /sys/module/big_cluster_min_freq_adjust/parameters/min_freq_adjust + ;; + esac + ;; + esac + + case "$soc_id" in + "386" | "436") + + # Start Host based Touch processing + case "$hw_platform" in + "QRD" ) + start_hbtp + ;; + esac + ;; + esac + ;; +esac + +case "$target" in + "sdm660") + + # Set the default IRQ affinity to the primary cluster. When a + # CPU is isolated/hotplugged, the IRQ affinity is adjusted + # to one of the CPU from the default IRQ affinity mask. + echo f > /proc/irq/default_smp_affinity + + if [ -f /sys/devices/soc0/soc_id ]; then + soc_id=`cat /sys/devices/soc0/soc_id` + else + soc_id=`cat /sys/devices/system/soc/soc0/id` + fi + + if [ -f /sys/devices/soc0/hw_platform ]; then + hw_platform=`cat /sys/devices/soc0/hw_platform` + else + hw_platform=`cat /sys/devices/system/soc/soc0/hw_platform` + fi + + panel=`cat /sys/class/graphics/fb0/modes` + if [ "${panel:5:1}" == "x" ]; then + panel=${panel:2:3} + else + panel=${panel:2:4} + fi + + if [ $panel -gt 1080 ]; then + echo 2 > /proc/sys/kernel/sched_window_stats_policy + echo 5 > /proc/sys/kernel/sched_ravg_hist_size + else + echo 3 > /proc/sys/kernel/sched_window_stats_policy + echo 3 > /proc/sys/kernel/sched_ravg_hist_size + fi + #Apply settings for sdm660, sdm636,sda636 + case "$soc_id" in + "317" | "324" | "325" | "326" | "345" | "346" ) + + echo 2 > /sys/devices/system/cpu/cpu4/core_ctl/min_cpus + echo 60 > /sys/devices/system/cpu/cpu4/core_ctl/busy_up_thres + echo 30 > /sys/devices/system/cpu/cpu4/core_ctl/busy_down_thres + echo 100 > /sys/devices/system/cpu/cpu4/core_ctl/offline_delay_ms + echo 1 > /sys/devices/system/cpu/cpu4/core_ctl/is_big_cluster + echo 4 > /sys/devices/system/cpu/cpu4/core_ctl/task_thres + + # Setting b.L scheduler parameters + echo 96 > /proc/sys/kernel/sched_upmigrate + echo 90 > /proc/sys/kernel/sched_downmigrate + echo 140 > /proc/sys/kernel/sched_group_upmigrate + echo 120 > /proc/sys/kernel/sched_group_downmigrate + + # cpuset settings + echo 0-3 > /dev/cpuset/background/cpus + echo 0-3 > /dev/cpuset/system-background/cpus + + #if the kernel version >=4.14,use the schedutil governor + KernelVersionStr=`cat /proc/sys/kernel/osrelease` + KernelVersionS=${KernelVersionStr:2:2} + KernelVersionA=${KernelVersionStr:0:1} + KernelVersionB=${KernelVersionS%.*} + if [ $KernelVersionA -ge 4 ] && [ $KernelVersionB -ge 14 ]; then + sdm660_sched_schedutil_dcvs + else + sdm660_sched_interactive_dcvs + fi + + # Set Memory parameters + configure_memory_parameters + + # enable LPM + echo 0 > /sys/module/lpm_levels/parameters/sleep_disabled + + # Start cdsprpcd only for sdm660 and disable for sdm630 + start vendor.cdsprpcd + + # Start Host based Touch processing + case "$hw_platform" in + "MTP" | "Surf" | "RCM" | "QRD" ) + start_hbtp + ;; + esac + ;; + esac + #Apply settings for sdm630 and Tahaa + case "$soc_id" in + "318" | "327" | "385" ) + + # Start Host based Touch processing + case "$hw_platform" in + "MTP" | "Surf" | "RCM" | "QRD" ) + start_hbtp + ;; + esac + + # Setting b.L scheduler parameters + echo 85 > /proc/sys/kernel/sched_upmigrate + echo 85 > /proc/sys/kernel/sched_downmigrate + echo 900 > /proc/sys/kernel/sched_group_upmigrate + echo 900 > /proc/sys/kernel/sched_group_downmigrate + echo 0 > /proc/sys/kernel/sched_select_prev_cpu_us + echo 400000 > /proc/sys/kernel/sched_freq_inc_notify + echo 400000 > /proc/sys/kernel/sched_freq_dec_notify + echo 3 > /proc/sys/kernel/sched_spill_nr_run + + #init task load, restrict wakeups to preferred cluster + echo 15 > /proc/sys/kernel/sched_init_task_load + echo 1 > /proc/sys/kernel/sched_restrict_cluster_spill + echo 50000 > /proc/sys/kernel/sched_short_burst_ns + + # cpuset settings + echo 0-3 > /dev/cpuset/background/cpus + echo 0-3 > /dev/cpuset/system-background/cpus + + # disable thermal bcl hotplug to switch governor + echo 0 > /sys/module/msm_thermal/core_control/enabled + for mode in /sys/devices/soc.0/qcom,bcl.*/mode + do + echo -n disable > $mode + done + for hotplug_mask in /sys/devices/soc.0/qcom,bcl.*/hotplug_mask + do + bcl_hotplug_mask=`cat $hotplug_mask` + echo 0 > $hotplug_mask + done + for hotplug_soc_mask in /sys/devices/soc.0/qcom,bcl.*/hotplug_soc_mask + do + bcl_soc_hotplug_mask=`cat $hotplug_soc_mask` + echo 0 > $hotplug_soc_mask + done + for mode in /sys/devices/soc.0/qcom,bcl.*/mode + do + echo -n enable > $mode + done + + # online CPU0 + echo 1 > /sys/devices/system/cpu/cpu0/online + # configure governor settings for Big cluster(CPU0 to CPU3) + echo "interactive" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor + echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/use_sched_load + echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/use_migration_notif + echo "19000 1344000:39000" > /sys/devices/system/cpu/cpu0/cpufreq/interactive/above_hispeed_delay + echo 85 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/go_hispeed_load + echo 20000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/timer_rate + echo 1344000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/hispeed_freq + echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/io_is_busy + echo "85 1344000:80" > /sys/devices/system/cpu/cpu0/cpufreq/interactive/target_loads + echo 39000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/min_sample_time + echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/max_freq_hysteresis + echo 787200 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq + echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/ignore_hispeed_on_notif + + # online CPU4 + echo 1 > /sys/devices/system/cpu/cpu4/online + # configure governor settings for Little cluster(CPU4 to CPU7) + echo "interactive" > /sys/devices/system/cpu/cpu4/cpufreq/scaling_governor + echo 1 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/use_sched_load + echo 1 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/use_migration_notif + echo "19000 1094400:39000" > /sys/devices/system/cpu/cpu4/cpufreq/interactive/above_hispeed_delay + echo 85 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/go_hispeed_load + echo 20000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/timer_rate + echo 1094400 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/hispeed_freq + echo 0 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/io_is_busy + echo "85 1094400:80" > /sys/devices/system/cpu/cpu4/cpufreq/interactive/target_loads + echo 39000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/min_sample_time + echo 0 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/max_freq_hysteresis + echo 614400 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_min_freq + echo 0 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/ignore_hispeed_on_notif + + # bring all cores online + echo 1 > /sys/devices/system/cpu/cpu0/online + echo 1 > /sys/devices/system/cpu/cpu1/online + echo 1 > /sys/devices/system/cpu/cpu2/online + echo 1 > /sys/devices/system/cpu/cpu3/online + echo 1 > /sys/devices/system/cpu/cpu4/online + echo 1 > /sys/devices/system/cpu/cpu5/online + echo 1 > /sys/devices/system/cpu/cpu6/online + echo 1 > /sys/devices/system/cpu/cpu7/online + + # configure LPM + echo N > /sys/module/lpm_levels/system/perf/cpu0/ret/idle_enabled + echo N > /sys/module/lpm_levels/system/perf/cpu1/ret/idle_enabled + echo N > /sys/module/lpm_levels/system/perf/cpu2/ret/idle_enabled + echo N > /sys/module/lpm_levels/system/perf/cpu3/ret/idle_enabled + echo N > /sys/module/lpm_levels/system/pwr/cpu4/ret/idle_enabled + echo N > /sys/module/lpm_levels/system/pwr/cpu5/ret/idle_enabled + echo N > /sys/module/lpm_levels/system/pwr/cpu6/ret/idle_enabled + echo N > /sys/module/lpm_levels/system/pwr/cpu7/ret/idle_enabled + echo N > /sys/module/lpm_levels/system/pwr/pwr-l2-dynret/idle_enabled + echo N > /sys/module/lpm_levels/system/perf/perf-l2-dynret/idle_enabled + # enable LPM + echo 0 > /sys/module/lpm_levels/parameters/sleep_disabled + + # re-enable thermal and BCL hotplug + echo 1 > /sys/module/msm_thermal/core_control/enabled + for mode in /sys/devices/soc.0/qcom,bcl.*/mode + do + echo -n disable > $mode + done + for hotplug_mask in /sys/devices/soc.0/qcom,bcl.*/hotplug_mask + do + echo $bcl_hotplug_mask > $hotplug_mask + done + for hotplug_soc_mask in /sys/devices/soc.0/qcom,bcl.*/hotplug_soc_mask + do + echo $bcl_soc_hotplug_mask > $hotplug_soc_mask + done + for mode in /sys/devices/soc.0/qcom,bcl.*/mode + do + echo -n enable > $mode + done + + # Set Memory parameters + configure_memory_parameters + + # Enable bus-dcvs + for cpubw in /sys/class/devfreq/*qcom,cpubw* + do + echo "bw_hwmon" > $cpubw/governor + echo 50 > $cpubw/polling_interval + echo 762 > $cpubw/min_freq + echo "1525 3143 4173 5195 5859 7759 9887 10327" > $cpubw/bw_hwmon/mbps_zones + echo 4 > $cpubw/bw_hwmon/sample_ms + echo 85 > $cpubw/bw_hwmon/io_percent + echo 20 > $cpubw/bw_hwmon/hist_memory + echo 0 > $cpubw/bw_hwmon/hyst_length + echo 100 > $cpubw/bw_hwmon/decay_rate + echo 50 > $cpubw/bw_hwmon/bw_step + echo 80 > $cpubw/bw_hwmon/down_thres + echo 0 > $cpubw/bw_hwmon/low_power_ceil_mbps + echo 50 > $cpubw/bw_hwmon/low_power_io_percent + echo 20 > $cpubw/bw_hwmon/low_power_delay + echo 0 > $cpubw/bw_hwmon/guard_band_mbps + echo 250 > $cpubw/bw_hwmon/up_scale + echo 1600 > $cpubw/bw_hwmon/idle_mbps + done + + for memlat in /sys/class/devfreq/*qcom,memlat-cpu* + do + echo "mem_latency" > $memlat/governor + echo 10 > $memlat/polling_interval + echo 400 > $memlat/mem_latency/ratio_ceil + done + + echo "cpufreq" > /sys/class/devfreq/soc:qcom,mincpubw/governor + ;; + esac + ;; +esac + +case "$target" in + "sdm710") + + #Apply settings for sdm710 + # Set the default IRQ affinity to the silver cluster. When a + # CPU is isolated/hotplugged, the IRQ affinity is adjusted + # to one of the CPU from the default IRQ affinity mask. + echo 3f > /proc/irq/default_smp_affinity + + if [ -f /sys/devices/soc0/soc_id ]; then + soc_id=`cat /sys/devices/soc0/soc_id` + else + soc_id=`cat /sys/devices/system/soc/soc0/id` + fi + + if [ -f /sys/devices/soc0/hw_platform ]; then + hw_platform=`cat /sys/devices/soc0/hw_platform` + else + hw_platform=`cat /sys/devices/system/soc/soc0/hw_platform` + fi + + case "$soc_id" in + "336" | "337" | "347" | "360" | "393" ) + + # Start Host based Touch processing + case "$hw_platform" in + "MTP" | "Surf" | "RCM" | "QRD" ) + start_hbtp + ;; + esac + + # Core control parameters on silver + echo 0 0 0 0 1 1 > /sys/devices/system/cpu/cpu0/core_ctl/not_preferred + echo 4 > /sys/devices/system/cpu/cpu0/core_ctl/min_cpus + echo 60 > /sys/devices/system/cpu/cpu0/core_ctl/busy_up_thres + echo 40 > /sys/devices/system/cpu/cpu0/core_ctl/busy_down_thres + echo 100 > /sys/devices/system/cpu/cpu0/core_ctl/offline_delay_ms + echo 0 > /sys/devices/system/cpu/cpu0/core_ctl/is_big_cluster + echo 8 > /sys/devices/system/cpu/cpu0/core_ctl/task_thres + + # Setting b.L scheduler parameters + echo 96 > /proc/sys/kernel/sched_upmigrate + echo 90 > /proc/sys/kernel/sched_downmigrate + echo 140 > /proc/sys/kernel/sched_group_upmigrate + echo 120 > /proc/sys/kernel/sched_group_downmigrate + echo 1 > /proc/sys/kernel/sched_walt_rotate_big_tasks + + # configure governor settings for little cluster + echo "schedutil" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor + echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/rate_limit_us + echo 1209600 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/hispeed_freq + echo 576000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq + + # configure governor settings for big cluster + echo "schedutil" > /sys/devices/system/cpu/cpu6/cpufreq/scaling_governor + echo 0 > /sys/devices/system/cpu/cpu6/cpufreq/schedutil/rate_limit_us + echo 1344000 > /sys/devices/system/cpu/cpu6/cpufreq/schedutil/hispeed_freq + echo 652800 > /sys/devices/system/cpu/cpu6/cpufreq/scaling_min_freq + + # sched_load_boost as -6 is equivalent to target load as 85. It is per cpu tunable. + echo -6 > /sys/devices/system/cpu/cpu6/sched_load_boost + echo -6 > /sys/devices/system/cpu/cpu7/sched_load_boost + echo 85 > /sys/devices/system/cpu/cpu6/cpufreq/schedutil/hispeed_load + + echo "0:1209600" > /sys/module/cpu_boost/parameters/input_boost_freq + echo 40 > /sys/module/cpu_boost/parameters/input_boost_ms + + # Set Memory parameters + configure_memory_parameters + + # Enable bus-dcvs + for cpubw in /sys/class/devfreq/*qcom,cpubw* + do + echo "bw_hwmon" > $cpubw/governor + echo 50 > $cpubw/polling_interval + echo "1144 1720 2086 2929 3879 5931 6881" > $cpubw/bw_hwmon/mbps_zones + echo 4 > $cpubw/bw_hwmon/sample_ms + echo 68 > $cpubw/bw_hwmon/io_percent + echo 20 > $cpubw/bw_hwmon/hist_memory + echo 0 > $cpubw/bw_hwmon/hyst_length + echo 80 > $cpubw/bw_hwmon/down_thres + echo 0 > $cpubw/bw_hwmon/guard_band_mbps + echo 250 > $cpubw/bw_hwmon/up_scale + echo 1600 > $cpubw/bw_hwmon/idle_mbps + done + + #Enable mem_latency governor for DDR scaling + for memlat in /sys/class/devfreq/*qcom,memlat-cpu* + do + echo "mem_latency" > $memlat/governor + echo 10 > $memlat/polling_interval + echo 400 > $memlat/mem_latency/ratio_ceil + done + + #Enable mem_latency governor for L3 scaling + for memlat in /sys/class/devfreq/*qcom,l3-cpu* + do + echo "mem_latency" > $memlat/governor + echo 10 > $memlat/polling_interval + echo 400 > $memlat/mem_latency/ratio_ceil + done + + #Enable userspace governor for L3 cdsp nodes + for l3cdsp in /sys/class/devfreq/*qcom,l3-cdsp* + do + echo "userspace" > $l3cdsp/governor + chown -h system $l3cdsp/userspace/set_freq + done + + echo "cpufreq" > /sys/class/devfreq/soc:qcom,mincpubw/governor + + # Disable CPU Retention + echo N > /sys/module/lpm_levels/L3/cpu0/ret/idle_enabled + echo N > /sys/module/lpm_levels/L3/cpu1/ret/idle_enabled + echo N > /sys/module/lpm_levels/L3/cpu2/ret/idle_enabled + echo N > /sys/module/lpm_levels/L3/cpu3/ret/idle_enabled + echo N > /sys/module/lpm_levels/L3/cpu4/ret/idle_enabled + echo N > /sys/module/lpm_levels/L3/cpu5/ret/idle_enabled + echo N > /sys/module/lpm_levels/L3/cpu6/ret/idle_enabled + echo N > /sys/module/lpm_levels/L3/cpu7/ret/idle_enabled + + # cpuset parameters + echo 0-5 > /dev/cpuset/background/cpus + echo 0-5 > /dev/cpuset/system-background/cpus + + # Turn off scheduler boost at the end + echo 0 > /proc/sys/kernel/sched_boost + + # Turn on sleep modes. + echo 0 > /sys/module/lpm_levels/parameters/sleep_disabled + ;; + esac + ;; +esac + +case "$target" in + "trinket") + + if [ -f /sys/devices/soc0/soc_id ]; then + soc_id=`cat /sys/devices/soc0/soc_id` + else + soc_id=`cat /sys/devices/system/soc/soc0/id` + fi + + case "$soc_id" in + "394" ) + + # Core control parameters on big + echo 2 > /sys/devices/system/cpu/cpu4/core_ctl/min_cpus + echo 40 > /sys/devices/system/cpu/cpu4/core_ctl/busy_down_thres + echo 60 > /sys/devices/system/cpu/cpu4/core_ctl/busy_up_thres + echo 100 > /sys/devices/system/cpu/cpu4/core_ctl/offline_delay_ms + echo 1 > /sys/devices/system/cpu/cpu4/core_ctl/is_big_cluster + echo 4 > /sys/devices/system/cpu/cpu4/core_ctl/task_thres + + # Setting b.L scheduler parameters + echo 67 > /proc/sys/kernel/sched_downmigrate + echo 77 > /proc/sys/kernel/sched_upmigrate + echo 85 > /proc/sys/kernel/sched_group_downmigrate + echo 100 > /proc/sys/kernel/sched_group_upmigrate + + # cpuset settings + echo 0-3 > /dev/cpuset/background/cpus + echo 0-3 > /dev/cpuset/system-background/cpus + + + # configure governor settings for little cluster + echo "schedutil" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor + echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/up_rate_limit_us + echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/down_rate_limit_us + echo 1305600 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/hispeed_freq + echo 614400 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq + + # configure governor settings for big cluster + echo "schedutil" > /sys/devices/system/cpu/cpu4/cpufreq/scaling_governor + echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/up_rate_limit_us + echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/down_rate_limit_us + echo 1401600 > /sys/devices/system/cpu/cpu4/cpufreq/schedutil/hispeed_freq + echo 1056000 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_min_freq + + echo 1 > /proc/sys/kernel/sched_walt_rotate_big_tasks + + # sched_load_boost as -6 is equivalent to target load as 85. It is per cpu tunable. + echo -6 > /sys/devices/system/cpu/cpu0/sched_load_boost + echo -6 > /sys/devices/system/cpu/cpu1/sched_load_boost + echo -6 > /sys/devices/system/cpu/cpu2/sched_load_boost + echo -6 > /sys/devices/system/cpu/cpu3/sched_load_boost + echo -6 > /sys/devices/system/cpu/cpu4/sched_load_boost + echo -6 > /sys/devices/system/cpu/cpu5/sched_load_boost + echo -6 > /sys/devices/system/cpu/cpu6/sched_load_boost + echo -6 > /sys/devices/system/cpu/cpu7/sched_load_boost + echo 85 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/hispeed_load + echo 85 > /sys/devices/system/cpu/cpu4/cpufreq/schedutil/hispeed_load + + # Set Memory parameters + configure_memory_parameters + + # Enable bus-dcvs + ddr_type=`od -An -tx /proc/device-tree/memory/ddr_device_type` + ddr_type4="07" + ddr_type3="05" + + for device in /sys/devices/platform/soc + do + for cpubw in $device/*cpu-cpu-ddr-bw/devfreq/*cpu-cpu-ddr-bw + do + echo "bw_hwmon" > $cpubw/governor + echo 50 > $cpubw/polling_interval + echo 762 > $cpubw/min_freq + if [ ${ddr_type:4:2} == $ddr_type4 ]; then + # LPDDR4 + echo "2288 3440 4173 5195 5859 7759 10322 11863 13763" > $cpubw/bw_hwmon/mbps_zones + echo 85 > $cpubw/bw_hwmon/io_percent + fi + if [ ${ddr_type:4:2} == $ddr_type3 ]; then + # LPDDR3 + echo "1525 3440 5195 5859 7102" > $cpubw/bw_hwmon/mbps_zones + echo 34 > $cpubw/bw_hwmon/io_percent + fi + echo 4 > $cpubw/bw_hwmon/sample_ms + echo 90 > $cpubw/bw_hwmon/decay_rate + echo 190 > $cpubw/bw_hwmon/bw_step + echo 20 > $cpubw/bw_hwmon/hist_memory + echo 0 > $cpubw/bw_hwmon/hyst_length + echo 80 > $cpubw/bw_hwmon/down_thres + echo 0 > $cpubw/bw_hwmon/guard_band_mbps + echo 250 > $cpubw/bw_hwmon/up_scale + echo 1600 > $cpubw/bw_hwmon/idle_mbps + done + + for memlat in $device/*cpu*-lat/devfreq/*cpu*-lat + do + echo "mem_latency" > $memlat/governor + echo 10 > $memlat/polling_interval + echo 400 > $memlat/mem_latency/ratio_ceil + done + + for latfloor in $device/*cpu*-ddr-latfloor*/devfreq/*cpu-ddr-latfloor* + do + echo "compute" > $latfloor/governor + echo 10 > $latfloor/polling_interval + done + + done + + # colcoation v3 disabled + echo 0 > /proc/sys/kernel/sched_min_task_util_for_boost + echo 0 > /proc/sys/kernel/sched_min_task_util_for_colocation + echo 0 > /proc/sys/kernel/sched_little_cluster_coloc_fmin_khz + + # Turn off scheduler boost at the end + echo 0 > /proc/sys/kernel/sched_boost + + # Turn on sleep modes. + echo 0 > /sys/module/lpm_levels/parameters/sleep_disabled + + ;; + esac + ;; +esac + +case "$target" in + "sm6150") + + #Apply settings for sm6150 + # Set the default IRQ affinity to the silver cluster. When a + # CPU is isolated/hotplugged, the IRQ affinity is adjusted + # to one of the CPU from the default IRQ affinity mask. + echo 3f > /proc/irq/default_smp_affinity + + if [ -f /sys/devices/soc0/soc_id ]; then + soc_id=`cat /sys/devices/soc0/soc_id` + else + soc_id=`cat /sys/devices/system/soc/soc0/id` + fi + + case "$soc_id" in + "355" | "369" | "377" | "380" | "384" ) + target_type=`getprop ro.hardware.type` + if [ "$target_type" == "automotive" ]; then + # update frequencies + configure_sku_parameters + sku_identified=`getprop vendor.sku_identified` + else + sku_identified=0 + fi + + # Core control parameters on silver + echo 0 0 0 0 1 1 > /sys/devices/system/cpu/cpu0/core_ctl/not_preferred + echo 4 > /sys/devices/system/cpu/cpu0/core_ctl/min_cpus + echo 60 > /sys/devices/system/cpu/cpu0/core_ctl/busy_up_thres + echo 40 > /sys/devices/system/cpu/cpu0/core_ctl/busy_down_thres + echo 100 > /sys/devices/system/cpu/cpu0/core_ctl/offline_delay_ms + echo 0 > /sys/devices/system/cpu/cpu0/core_ctl/is_big_cluster + echo 8 > /sys/devices/system/cpu/cpu0/core_ctl/task_thres + echo 0 > /sys/devices/system/cpu/cpu6/core_ctl/enable + + + # Setting b.L scheduler parameters + # default sched up and down migrate values are 90 and 85 + echo 65 > /proc/sys/kernel/sched_downmigrate + echo 71 > /proc/sys/kernel/sched_upmigrate + # default sched up and down migrate values are 100 and 95 + echo 85 > /proc/sys/kernel/sched_group_downmigrate + echo 100 > /proc/sys/kernel/sched_group_upmigrate + echo 1 > /proc/sys/kernel/sched_walt_rotate_big_tasks + + # colocation v3 settings + echo 740000 > /proc/sys/kernel/sched_little_cluster_coloc_fmin_khz + + + # configure governor settings for little cluster + echo "schedutil" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor + echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/up_rate_limit_us + echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/down_rate_limit_us + echo 1209600 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/hispeed_freq + if [ $sku_identified != 1 ]; then + echo 576000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq + fi + + # configure governor settings for big cluster + echo "schedutil" > /sys/devices/system/cpu/cpu6/cpufreq/scaling_governor + echo 0 > /sys/devices/system/cpu/cpu6/cpufreq/schedutil/up_rate_limit_us + echo 0 > /sys/devices/system/cpu/cpu6/cpufreq/schedutil/down_rate_limit_us + echo 1209600 > /sys/devices/system/cpu/cpu6/cpufreq/schedutil/hispeed_freq + if [ $sku_identified != 1 ]; then + echo 768000 > /sys/devices/system/cpu/cpu6/cpufreq/scaling_min_freq + fi + + # sched_load_boost as -6 is equivalent to target load as 85. It is per cpu tunable. + echo -6 > /sys/devices/system/cpu/cpu6/sched_load_boost + echo -6 > /sys/devices/system/cpu/cpu7/sched_load_boost + echo 85 > /sys/devices/system/cpu/cpu6/cpufreq/schedutil/hispeed_load + + echo "0:1209600" > /sys/module/cpu_boost/parameters/input_boost_freq + echo 40 > /sys/module/cpu_boost/parameters/input_boost_ms + + # Set Memory parameters + configure_memory_parameters + + # Enable bus-dcvs + for device in /sys/devices/platform/soc + do + for cpubw in $device/*cpu-cpu-llcc-bw/devfreq/*cpu-cpu-llcc-bw + do + echo "bw_hwmon" > $cpubw/governor + echo 50 > $cpubw/polling_interval + echo "2288 4577 7110 9155 12298 14236" > $cpubw/bw_hwmon/mbps_zones + echo 4 > $cpubw/bw_hwmon/sample_ms + echo 68 > $cpubw/bw_hwmon/io_percent + echo 20 > $cpubw/bw_hwmon/hist_memory + echo 0 > $cpubw/bw_hwmon/hyst_length + echo 80 > $cpubw/bw_hwmon/down_thres + echo 0 > $cpubw/bw_hwmon/guard_band_mbps + echo 250 > $cpubw/bw_hwmon/up_scale + echo 1600 > $cpubw/bw_hwmon/idle_mbps + done + + for llccbw in $device/*cpu-llcc-ddr-bw/devfreq/*cpu-llcc-ddr-bw + do + echo "bw_hwmon" > $llccbw/governor + echo 40 > $llccbw/polling_interval + echo "1144 1720 2086 2929 3879 5931 6881" > $llccbw/bw_hwmon/mbps_zones + echo 4 > $llccbw/bw_hwmon/sample_ms + echo 68 > $llccbw/bw_hwmon/io_percent + echo 20 > $llccbw/bw_hwmon/hist_memory + echo 0 > $llccbw/bw_hwmon/hyst_length + echo 80 > $llccbw/bw_hwmon/down_thres + echo 0 > $llccbw/bw_hwmon/guard_band_mbps + echo 250 > $llccbw/bw_hwmon/up_scale + echo 1600 > $llccbw/bw_hwmon/idle_mbps + done + + #Enable mem_latency governor for L3, LLCC, and DDR scaling + for memlat in $device/*cpu*-lat/devfreq/*cpu*-lat + do + echo "mem_latency" > $memlat/governor + echo 10 > $memlat/polling_interval + echo 400 > $memlat/mem_latency/ratio_ceil + done + + #Gold L3 ratio ceil + echo 4000 > /sys/class/devfreq/soc:qcom,cpu6-cpu-l3-lat/mem_latency/ratio_ceil + + #Enable cdspl3 governor for L3 cdsp nodes + for l3cdsp in $device/*cdsp-cdsp-l3-lat/devfreq/*cdsp-cdsp-l3-lat + do + echo "cdspl3" > $l3cdsp/governor + done + + #Enable compute governor for gold latfloor + for latfloor in $device/*cpu*-ddr-latfloor*/devfreq/*cpu-ddr-latfloor* + do + echo "compute" > $latfloor/governor + echo 10 > $latfloor/polling_interval + done + + done + # cpuset parameters + echo 0-5 > /dev/cpuset/background/cpus + echo 0-5 > /dev/cpuset/system-background/cpus + + # Turn off scheduler boost at the end + echo 0 > /proc/sys/kernel/sched_boost + + # Turn on sleep modes. + echo 0 > /sys/module/lpm_levels/parameters/sleep_disabled + ;; + esac + + #Apply settings for moorea + case "$soc_id" in + "365" | "366" ) + + # Core control parameters on silver + echo 0 0 0 0 1 1 > /sys/devices/system/cpu/cpu0/core_ctl/not_preferred + echo 4 > /sys/devices/system/cpu/cpu0/core_ctl/min_cpus + echo 60 > /sys/devices/system/cpu/cpu0/core_ctl/busy_up_thres + echo 40 > /sys/devices/system/cpu/cpu0/core_ctl/busy_down_thres + echo 100 > /sys/devices/system/cpu/cpu0/core_ctl/offline_delay_ms + echo 0 > /sys/devices/system/cpu/cpu0/core_ctl/is_big_cluster + echo 8 > /sys/devices/system/cpu/cpu0/core_ctl/task_thres + echo 0 > /sys/devices/system/cpu/cpu6/core_ctl/enable + + # Setting b.L scheduler parameters + # default sched up and down migrate values are 71 and 65 + echo 65 > /proc/sys/kernel/sched_downmigrate + echo 71 > /proc/sys/kernel/sched_upmigrate + # default sched up and down migrate values are 100 and 95 + echo 85 > /proc/sys/kernel/sched_group_downmigrate + echo 100 > /proc/sys/kernel/sched_group_upmigrate + echo 1 > /proc/sys/kernel/sched_walt_rotate_big_tasks + + #colocation v3 settings + echo 740000 > /proc/sys/kernel/sched_little_cluster_coloc_fmin_khz + + # configure governor settings for little cluster + echo "schedutil" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor + echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/up_rate_limit_us + echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/down_rate_limit_us + echo 1248000 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/hispeed_freq + echo 576000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq + + # configure governor settings for big cluster + echo "schedutil" > /sys/devices/system/cpu/cpu6/cpufreq/scaling_governor + echo 0 > /sys/devices/system/cpu/cpu6/cpufreq/schedutil/up_rate_limit_us + echo 0 > /sys/devices/system/cpu/cpu6/cpufreq/schedutil/down_rate_limit_us + echo 1324600 > /sys/devices/system/cpu/cpu6/cpufreq/schedutil/hispeed_freq + echo 652800 > /sys/devices/system/cpu/cpu6/cpufreq/scaling_min_freq + + # sched_load_boost as -6 is equivalent to target load as 85. It is per cpu tunable. + echo -6 > /sys/devices/system/cpu/cpu6/sched_load_boost + echo -6 > /sys/devices/system/cpu/cpu7/sched_load_boost + echo 85 > /sys/devices/system/cpu/cpu6/cpufreq/schedutil/hispeed_load + + echo "0:1248000" > /sys/module/cpu_boost/parameters/input_boost_freq + echo 40 > /sys/module/cpu_boost/parameters/input_boost_ms + + # Set Memory parameters + configure_memory_parameters + + # Enable bus-dcvs + for device in /sys/devices/platform/soc + do + for cpubw in $device/*cpu-cpu-llcc-bw/devfreq/*cpu-cpu-llcc-bw + do + echo "bw_hwmon" > $cpubw/governor + echo 50 > $cpubw/polling_interval + echo "2288 4577 7110 9155 12298 14236" > $cpubw/bw_hwmon/mbps_zones + echo 4 > $cpubw/bw_hwmon/sample_ms + echo 68 > $cpubw/bw_hwmon/io_percent + echo 20 > $cpubw/bw_hwmon/hist_memory + echo 0 > $cpubw/bw_hwmon/hyst_length + echo 80 > $cpubw/bw_hwmon/down_thres + echo 0 > $cpubw/bw_hwmon/guard_band_mbps + echo 250 > $cpubw/bw_hwmon/up_scale + echo 1600 > $cpubw/bw_hwmon/idle_mbps + done + + for llccbw in $device/*cpu-llcc-ddr-bw/devfreq/*cpu-llcc-ddr-bw + do + echo "bw_hwmon" > $llccbw/governor + echo 40 > $llccbw/polling_interval + echo "1144 1720 2086 2929 3879 5931 6881" > $llccbw/bw_hwmon/mbps_zones + echo 4 > $llccbw/bw_hwmon/sample_ms + echo 68 > $llccbw/bw_hwmon/io_percent + echo 20 > $llccbw/bw_hwmon/hist_memory + echo 0 > $llccbw/bw_hwmon/hyst_length + echo 80 > $llccbw/bw_hwmon/down_thres + echo 0 > $llccbw/bw_hwmon/guard_band_mbps + echo 250 > $llccbw/bw_hwmon/up_scale + echo 1600 > $llccbw/bw_hwmon/idle_mbps + done + + for npubw in $device/*npu-npu-ddr-bw/devfreq/*npu-npu-ddr-bw + do + echo 1 > /sys/devices/virtual/npu/msm_npu/pwr + echo "bw_hwmon" > $npubw/governor + echo 40 > $npubw/polling_interval + echo "1144 1720 2086 2929 3879 5931 6881" > $npubw/bw_hwmon/mbps_zones + echo 4 > $npubw/bw_hwmon/sample_ms + echo 80 > $npubw/bw_hwmon/io_percent + echo 20 > $npubw/bw_hwmon/hist_memory + echo 10 > $npubw/bw_hwmon/hyst_length + echo 30 > $npubw/bw_hwmon/down_thres + echo 0 > $npubw/bw_hwmon/guard_band_mbps + echo 250 > $npubw/bw_hwmon/up_scale + echo 0 > $npubw/bw_hwmon/idle_mbps + echo 0 > /sys/devices/virtual/npu/msm_npu/pwr + done + + #Enable mem_latency governor for L3, LLCC, and DDR scaling + for memlat in $device/*cpu*-lat/devfreq/*cpu*-lat + do + echo "mem_latency" > $memlat/governor + echo 10 > $memlat/polling_interval + echo 400 > $memlat/mem_latency/ratio_ceil + done + + #Gold L3 ratio ceil + echo 4000 > /sys/class/devfreq/soc:qcom,cpu6-cpu-l3-lat/mem_latency/ratio_ceil + + #Enable cdspl3 governor for L3 cdsp nodes + for l3cdsp in $device/*cdsp-cdsp-l3-lat/devfreq/*cdsp-cdsp-l3-lat + do + echo "cdspl3" > $l3cdsp/governor + done + + #Enable compute governor for gold latfloor + for latfloor in $device/*cpu*-ddr-latfloor*/devfreq/*cpu-ddr-latfloor* + do + echo "compute" > $latfloor/governor + echo 10 > $latfloor/polling_interval + done + + done + + # cpuset parameters + echo 0-5 > /dev/cpuset/background/cpus + echo 0-5 > /dev/cpuset/system-background/cpus + + # Turn off scheduler boost at the end + echo 0 > /proc/sys/kernel/sched_boost + + # Turn on sleep modes. + echo 0 > /sys/module/lpm_levels/parameters/sleep_disabled + ;; + esac + + ;; +esac + + +case "$target" in + "lito") + + #Apply settings for lito + if [ -f /sys/devices/soc0/soc_id ]; then + soc_id=`cat /sys/devices/soc0/soc_id` + fi + + case "$soc_id" in + "400" | "440" ) + # Core control parameters on silver + echo 0 0 0 0 0 0 > /sys/devices/system/cpu/cpu0/core_ctl/not_preferred + echo 4 > /sys/devices/system/cpu/cpu0/core_ctl/min_cpus + echo 60 > /sys/devices/system/cpu/cpu0/core_ctl/busy_up_thres + echo 40 > /sys/devices/system/cpu/cpu0/core_ctl/busy_down_thres + echo 8 > /sys/devices/system/cpu/cpu0/core_ctl/task_thres + echo 100 > /sys/devices/system/cpu/cpu0/core_ctl/offline_delay_ms + echo 0 > /sys/devices/system/cpu/cpu0/core_ctl/enable + + # Disable Core control on gold, prime + echo 0 > /sys/devices/system/cpu/cpu6/core_ctl/enable + echo 0 > /sys/devices/system/cpu/cpu7/core_ctl/enable + + # Setting b.L scheduler parameters + echo 65 85 > /proc/sys/kernel/sched_downmigrate + echo 71 95 > /proc/sys/kernel/sched_upmigrate + echo 85 > /proc/sys/kernel/sched_group_downmigrate + echo 100 > /proc/sys/kernel/sched_group_upmigrate + echo 1 > /proc/sys/kernel/sched_walt_rotate_big_tasks + echo 0 > /proc/sys/kernel/sched_coloc_busy_hyst_ns + echo 0 > /proc/sys/kernel/sched_coloc_busy_hysteresis_enable_cpus + echo 0 > /proc/sys/kernel/sched_coloc_busy_hyst_max_ms + + # disable unfiltering + echo 20000000 > /proc/sys/kernel/sched_task_unfilter_period + echo 1 > /proc/sys/kernel/sched_task_unfilter_nr_windows + + # configure governor settings for silver cluster + echo "schedutil" > /sys/devices/system/cpu/cpufreq/policy0/scaling_governor + echo 0 > /sys/devices/system/cpu/cpufreq/policy0/schedutil/up_rate_limit_us + echo 0 > /sys/devices/system/cpu/cpufreq/policy0/schedutil/down_rate_limit_us + echo 1228800 > /sys/devices/system/cpu/cpufreq/policy0/schedutil/hispeed_freq + echo 0 > /sys/devices/system/cpu/cpufreq/policy0/schedutil/pl + echo 576000 > /sys/devices/system/cpu/cpufreq/policy0/scaling_min_freq + echo 650000 > /sys/devices/system/cpu/cpufreq/policy0/schedutil/rtg_boost_freq + + # configure governor settings for gold cluster + echo "schedutil" > /sys/devices/system/cpu/cpufreq/policy6/scaling_governor + echo 0 > /sys/devices/system/cpu/cpufreq/policy6/schedutil/up_rate_limit_us + echo 0 > /sys/devices/system/cpu/cpufreq/policy6/schedutil/down_rate_limit_us + echo 1228800 > /sys/devices/system/cpu/cpufreq/policy6/schedutil/hispeed_freq + echo 85 > /sys/devices/system/cpu/cpu6/cpufreq/schedutil/hispeed_load + echo -6 > /sys/devices/system/cpu/cpu6/sched_load_boost + echo 0 > /sys/devices/system/cpu/cpufreq/policy6/schedutil/pl + echo 672000 > /sys/devices/system/cpu/cpufreq/policy6/scaling_min_freq + echo 0 > /sys/devices/system/cpu/cpufreq/policy6/schedutil/rtg_boost_freq + + # configure governor settings for gold+ cluster + echo "schedutil" > /sys/devices/system/cpu/cpufreq/policy7/scaling_governor + echo 0 > /sys/devices/system/cpu/cpufreq/policy7/schedutil/up_rate_limit_us + echo 0 > /sys/devices/system/cpu/cpufreq/policy7/schedutil/down_rate_limit_us + echo 1228800 > /sys/devices/system/cpu/cpufreq/policy7/schedutil/hispeed_freq + echo 85 > /sys/devices/system/cpu/cpu7/cpufreq/schedutil/hispeed_load + echo -6 > /sys/devices/system/cpu/cpu7/sched_load_boost + echo 0 > /sys/devices/system/cpu/cpufreq/policy7/schedutil/pl + echo 672000 > /sys/devices/system/cpu/cpufreq/policy7/scaling_min_freq + echo 0 > /sys/devices/system/cpu/cpufreq/policy7/schedutil/rtg_boost_freq + + # colocation v3 settings + echo 51 > /proc/sys/kernel/sched_min_task_util_for_boost + echo 35 > /proc/sys/kernel/sched_min_task_util_for_colocation + + # Enable conservative pl + echo 1 > /proc/sys/kernel/sched_conservative_pl + + echo "0:1228800" > /sys/devices/system/cpu/cpu_boost/input_boost_freq + echo 120 > /sys/devices/system/cpu/cpu_boost/input_boost_ms + + # Set Memory parameters + configure_memory_parameters + + if [ `cat /sys/devices/soc0/revision` == "2.0" ]; then + # r2.0 related changes + echo "0:1075200" > /sys/devices/system/cpu/cpu_boost/input_boost_freq + echo 610000 > /sys/devices/system/cpu/cpufreq/policy0/schedutil/rtg_boost_freq + echo 1075200 > /sys/devices/system/cpu/cpufreq/policy0/schedutil/hispeed_freq + echo 1152000 > /sys/devices/system/cpu/cpufreq/policy6/schedutil/hispeed_freq + echo 1401600 > /sys/devices/system/cpu/cpufreq/policy7/schedutil/hispeed_freq + echo 614400 > /sys/devices/system/cpu/cpufreq/policy0/scaling_min_freq + echo 652800 > /sys/devices/system/cpu/cpufreq/policy6/scaling_min_freq + echo 806400 > /sys/devices/system/cpu/cpufreq/policy7/scaling_min_freq + echo 83 > /proc/sys/kernel/sched_asym_cap_sibling_freq_match_pct + fi + + # Enable bus-dcvs + for device in /sys/devices/platform/soc + do + for cpubw in $device/*cpu-cpu-llcc-bw/devfreq/*cpu-cpu-llcc-bw + do + echo "bw_hwmon" > $cpubw/governor + echo 50 > $cpubw/polling_interval + echo "2288 4577 7110 9155 12298 14236 16265" > $cpubw/bw_hwmon/mbps_zones + echo 4 > $cpubw/bw_hwmon/sample_ms + echo 68 > $cpubw/bw_hwmon/io_percent + echo 20 > $cpubw/bw_hwmon/hist_memory + echo 0 > $cpubw/bw_hwmon/hyst_length + echo 80 > $cpubw/bw_hwmon/down_thres + echo 0 > $cpubw/bw_hwmon/guard_band_mbps + echo 250 > $cpubw/bw_hwmon/up_scale + echo 1600 > $cpubw/bw_hwmon/idle_mbps + done + + for llccbw in $device/*cpu-llcc-ddr-bw/devfreq/*cpu-llcc-ddr-bw + do + echo "bw_hwmon" > $llccbw/governor + echo 50 > $llccbw/polling_interval + echo "1144 1720 2086 2929 3879 5931 6881 7980" > $llccbw/bw_hwmon/mbps_zones + echo 4 > $llccbw/bw_hwmon/sample_ms + echo 68 > $llccbw/bw_hwmon/io_percent + echo 20 > $llccbw/bw_hwmon/hist_memory + echo 0 > $llccbw/bw_hwmon/hyst_length + echo 80 > $llccbw/bw_hwmon/down_thres + echo 0 > $llccbw/bw_hwmon/guard_band_mbps + echo 250 > $llccbw/bw_hwmon/up_scale + echo 1600 > $llccbw/bw_hwmon/idle_mbps + done + + for npubw in $device/*npu*-ddr-bw/devfreq/*npu*-ddr-bw + do + echo 1 > /sys/devices/virtual/npu/msm_npu/pwr + echo "bw_hwmon" > $npubw/governor + echo 40 > $npubw/polling_interval + echo "1144 1720 2086 2929 3879 5931 6881 7980" > $npubw/bw_hwmon/mbps_zones + echo 4 > $npubw/bw_hwmon/sample_ms + echo 80 > $npubw/bw_hwmon/io_percent + echo 20 > $npubw/bw_hwmon/hist_memory + echo 10 > $npubw/bw_hwmon/hyst_length + echo 30 > $npubw/bw_hwmon/down_thres + echo 0 > $npubw/bw_hwmon/guard_band_mbps + echo 250 > $npubw/bw_hwmon/up_scale + echo 0 > $npubw/bw_hwmon/idle_mbps + echo 0 > /sys/devices/virtual/npu/msm_npu/pwr + done + + for npullccbw in $device/*npu*-llcc-bw/devfreq/*npu*-llcc-bw + do + echo 1 > /sys/devices/virtual/npu/msm_npu/pwr + echo "bw_hwmon" > $npullccbw/governor + echo 40 > $npullccbw/polling_interval + echo "2288 4577 7110 9155 12298 14236 16265" > $npullccbw/bw_hwmon/mbps_zones + echo 4 > $npullccbw/bw_hwmon/sample_ms + echo 100 > $npullccbw/bw_hwmon/io_percent + echo 20 > $npullccbw/bw_hwmon/hist_memory + echo 10 > $npullccbw/bw_hwmon/hyst_length + echo 30 > $npullccbw/bw_hwmon/down_thres + echo 0 > $npullccbw/bw_hwmon/guard_band_mbps + echo 250 > $npullccbw/bw_hwmon/up_scale + echo 0 > /sys/devices/virtual/npu/msm_npu/pwr + done + + #Enable mem_latency governor for L3, LLCC, and DDR scaling + for memlat in $device/*qcom,devfreq-l3/*cpu*-lat/devfreq/*cpu*-lat + do + echo "mem_latency" > $memlat/governor + echo 8 > $memlat/polling_interval + echo 400 > $memlat/mem_latency/ratio_ceil + done + + #Enable cdspl3 governor for L3 cdsp nodes + for l3cdsp in $device/*qcom,devfreq-l3/*cdsp-l3-lat/devfreq/*cdsp-l3-lat + do + echo "cdspl3" > $l3cdsp/governor + done + + #Enable mem_latency governor for LLCC and DDR scaling + for memlat in $device/*cpu*-lat/devfreq/*cpu*-lat + do + echo "mem_latency" > $memlat/governor + echo 8 > $memlat/polling_interval + echo 400 > $memlat/mem_latency/ratio_ceil + done + + #Gold L3 ratio ceil + for l3gold in $device/*qcom,devfreq-l3/*cpu6-cpu-l3-lat/devfreq/*cpu6-cpu-l3-lat + do + echo 4000 > $l3gold/mem_latency/ratio_ceil + done + + #Prime L3 ratio ceil + for l3prime in $device/*qcom,devfreq-l3/*cpu7-cpu-l3-lat/devfreq/*cpu7-cpu-l3-lat + do + echo 4000 > $l3prime/mem_latency/ratio_ceil + done + + #Enable compute governor for gold latfloor + for latfloor in $device/*cpu*-ddr-latfloor*/devfreq/*cpu-ddr-latfloor* + do + echo "compute" > $latfloor/governor + echo 8 > $latfloor/polling_interval + done + done + + # moto add by yangbq2, set wsf value as 1 + # Disable wsf for all targets beacause we are using efk. + # wsf Range : 1..1000 So set to bare minimum value 1. + echo 1 > /proc/sys/vm/watermark_scale_factor + # moto end + + # cpuset parameters + echo 0-5 > /dev/cpuset/background/cpus + echo 0-5 > /dev/cpuset/system-background/cpus + + # Turn off scheduler boost at the end + echo 0 > /proc/sys/kernel/sched_boost + + # Turn on sleep modes + echo 0 > /sys/module/lpm_levels/parameters/sleep_disabled + ;; + esac + + #Apply settings for lagoon + case "$soc_id" in + "434" | "459" ) + + # Core control parameters on silver + echo 0 0 0 0 1 1 > /sys/devices/system/cpu/cpu0/core_ctl/not_preferred + echo 4 > /sys/devices/system/cpu/cpu0/core_ctl/min_cpus + echo 60 > /sys/devices/system/cpu/cpu0/core_ctl/busy_up_thres + echo 40 > /sys/devices/system/cpu/cpu0/core_ctl/busy_down_thres + echo 100 > /sys/devices/system/cpu/cpu0/core_ctl/offline_delay_ms + echo 8 > /sys/devices/system/cpu/cpu0/core_ctl/task_thres + + # Disable Core control on gold + echo 0 > /sys/devices/system/cpu/cpu6/core_ctl/enable + + + # disable unfiltering + echo 20000000 > /proc/sys/kernel/sched_task_unfilter_period + + # Setting b.L scheduler parameters + # default sched up and down migrate values are 95 and 85 + echo 65 > /proc/sys/kernel/sched_downmigrate + echo 71 > /proc/sys/kernel/sched_upmigrate + # default sched up and down migrate values are 100 and 95 + echo 85 > /proc/sys/kernel/sched_group_downmigrate + echo 100 > /proc/sys/kernel/sched_group_upmigrate + echo 1 > /proc/sys/kernel/sched_walt_rotate_big_tasks + echo 0 > /proc/sys/kernel/sched_coloc_busy_hyst_ns + echo 0 > /proc/sys/kernel/sched_coloc_busy_hysteresis_enable_cpus + echo 0 > /proc/sys/kernel/sched_coloc_busy_hyst_max_ms + + # configure governor settings for little cluster + echo "schedutil" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor + echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/up_rate_limit_us + echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/down_rate_limit_us + echo 1248000 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/hispeed_freq + echo 576000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq + + # configure governor settings for big cluster + echo "schedutil" > /sys/devices/system/cpu/cpu6/cpufreq/scaling_governor + echo 0 > /sys/devices/system/cpu/cpu6/cpufreq/schedutil/up_rate_limit_us + echo 0 > /sys/devices/system/cpu/cpu6/cpufreq/schedutil/down_rate_limit_us + echo 1248000 > /sys/devices/system/cpu/cpu6/cpufreq/schedutil/hispeed_freq + echo 652800 > /sys/devices/system/cpu/cpu6/cpufreq/scaling_min_freq + + #colocation v3 settings + echo 740000 > /sys/devices/system/cpu/cpufreq/policy0/schedutil/rtg_boost_freq + echo 0 > /sys/devices/system/cpu/cpufreq/policy6/schedutil/rtg_boost_freq + echo 51 > /proc/sys/kernel/sched_min_task_util_for_boost + + # sched_load_boost as -6 is equivalent to target load as 85. It is per cpu tunable. + echo -6 > /sys/devices/system/cpu/cpu6/sched_load_boost + echo -6 > /sys/devices/system/cpu/cpu7/sched_load_boost + echo 85 > /sys/devices/system/cpu/cpu6/cpufreq/schedutil/hispeed_load + + # Enable conservative pl + echo 1 > /proc/sys/kernel/sched_conservative_pl + + echo "0:1248000" > /sys/devices/system/cpu/cpu_boost/input_boost_freq + echo 120 > /sys/devices/system/cpu/cpu_boost/input_boost_ms + + # Set Memory parameters + configure_memory_parameters + + # Enable bus-dcvs + for device in /sys/devices/platform/soc + do + for cpubw in $device/*cpu-cpu-llcc-bw/devfreq/*cpu-cpu-llcc-bw + do + echo "bw_hwmon" > $cpubw/governor + echo 50 > $cpubw/polling_interval + echo "2288 4577 7110 9155 12298 14236" > $cpubw/bw_hwmon/mbps_zones + echo 4 > $cpubw/bw_hwmon/sample_ms + echo 68 > $cpubw/bw_hwmon/io_percent + echo 20 > $cpubw/bw_hwmon/hist_memory + echo 0 > $cpubw/bw_hwmon/hyst_length + echo 80 > $cpubw/bw_hwmon/down_thres + echo 0 > $cpubw/bw_hwmon/guard_band_mbps + echo 250 > $cpubw/bw_hwmon/up_scale + echo 1600 > $cpubw/bw_hwmon/idle_mbps + done + + for llccbw in $device/*cpu-llcc-ddr-bw/devfreq/*cpu-llcc-ddr-bw + do + echo "bw_hwmon" > $llccbw/governor + echo 40 > $llccbw/polling_interval + echo "1144 1720 2086 2929 3879 5931 6881 8137" > $llccbw/bw_hwmon/mbps_zones + echo 4 > $llccbw/bw_hwmon/sample_ms + echo 68 > $llccbw/bw_hwmon/io_percent + echo 20 > $llccbw/bw_hwmon/hist_memory + echo 0 > $llccbw/bw_hwmon/hyst_length + echo 80 > $llccbw/bw_hwmon/down_thres + echo 0 > $llccbw/bw_hwmon/guard_band_mbps + echo 250 > $llccbw/bw_hwmon/up_scale + echo 1600 > $llccbw/bw_hwmon/idle_mbps + done + + for npubw in $device/*npu*-ddr-bw/devfreq/*npu*-ddr-bw + do + echo 1 > /sys/devices/virtual/npu/msm_npu/pwr + echo "bw_hwmon" > $npubw/governor + echo 40 > $npubw/polling_interval + echo "1144 1720 2086 2929 3879 5931 6881 7980" > $npubw/bw_hwmon/mbps_zones + echo 4 > $npubw/bw_hwmon/sample_ms + echo 80 > $npubw/bw_hwmon/io_percent + echo 20 > $npubw/bw_hwmon/hist_memory + echo 10 > $npubw/bw_hwmon/hyst_length + echo 30 > $npubw/bw_hwmon/down_thres + echo 0 > $npubw/bw_hwmon/guard_band_mbps + echo 250 > $npubw/bw_hwmon/up_scale + echo 0 > $npubw/bw_hwmon/idle_mbps + echo 0 > /sys/devices/virtual/npu/msm_npu/pwr + done + + for npullccbw in $device/*npu*-llcc-bw/devfreq/*npu*-llcc-bw + do + echo 1 > /sys/devices/virtual/npu/msm_npu/pwr + echo "bw_hwmon" > $npullccbw/governor + echo 40 > $npullccbw/polling_interval + echo "2288 4577 7110 9155 12298 14236 16265" > $npullccbw/bw_hwmon/mbps_zones + echo 4 > $npullccbw/bw_hwmon/sample_ms + echo 100 > $npullccbw/bw_hwmon/io_percent + echo 20 > $npullccbw/bw_hwmon/hist_memory + echo 10 > $npullccbw/bw_hwmon/hyst_length + echo 30 > $npullccbw/bw_hwmon/down_thres + echo 0 > $npullccbw/bw_hwmon/guard_band_mbps + echo 250 > $npullccbw/bw_hwmon/up_scale + echo 0 > /sys/devices/virtual/npu/msm_npu/pwr + done + + #Enable mem_latency governor for L3 scaling + for memlat in $device/*qcom,devfreq-l3/*cpu*-lat/devfreq/*cpu*-lat + do + echo "mem_latency" > $memlat/governor + echo 8 > $memlat/polling_interval + echo 400 > $memlat/mem_latency/ratio_ceil + done + + for gold_memlat in $device/*qcom,devfreq-l3/*cpu6*-lat/devfreq/*cpu6*-lat + do + echo 25000 > $gold_memlat/mem_latency/wb_filter_ratio + echo 60 > $gold_memlat/mem_latency/wb_pct_thres + done + + #Enable mem_latency governor for LLCC, and DDR scaling + for memlat in $device/*cpu*-lat/devfreq/*cpu*-lat + do + echo "mem_latency" > $memlat/governor + echo 8 > $memlat/polling_interval + echo 400 > $memlat/mem_latency/ratio_ceil + done + + #Enable cdspl3 governor for L3 cdsp nodes + for l3cdsp in $device/*qcom,devfreq-l3/*cdsp-l3-lat/devfreq/*cdsp-l3-lat + do + echo "powersave" > $l3cdsp/governor + done + + #Gold L3 ratio ceil + for l3gold in $device/*qcom,devfreq-l3/*cpu6-cpu-l3-lat/devfreq/*cpu6-cpu-l3-lat + do + echo 4000 > $l3gold/mem_latency/ratio_ceil + done + + #Enable compute governor for gold latfloor + for latfloor in $device/*cpu*-ddr-latfloor*/devfreq/*cpu-ddr-latfloor* + do + echo "compute" > $latfloor/governor + echo 8 > $latfloor/polling_interval + done + + done + + # cpuset parameters + echo 0-5 > /dev/cpuset/background/cpus + echo 0-5 > /dev/cpuset/system-background/cpus + + # Turn off scheduler boost at the end + echo 0 > /proc/sys/kernel/sched_boost + + # Turn off sleep modes + echo 0 > /sys/module/lpm_levels/parameters/sleep_disabled + + # Log kernel wake-up source + echo 1 > /sys/module/msm_show_resume_irq/parameters/debug_mask + + # Log kernel enabled clock before suspend + if [ -f /sys/kernel/debug/clk/debug_suspend ]; then + echo 1 > /sys/kernel/debug/clk/debug_suspend + fi + ;; + esac +esac + + +case "$target" in + "bengal") + + if [ -f /sys/devices/soc0/soc_id ]; then + soc_id=`cat /sys/devices/soc0/soc_id` + else + soc_id=`cat /sys/devices/system/soc/soc0/id` + fi + + case "$soc_id" in + "417" | "420" | "444" | "445" ) + + # Core control is temporarily disabled till bring up + echo 0 > /sys/devices/system/cpu/cpu0/core_ctl/enable + echo 2 > /sys/devices/system/cpu/cpu4/core_ctl/min_cpus + # Core control parameters on big + echo 40 > /sys/devices/system/cpu/cpu4/core_ctl/busy_down_thres + echo 60 > /sys/devices/system/cpu/cpu4/core_ctl/busy_up_thres + echo 100 > /sys/devices/system/cpu/cpu4/core_ctl/offline_delay_ms + echo 4 > /sys/devices/system/cpu/cpu4/core_ctl/task_thres + + # Setting b.L scheduler parameters + echo 67 > /proc/sys/kernel/sched_downmigrate + echo 77 > /proc/sys/kernel/sched_upmigrate + echo 85 > /proc/sys/kernel/sched_group_downmigrate + echo 100 > /proc/sys/kernel/sched_group_upmigrate + + # cpuset settings + echo 0-3 > /dev/cpuset/background/cpus + echo 0-3 > /dev/cpuset/system-background/cpus + + + # configure governor settings for little cluster + echo "schedutil" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor + echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/up_rate_limit_us + echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/down_rate_limit_us + echo 1305600 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/hispeed_freq + echo 614400 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq + echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/rtg_boost_freq + + # configure input boost settings + echo "0:1017600" > /sys/devices/system/cpu/cpu_boost/input_boost_freq + echo 80 > /sys/devices/system/cpu/cpu_boost/input_boost_ms + + # configure governor settings for big cluster + echo "schedutil" > /sys/devices/system/cpu/cpu4/cpufreq/scaling_governor + echo 0 > /sys/devices/system/cpu/cpu4/cpufreq/schedutil/up_rate_limit_us + echo 0 > /sys/devices/system/cpu/cpu4/cpufreq/schedutil/down_rate_limit_us + echo 1401600 > /sys/devices/system/cpu/cpu4/cpufreq/schedutil/hispeed_freq + echo 1056000 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_min_freq + echo 0 > /sys/devices/system/cpu/cpu4/cpufreq/schedutil/rtg_boost_freq + + echo 1 > /proc/sys/kernel/sched_walt_rotate_big_tasks + + # sched_load_boost as -6 is equivalent to target load as 85. It is per cpu tunable. + echo -6 > /sys/devices/system/cpu/cpu0/sched_load_boost + echo -6 > /sys/devices/system/cpu/cpu1/sched_load_boost + echo -6 > /sys/devices/system/cpu/cpu2/sched_load_boost + echo -6 > /sys/devices/system/cpu/cpu3/sched_load_boost + echo -6 > /sys/devices/system/cpu/cpu4/sched_load_boost + echo -6 > /sys/devices/system/cpu/cpu5/sched_load_boost + echo -6 > /sys/devices/system/cpu/cpu6/sched_load_boost + echo -6 > /sys/devices/system/cpu/cpu7/sched_load_boost + echo 85 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/hispeed_load + echo 85 > /sys/devices/system/cpu/cpu4/cpufreq/schedutil/hispeed_load + + # Set Memory parameters + configure_memory_parameters + + # Enable bus-dcvs + ddr_type=`od -An -tx /proc/device-tree/memory/ddr_device_type` + ddr_type4="07" + ddr_type3="05" + + for device in /sys/devices/platform/soc + do + for cpubw in $device/*cpu-cpu-ddr-bw/devfreq/*cpu-cpu-ddr-bw + do + echo "bw_hwmon" > $cpubw/governor + echo 50 > $cpubw/polling_interval + echo 762 > $cpubw/min_freq + if [ ${ddr_type:4:2} == $ddr_type4 ]; then + # LPDDR4 + echo "2288 3440 4173 5195 5859 7759 10322 11863 13763" > $cpubw/bw_hwmon/mbps_zones + echo 85 > $cpubw/bw_hwmon/io_percent + fi + if [ ${ddr_type:4:2} == $ddr_type3 ]; then + # LPDDR3 + echo "1525 3440 5195 5859 7102" > $cpubw/bw_hwmon/mbps_zones + echo 34 > $cpubw/bw_hwmon/io_percent + fi + echo 4 > $cpubw/bw_hwmon/sample_ms + echo 90 > $cpubw/bw_hwmon/decay_rate + echo 190 > $cpubw/bw_hwmon/bw_step + echo 20 > $cpubw/bw_hwmon/hist_memory + echo 0 > $cpubw/bw_hwmon/hyst_length + echo 80 > $cpubw/bw_hwmon/down_thres + echo 0 > $cpubw/bw_hwmon/guard_band_mbps + echo 250 > $cpubw/bw_hwmon/up_scale + echo 1600 > $cpubw/bw_hwmon/idle_mbps + done + + for memlat in $device/*cpu*-lat/devfreq/*cpu*-lat + do + echo "mem_latency" > $memlat/governor + echo 10 > $memlat/polling_interval + echo 400 > $memlat/mem_latency/ratio_ceil + done + + for latfloor in $device/*cpu*-ddr-latfloor*/devfreq/*cpu-ddr-latfloor* + do + echo "compute" > $latfloor/governor + echo 10 > $latfloor/polling_interval + done + + done + + # colcoation v3 disabled + echo 0 > /proc/sys/kernel/sched_min_task_util_for_boost + echo 0 > /proc/sys/kernel/sched_min_task_util_for_colocation + + # Turn off scheduler boost at the end + echo 0 > /proc/sys/kernel/sched_boost + + # Turn on sleep modes + echo 0 > /sys/module/lpm_levels/parameters/sleep_disabled + + # Log kernel wake-up source + echo 1 > /sys/module/msm_show_resume_irq/parameters/debug_mask + + ;; + esac + + # Scuba perf/power tunings + case "$soc_id" in + "441" ) + + # Quad-core device. disable core_ctl + echo 0 > /sys/devices/system/cpu/cpu0/core_ctl/enable + + # Configure schedutil governor settings + echo "schedutil" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor + echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/up_rate_limit_us + echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/down_rate_limit_us + echo 1305600 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/hispeed_freq + echo 614400 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq + echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/rtg_boost_freq + + # sched_load_boost as -6 is equivalent to target load as 85. + echo 0 > /proc/sys/kernel/sched_boost + echo 1 > /proc/sys/kernel/sched_prefer_spread + echo -6 > /sys/devices/system/cpu/cpu0/sched_load_boost + echo -6 > /sys/devices/system/cpu/cpu1/sched_load_boost + echo -6 > /sys/devices/system/cpu/cpu2/sched_load_boost + echo -6 > /sys/devices/system/cpu/cpu3/sched_load_boost + echo 85 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/hispeed_load + + # Set Memory parameters + configure_memory_parameters + + # Enable bus-dcvs + ddr_type=`od -An -tx /proc/device-tree/memory/ddr_device_type` + ddr_type4="07" + ddr_type3="05" + + for device in /sys/devices/platform/soc + do + for cpubw in $device/*cpu-cpu-ddr-bw/devfreq/*cpu-cpu-ddr-bw + do + echo "bw_hwmon" > $cpubw/governor + echo 50 > $cpubw/polling_interval + echo 762 > $cpubw/min_freq + if [ ${ddr_type:4:2} == $ddr_type4 ]; then + # LPDDR4 + echo "2288 3440 4173 5195 5859 7759 10322 11863 13763" > $cpubw/bw_hwmon/mbps_zones + echo 85 > $cpubw/bw_hwmon/io_percent + fi + if [ ${ddr_type:4:2} == $ddr_type3 ]; then + # LPDDR3 + echo "1525 3440 5195 5859 7102" > $cpubw/bw_hwmon/mbps_zones + echo 34 > $cpubw/bw_hwmon/io_percent + fi + echo 4 > $cpubw/bw_hwmon/sample_ms + echo 90 > $cpubw/bw_hwmon/decay_rate + echo 190 > $cpubw/bw_hwmon/bw_step + echo 20 > $cpubw/bw_hwmon/hist_memory + echo 0 > $cpubw/bw_hwmon/hyst_length + echo 80 > $cpubw/bw_hwmon/down_thres + echo 0 > $cpubw/bw_hwmon/guard_band_mbps + echo 250 > $cpubw/bw_hwmon/up_scale + echo 1600 > $cpubw/bw_hwmon/idle_mbps + done + + for memlat in $device/*cpu*-lat/devfreq/*cpu*-lat + do + echo "mem_latency" > $memlat/governor + echo 10 > $memlat/polling_interval + echo 400 > $memlat/mem_latency/ratio_ceil + done + + for latfloor in $device/*cpu*-ddr-latfloor*/devfreq/*cpu-ddr-latfloor* + do + echo "compute" > $latfloor/governor + echo 10 > $latfloor/polling_interval + done + done + + # Enable low power modes. + echo 0 > /sys/module/lpm_levels/parameters/sleep_disabled + ;; + esac + + ;; +esac + + + + + +#Apply settings for atoll +case "$target" in + "atoll") + + # Core control parameters on silver + echo 0 0 0 0 1 1 > /sys/devices/system/cpu/cpu0/core_ctl/not_preferred + echo 4 > /sys/devices/system/cpu/cpu0/core_ctl/min_cpus + echo 60 > /sys/devices/system/cpu/cpu0/core_ctl/busy_up_thres + echo 40 > /sys/devices/system/cpu/cpu0/core_ctl/busy_down_thres + echo 100 > /sys/devices/system/cpu/cpu0/core_ctl/offline_delay_ms + echo 8 > /sys/devices/system/cpu/cpu0/core_ctl/task_thres + echo 0 > /sys/devices/system/cpu/cpu6/core_ctl/enable + + # Setting b.L scheduler parameters + # default sched up and down migrate values are 95 and 85 + echo 65 > /proc/sys/kernel/sched_downmigrate + echo 71 > /proc/sys/kernel/sched_upmigrate + # default sched up and down migrate values are 100 and 95 + echo 85 > /proc/sys/kernel/sched_group_downmigrate + echo 100 > /proc/sys/kernel/sched_group_upmigrate + echo 1 > /proc/sys/kernel/sched_walt_rotate_big_tasks + + #colocation v3 settings + echo 740000 > /proc/sys/kernel/sched_little_cluster_coloc_fmin_khz + + # configure governor settings for little cluster + echo "schedutil" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor + echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/up_rate_limit_us + echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/down_rate_limit_us + echo 1248000 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/hispeed_freq + echo 576000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq + + # configure governor settings for big cluster + echo "schedutil" > /sys/devices/system/cpu/cpu6/cpufreq/scaling_governor + echo 0 > /sys/devices/system/cpu/cpu6/cpufreq/schedutil/up_rate_limit_us + echo 0 > /sys/devices/system/cpu/cpu6/cpufreq/schedutil/down_rate_limit_us + echo 1267200 > /sys/devices/system/cpu/cpu6/cpufreq/schedutil/hispeed_freq + echo 652800 > /sys/devices/system/cpu/cpu6/cpufreq/scaling_min_freq + + # sched_load_boost as -6 is equivalent to target load as 85. It is per cpu tunable. + echo -6 > /sys/devices/system/cpu/cpu6/sched_load_boost + echo -6 > /sys/devices/system/cpu/cpu7/sched_load_boost + echo 85 > /sys/devices/system/cpu/cpu6/cpufreq/schedutil/hispeed_load + + # Enable conservative pl + echo 1 > /proc/sys/kernel/sched_conservative_pl + + echo "0:1248000" > /sys/module/cpu_boost/parameters/input_boost_freq + echo 40 > /sys/module/cpu_boost/parameters/input_boost_ms + + # Set Memory parameters + configure_memory_parameters + + # Enable bus-dcvs + for device in /sys/devices/platform/soc + do + for cpubw in $device/*cpu-cpu-llcc-bw/devfreq/*cpu-cpu-llcc-bw + do + echo "bw_hwmon" > $cpubw/governor + echo 50 > $cpubw/polling_interval + echo "2288 4577 7110 9155 12298 14236" > $cpubw/bw_hwmon/mbps_zones + echo 4 > $cpubw/bw_hwmon/sample_ms + echo 68 > $cpubw/bw_hwmon/io_percent + echo 20 > $cpubw/bw_hwmon/hist_memory + echo 0 > $cpubw/bw_hwmon/hyst_length + echo 80 > $cpubw/bw_hwmon/down_thres + echo 0 > $cpubw/bw_hwmon/guard_band_mbps + echo 250 > $cpubw/bw_hwmon/up_scale + echo 1600 > $cpubw/bw_hwmon/idle_mbps + done + + for llccbw in $device/*cpu-llcc-ddr-bw/devfreq/*cpu-llcc-ddr-bw + do + echo "bw_hwmon" > $llccbw/governor + echo 40 > $llccbw/polling_interval + echo "1144 1720 2086 2929 3879 5931 6881 8137" > $llccbw/bw_hwmon/mbps_zones + echo 4 > $llccbw/bw_hwmon/sample_ms + echo 68 > $llccbw/bw_hwmon/io_percent + echo 20 > $llccbw/bw_hwmon/hist_memory + echo 0 > $llccbw/bw_hwmon/hyst_length + echo 80 > $llccbw/bw_hwmon/down_thres + echo 0 > $llccbw/bw_hwmon/guard_band_mbps + echo 250 > $llccbw/bw_hwmon/up_scale + echo 1600 > $llccbw/bw_hwmon/idle_mbps + done + + for npubw in $device/*npu*-npu-ddr-bw/devfreq/*npu*-npu-ddr-bw + do + echo 1 > /sys/devices/virtual/npu/msm_npu/pwr + echo "bw_hwmon" > $npubw/governor + echo 40 > $npubw/polling_interval + echo "1144 1720 2086 2929 3879 5931 6881 8137" > $npubw/bw_hwmon/mbps_zones + echo 4 > $npubw/bw_hwmon/sample_ms + echo 80 > $npubw/bw_hwmon/io_percent + echo 20 > $npubw/bw_hwmon/hist_memory + echo 10 > $npubw/bw_hwmon/hyst_length + echo 30 > $npubw/bw_hwmon/down_thres + echo 0 > $npubw/bw_hwmon/guard_band_mbps + echo 250 > $npubw/bw_hwmon/up_scale + echo 0 > $npubw/bw_hwmon/idle_mbps + echo 0 > /sys/devices/virtual/npu/msm_npu/pwr + done + + #Enable mem_latency governor for L3, LLCC, and DDR scaling + for memlat in $device/*cpu*-lat/devfreq/*cpu*-lat + do + echo "mem_latency" > $memlat/governor + echo 10 > $memlat/polling_interval + echo 400 > $memlat/mem_latency/ratio_ceil + done + + #Enable cdspl3 governor for L3 cdsp nodes + for l3cdsp in $device/*cdsp-cdsp-l3-lat/devfreq/*cdsp-cdsp-l3-lat + do + echo "cdspl3" > $l3cdsp/governor + done + + #Gold L3 ratio ceil + echo 4000 > /sys/class/devfreq/soc:qcom,cpu6-cpu-l3-lat/mem_latency/ratio_ceil + + #Enable compute governor for gold latfloor + for latfloor in $device/*cpu*-ddr-latfloor*/devfreq/*cpu-ddr-latfloor* + do + echo "compute" > $latfloor/governor + echo 10 > $latfloor/polling_interval + done + + done + + # cpuset parameters + echo 0-5 > /dev/cpuset/background/cpus + echo 0-5 > /dev/cpuset/system-background/cpus + + # Turn off scheduler boost at the end + echo 0 > /proc/sys/kernel/sched_boost + + # Turn on sleep modes + echo 0 > /sys/module/lpm_levels/parameters/sleep_disabled + ;; +esac + + +case "$target" in + "qcs605") + + #Apply settings for qcs605 + # Set the default IRQ affinity to the silver cluster. When a + # CPU is isolated/hotplugged, the IRQ affinity is adjusted + # to one of the CPU from the default IRQ affinity mask. + echo 3f > /proc/irq/default_smp_affinity + + if [ -f /sys/devices/soc0/soc_id ]; then + soc_id=`cat /sys/devices/soc0/soc_id` + else + soc_id=`cat /sys/devices/system/soc/soc0/id` + fi + + if [ -f /sys/devices/soc0/hw_platform ]; then + hw_platform=`cat /sys/devices/soc0/hw_platform` + else + hw_platform=`cat /sys/devices/system/soc/soc0/hw_platform` + fi + + if [ -f /sys/devices/soc0/platform_subtype_id ]; then + platform_subtype_id=`cat /sys/devices/soc0/platform_subtype_id` + fi + + case "$soc_id" in + "347" ) + + # Start Host based Touch processing + case "$hw_platform" in + "Surf" | "RCM" | "QRD" ) + start_hbtp + ;; + "MTP" ) + if [ $platform_subtype_id != 5 ]; then + start_hbtp + fi + ;; + esac + + # Core control parameters on silver + echo 0 0 0 0 1 1 > /sys/devices/system/cpu/cpu0/core_ctl/not_preferred + echo 4 > /sys/devices/system/cpu/cpu0/core_ctl/min_cpus + echo 60 > /sys/devices/system/cpu/cpu0/core_ctl/busy_up_thres + echo 40 > /sys/devices/system/cpu/cpu0/core_ctl/busy_down_thres + echo 100 > /sys/devices/system/cpu/cpu0/core_ctl/offline_delay_ms + echo 0 > /sys/devices/system/cpu/cpu0/core_ctl/is_big_cluster + echo 8 > /sys/devices/system/cpu/cpu0/core_ctl/task_thres + + # Setting b.L scheduler parameters + echo 96 > /proc/sys/kernel/sched_upmigrate + echo 90 > /proc/sys/kernel/sched_downmigrate + echo 140 > /proc/sys/kernel/sched_group_upmigrate + echo 120 > /proc/sys/kernel/sched_group_downmigrate + + # configure governor settings for little cluster + echo "schedutil" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor + echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/rate_limit_us + echo 1209600 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/hispeed_freq + echo 576000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq + + # configure governor settings for big cluster + echo "schedutil" > /sys/devices/system/cpu/cpu6/cpufreq/scaling_governor + echo 0 > /sys/devices/system/cpu/cpu6/cpufreq/schedutil/rate_limit_us + echo 1344000 > /sys/devices/system/cpu/cpu6/cpufreq/schedutil/hispeed_freq + echo 825600 > /sys/devices/system/cpu/cpu6/cpufreq/scaling_min_freq + + echo "0:1209600" > /sys/module/cpu_boost/parameters/input_boost_freq + echo 40 > /sys/module/cpu_boost/parameters/input_boost_ms + + # Enable bus-dcvs + for cpubw in /sys/class/devfreq/*qcom,cpubw* + do + echo "bw_hwmon" > $cpubw/governor + echo 50 > $cpubw/polling_interval + echo "1144 1720 2086 2929 3879 5931 6881" > $cpubw/bw_hwmon/mbps_zones + echo 4 > $cpubw/bw_hwmon/sample_ms + echo 68 > $cpubw/bw_hwmon/io_percent + echo 20 > $cpubw/bw_hwmon/hist_memory + echo 0 > $cpubw/bw_hwmon/hyst_length + echo 80 > $cpubw/bw_hwmon/down_thres + echo 0 > $cpubw/bw_hwmon/low_power_ceil_mbps + echo 68 > $cpubw/bw_hwmon/low_power_io_percent + echo 20 > $cpubw/bw_hwmon/low_power_delay + echo 0 > $cpubw/bw_hwmon/guard_band_mbps + echo 250 > $cpubw/bw_hwmon/up_scale + echo 1600 > $cpubw/bw_hwmon/idle_mbps + done + + #Enable mem_latency governor for DDR scaling + for memlat in /sys/class/devfreq/*qcom,memlat-cpu* + do + echo "mem_latency" > $memlat/governor + echo 10 > $memlat/polling_interval + echo 400 > $memlat/mem_latency/ratio_ceil + done + + #Enable mem_latency governor for L3 scaling + for memlat in /sys/class/devfreq/*qcom,l3-cpu* + do + echo "mem_latency" > $memlat/governor + echo 10 > $memlat/polling_interval + echo 400 > $memlat/mem_latency/ratio_ceil + done + + echo "cpufreq" > /sys/class/devfreq/soc:qcom,mincpubw/governor + + # cpuset parameters + echo 0-5 > /dev/cpuset/background/cpus + echo 0-5 > /dev/cpuset/system-background/cpus + + # Turn off scheduler boost at the end + echo 0 > /proc/sys/kernel/sched_boost + + # Turn on sleep modes. + echo 0 > /sys/module/lpm_levels/parameters/sleep_disabled + echo 100 > /proc/sys/vm/swappiness + ;; + esac + ;; +esac + +case "$target" in + "apq8084") + echo 4 > /sys/module/lpm_levels/enable_low_power/l2 + echo 1 > /sys/module/msm_pm/modes/cpu0/power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu1/power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu2/power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu3/power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu0/power_collapse/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu1/power_collapse/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu2/power_collapse/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu3/power_collapse/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu0/standalone_power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu1/standalone_power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu2/standalone_power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu3/standalone_power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu0/standalone_power_collapse/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu1/standalone_power_collapse/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu2/standalone_power_collapse/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu3/standalone_power_collapse/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu0/retention/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu1/retention/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu2/retention/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu3/retention/idle_enabled + echo 0 > /sys/module/msm_thermal/core_control/enabled + echo 1 > /sys/devices/system/cpu/cpu1/online + echo 1 > /sys/devices/system/cpu/cpu2/online + echo 1 > /sys/devices/system/cpu/cpu3/online + for devfreq_gov in /sys/class/devfreq/qcom,cpubw*/governor + do + echo "cpubw_hwmon" > $devfreq_gov + done + echo "interactive" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor + echo "interactive" > /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor + echo "interactive" > /sys/devices/system/cpu/cpu2/cpufreq/scaling_governor + echo "interactive" > /sys/devices/system/cpu/cpu3/cpufreq/scaling_governor + echo "20000 1400000:40000 1700000:20000" > /sys/devices/system/cpu/cpufreq/interactive/above_hispeed_delay + echo 90 > /sys/devices/system/cpu/cpufreq/interactive/go_hispeed_load + echo 1497600 > /sys/devices/system/cpu/cpufreq/interactive/hispeed_freq + echo "85 1500000:90 1800000:70" > /sys/devices/system/cpu/cpufreq/interactive/target_loads + echo 40000 > /sys/devices/system/cpu/cpufreq/interactive/min_sample_time + echo 20 > /sys/module/cpu_boost/parameters/boost_ms + echo 1728000 > /sys/module/cpu_boost/parameters/sync_threshold + echo 100000 > /sys/devices/system/cpu/cpufreq/interactive/sampling_down_factor + echo 1497600 > /sys/module/cpu_boost/parameters/input_boost_freq + echo 40 > /sys/module/cpu_boost/parameters/input_boost_ms + echo 1 > /dev/cpuctl/apps/cpu.notify_on_migrate + echo 300000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq + echo 300000 > /sys/devices/system/cpu/cpu1/cpufreq/scaling_min_freq + echo 300000 > /sys/devices/system/cpu/cpu2/cpufreq/scaling_min_freq + echo 300000 > /sys/devices/system/cpu/cpu3/cpufreq/scaling_min_freq + echo 1 > /sys/module/msm_thermal/core_control/enabled + chown -h system /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq + chown -h system /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq + chown -h root.system /sys/devices/system/cpu/mfreq + chmod -h 220 /sys/devices/system/cpu/mfreq + chown -h root.system /sys/devices/system/cpu/cpu1/online + chown -h root.system /sys/devices/system/cpu/cpu2/online + chown -h root.system /sys/devices/system/cpu/cpu3/online + chmod -h 664 /sys/devices/system/cpu/cpu1/online + chmod -h 664 /sys/devices/system/cpu/cpu2/online + chmod -h 664 /sys/devices/system/cpu/cpu3/online + ;; +esac + +case "$target" in + "mpq8092") + echo 4 > /sys/module/lpm_levels/enable_low_power/l2 + echo 1 > /sys/module/msm_pm/modes/cpu0/power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu1/power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu2/power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu3/power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu0/power_collapse/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu1/power_collapse/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu2/power_collapse/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu3/power_collapse/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu0/standalone_power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu1/standalone_power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu2/standalone_power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu3/standalone_power_collapse/suspend_enabled + echo 1 > /sys/module/msm_pm/modes/cpu0/standalone_power_collapse/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu1/standalone_power_collapse/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu2/standalone_power_collapse/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu3/standalone_power_collapse/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu0/retention/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu1/retention/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu2/retention/idle_enabled + echo 1 > /sys/module/msm_pm/modes/cpu3/retention/idle_enabled + echo 0 > /sys/module/msm_thermal/core_control/enabled + echo 1 > /sys/devices/system/cpu/cpu1/online + echo 1 > /sys/devices/system/cpu/cpu2/online + echo 1 > /sys/devices/system/cpu/cpu3/online + echo "ondemand" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor + echo "ondemand" > /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor + echo "ondemand" > /sys/devices/system/cpu/cpu2/cpufreq/scaling_governor + echo "ondemand" > /sys/devices/system/cpu/cpu3/cpufreq/scaling_governor + echo 50000 > /sys/devices/system/cpu/cpufreq/ondemand/sampling_rate + echo 90 > /sys/devices/system/cpu/cpufreq/ondemand/up_threshold + echo 1 > /sys/devices/system/cpu/cpufreq/ondemand/io_is_busy + echo 300000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq + echo 300000 > /sys/devices/system/cpu/cpu1/cpufreq/scaling_min_freq + echo 300000 > /sys/devices/system/cpu/cpu2/cpufreq/scaling_min_freq + echo 300000 > /sys/devices/system/cpu/cpu3/cpufreq/scaling_min_freq + echo 1 > /sys/module/msm_thermal/core_control/enabled + chown -h system /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq + chown -h system /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq + chown -h root.system /sys/devices/system/cpu/mfreq + chmod -h 220 /sys/devices/system/cpu/mfreq + chown -h root.system /sys/devices/system/cpu/cpu1/online + chown -h root.system /sys/devices/system/cpu/cpu2/online + chown -h root.system /sys/devices/system/cpu/cpu3/online + chmod -h 664 /sys/devices/system/cpu/cpu1/online + chmod -h 664 /sys/devices/system/cpu/cpu2/online + chmod -h 664 /sys/devices/system/cpu/cpu3/online + ;; +esac + +case "$target" in + "msm8992") + # disable thermal bcl hotplug to switch governor + echo 0 > /sys/module/msm_thermal/core_control/enabled + echo -n disable > /sys/devices/soc.*/qcom,bcl.*/mode + bcl_hotplug_mask=`cat /sys/devices/soc.*/qcom,bcl.*/hotplug_mask` + echo 0 > /sys/devices/soc.*/qcom,bcl.*/hotplug_mask + echo -n enable > /sys/devices/soc.*/qcom,bcl.*/mode + echo 0 > /sys/module/lpm_levels/parameters/sleep_disabled + # configure governor settings for little cluster + echo "interactive" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor + echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/use_sched_load + echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/use_migration_notif + echo 19000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/above_hispeed_delay + echo 90 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/go_hispeed_load + echo 20000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/timer_rate + echo 960000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/hispeed_freq + echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/io_is_busy + echo 80 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/target_loads + echo 40000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/min_sample_time + echo 80000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/max_freq_hysteresis + echo 384000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq + # online CPU4 + echo 1 > /sys/devices/system/cpu/cpu4/online + # configure governor settings for big cluster + echo "interactive" > /sys/devices/system/cpu/cpu4/cpufreq/scaling_governor + echo 1 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/use_sched_load + echo 1 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/use_migration_notif + echo 19000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/above_hispeed_delay + echo 90 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/go_hispeed_load + echo 20000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/timer_rate + echo 1536000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/hispeed_freq + echo 1 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/io_is_busy + echo 85 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/target_loads + echo 40000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/min_sample_time + echo 80000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/max_freq_hysteresis + echo 384000 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_min_freq + # re-enable thermal and BCL hotplug + echo 1 > /sys/module/msm_thermal/core_control/enabled + echo -n disable > /sys/devices/soc.*/qcom,bcl.*/mode + echo $bcl_hotplug_mask > /sys/devices/soc.*/qcom,bcl.*/hotplug_mask + echo $bcl_soc_hotplug_mask > /sys/devices/soc.*/qcom,bcl.*/hotplug_soc_mask + echo -n enable > /sys/devices/soc.*/qcom,bcl.*/mode + # plugin remaining A57s + echo 1 > /sys/devices/system/cpu/cpu5/online + # input boost configuration + echo 0:1248000 > /sys/module/cpu_boost/parameters/input_boost_freq + echo 40 > /sys/module/cpu_boost/parameters/input_boost_ms + # Enable task migration fixups in the scheduler + echo 1 > /proc/sys/kernel/sched_migration_fixup + for devfreq_gov in /sys/class/devfreq/qcom,cpubw*/governor + do + echo "bw_hwmon" > $devfreq_gov + done + #enable rps static configuration + echo 8 > /sys/class/net/rmnet_ipa0/queues/rx-0/rps_cpus + echo 30 > /proc/sys/kernel/sched_small_task + ;; +esac + +case "$target" in + "msm8994") + # ensure at most one A57 is online when thermal hotplug is disabled + echo 0 > /sys/devices/system/cpu/cpu5/online + echo 0 > /sys/devices/system/cpu/cpu6/online + echo 0 > /sys/devices/system/cpu/cpu7/online + # in case CPU4 is online, limit its frequency + echo 960000 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_max_freq + # Limit A57 max freq from msm_perf module in case CPU 4 is offline + echo "4:960000 5:960000 6:960000 7:960000" > /sys/module/msm_performance/parameters/cpu_max_freq + # disable thermal bcl hotplug to switch governor + echo 0 > /sys/module/msm_thermal/core_control/enabled + for mode in /sys/devices/soc.0/qcom,bcl.*/mode + do + echo -n disable > $mode + done + for hotplug_mask in /sys/devices/soc.0/qcom,bcl.*/hotplug_mask + do + bcl_hotplug_mask=`cat $hotplug_mask` + echo 0 > $hotplug_mask + done + for hotplug_soc_mask in /sys/devices/soc.0/qcom,bcl.*/hotplug_soc_mask + do + bcl_soc_hotplug_mask=`cat $hotplug_soc_mask` + echo 0 > $hotplug_soc_mask + done + for mode in /sys/devices/soc.0/qcom,bcl.*/mode + do + echo -n enable > $mode + done + # configure governor settings for little cluster + echo "interactive" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor + echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/use_sched_load + echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/use_migration_notif + echo 19000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/above_hispeed_delay + echo 90 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/go_hispeed_load + echo 20000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/timer_rate + echo 960000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/hispeed_freq + echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/io_is_busy + echo 80 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/target_loads + echo 40000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/min_sample_time + echo 80000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/max_freq_hysteresis + echo 384000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq + # online CPU4 + echo 1 > /sys/devices/system/cpu/cpu4/online + # Best effort limiting for first time boot if msm_performance module is absent + echo 960000 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_max_freq + # configure governor settings for big cluster + echo "interactive" > /sys/devices/system/cpu/cpu4/cpufreq/scaling_governor + echo 1 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/use_sched_load + echo 1 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/use_migration_notif + echo "19000 1400000:39000 1700000:19000" > /sys/devices/system/cpu/cpu4/cpufreq/interactive/above_hispeed_delay + echo 90 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/go_hispeed_load + echo 20000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/timer_rate + echo 1248000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/hispeed_freq + echo 1 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/io_is_busy + echo "85 1500000:90 1800000:70" > /sys/devices/system/cpu/cpu4/cpufreq/interactive/target_loads + echo 40000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/min_sample_time + echo 80000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/max_freq_hysteresis + echo 384000 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_min_freq + # restore A57's max + cat /sys/devices/system/cpu/cpu4/cpufreq/cpuinfo_max_freq > /sys/devices/system/cpu/cpu4/cpufreq/scaling_max_freq + # re-enable thermal and BCL hotplug + echo 1 > /sys/module/msm_thermal/core_control/enabled + for mode in /sys/devices/soc.0/qcom,bcl.*/mode + do + echo -n disable > $mode + done + for hotplug_mask in /sys/devices/soc.0/qcom,bcl.*/hotplug_mask + do + echo $bcl_hotplug_mask > $hotplug_mask + done + for hotplug_soc_mask in /sys/devices/soc.0/qcom,bcl.*/hotplug_soc_mask + do + echo $bcl_soc_hotplug_mask > $hotplug_soc_mask + done + for mode in /sys/devices/soc.0/qcom,bcl.*/mode + do + echo -n enable > $mode + done + # plugin remaining A57s + echo 1 > /sys/devices/system/cpu/cpu5/online + echo 1 > /sys/devices/system/cpu/cpu6/online + echo 1 > /sys/devices/system/cpu/cpu7/online + echo 0 > /sys/module/lpm_levels/parameters/sleep_disabled + # Restore CPU 4 max freq from msm_performance + echo "4:4294967295 5:4294967295 6:4294967295 7:4294967295" > /sys/module/msm_performance/parameters/cpu_max_freq + # input boost configuration + echo 0:1344000 > /sys/module/cpu_boost/parameters/input_boost_freq + echo 40 > /sys/module/cpu_boost/parameters/input_boost_ms + # Setting b.L scheduler parameters + echo 1 > /proc/sys/kernel/sched_migration_fixup + echo 30 > /proc/sys/kernel/sched_small_task + echo 20 > /proc/sys/kernel/sched_mostly_idle_load + echo 3 > /proc/sys/kernel/sched_mostly_idle_nr_run + echo 99 > /proc/sys/kernel/sched_upmigrate + echo 85 > /proc/sys/kernel/sched_downmigrate + echo 400000 > /proc/sys/kernel/sched_freq_inc_notify + echo 400000 > /proc/sys/kernel/sched_freq_dec_notify + #enable rps static configuration + echo 8 > /sys/class/net/rmnet_ipa0/queues/rx-0/rps_cpus + for devfreq_gov in /sys/class/devfreq/qcom,cpubw*/governor + do + echo "bw_hwmon" > $devfreq_gov + done + ;; +esac + +case "$target" in + "msm8996") + # disable thermal bcl hotplug to switch governor + echo 0 > /sys/module/msm_thermal/core_control/enabled + echo -n disable > /sys/devices/soc/soc:qcom,bcl/mode + bcl_hotplug_mask=`cat /sys/devices/soc/soc:qcom,bcl/hotplug_mask` + echo 0 > /sys/devices/soc/soc:qcom,bcl/hotplug_mask + bcl_soc_hotplug_mask=`cat /sys/devices/soc/soc:qcom,bcl/hotplug_soc_mask` + echo 0 > /sys/devices/soc/soc:qcom,bcl/hotplug_soc_mask + echo -n enable > /sys/devices/soc/soc:qcom,bcl/mode + # set sync wakee policy tunable + echo 1 > /proc/sys/kernel/sched_prefer_sync_wakee_to_waker + # configure governor settings for little cluster + echo "interactive" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor + echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/use_sched_load + echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/use_migration_notif + echo 19000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/above_hispeed_delay + echo 90 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/go_hispeed_load + echo 20000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/timer_rate + echo 960000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/hispeed_freq + echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/io_is_busy + echo 80 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/target_loads + echo 19000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/min_sample_time + echo 79000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/max_freq_hysteresis + echo 300000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq + echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/ignore_hispeed_on_notif + # online CPU2 + echo 1 > /sys/devices/system/cpu/cpu2/online + # configure governor settings for big cluster + echo "interactive" > /sys/devices/system/cpu/cpu2/cpufreq/scaling_governor + echo 1 > /sys/devices/system/cpu/cpu2/cpufreq/interactive/use_sched_load + echo 1 > /sys/devices/system/cpu/cpu2/cpufreq/interactive/use_migration_notif + echo "19000 1400000:39000 1700000:19000 2100000:79000" > /sys/devices/system/cpu/cpu2/cpufreq/interactive/above_hispeed_delay + echo 90 > /sys/devices/system/cpu/cpu2/cpufreq/interactive/go_hispeed_load + echo 20000 > /sys/devices/system/cpu/cpu2/cpufreq/interactive/timer_rate + echo 1248000 > /sys/devices/system/cpu/cpu2/cpufreq/interactive/hispeed_freq + echo 1 > /sys/devices/system/cpu/cpu2/cpufreq/interactive/io_is_busy + echo "85 1500000:90 1800000:70 2100000:95" > /sys/devices/system/cpu/cpu2/cpufreq/interactive/target_loads + echo 19000 > /sys/devices/system/cpu/cpu2/cpufreq/interactive/min_sample_time + echo 79000 > /sys/devices/system/cpu/cpu2/cpufreq/interactive/max_freq_hysteresis + echo 300000 > /sys/devices/system/cpu/cpu2/cpufreq/scaling_min_freq + echo 1 > /sys/devices/system/cpu/cpu2/cpufreq/interactive/ignore_hispeed_on_notif + # re-enable thermal and BCL hotplug + echo 1 > /sys/module/msm_thermal/core_control/enabled + echo -n disable > /sys/devices/soc/soc:qcom,bcl/mode + echo $bcl_hotplug_mask > /sys/devices/soc/soc:qcom,bcl/hotplug_mask + echo $bcl_soc_hotplug_mask > /sys/devices/soc/soc:qcom,bcl/hotplug_soc_mask + echo -n enable > /sys/devices/soc/soc:qcom,bcl/mode + # input boost configuration + echo "0:1324800 2:1324800" > /sys/module/cpu_boost/parameters/input_boost_freq + echo 40 > /sys/module/cpu_boost/parameters/input_boost_ms + # Setting b.L scheduler parameters + echo 0 > /proc/sys/kernel/sched_boost + echo 1 > /proc/sys/kernel/sched_migration_fixup + echo 45 > /proc/sys/kernel/sched_downmigrate + echo 45 > /proc/sys/kernel/sched_upmigrate + echo 400000 > /proc/sys/kernel/sched_freq_inc_notify + echo 400000 > /proc/sys/kernel/sched_freq_dec_notify + echo 3 > /proc/sys/kernel/sched_spill_nr_run + echo 100 > /proc/sys/kernel/sched_init_task_load + # Enable bus-dcvs + for cpubw in /sys/class/devfreq/*qcom,cpubw* + do + echo "bw_hwmon" > $cpubw/governor + echo 50 > $cpubw/polling_interval + echo 1525 > $cpubw/min_freq + echo "1525 5195 11863 13763" > $cpubw/bw_hwmon/mbps_zones + echo 4 > $cpubw/bw_hwmon/sample_ms + echo 34 > $cpubw/bw_hwmon/io_percent + echo 20 > $cpubw/bw_hwmon/hist_memory + echo 10 > $cpubw/bw_hwmon/hyst_length + echo 0 > $cpubw/bw_hwmon/low_power_ceil_mbps + echo 34 > $cpubw/bw_hwmon/low_power_io_percent + echo 20 > $cpubw/bw_hwmon/low_power_delay + echo 0 > $cpubw/bw_hwmon/guard_band_mbps + echo 250 > $cpubw/bw_hwmon/up_scale + echo 1600 > $cpubw/bw_hwmon/idle_mbps + done + + for memlat in /sys/class/devfreq/*qcom,memlat-cpu* + do + echo "mem_latency" > $memlat/governor + echo 10 > $memlat/polling_interval + done + echo "cpufreq" > /sys/class/devfreq/soc:qcom,mincpubw/governor + + soc_revision=`cat /sys/devices/soc0/revision` + if [ "$soc_revision" == "2.0" ]; then + #Disable suspend for v2.0 + echo pwr_dbg > /sys/power/wake_lock + elif [ "$soc_revision" == "2.1" ]; then + # Enable C4.D4.E4.M3 LPM modes + # Disable D3 state + echo 0 > /sys/module/lpm_levels/system/pwr/pwr-l2-gdhs/idle_enabled + echo 0 > /sys/module/lpm_levels/system/perf/perf-l2-gdhs/idle_enabled + # Disable DEF-FPC mode + echo N > /sys/module/lpm_levels/system/pwr/cpu0/fpc-def/idle_enabled + echo N > /sys/module/lpm_levels/system/pwr/cpu1/fpc-def/idle_enabled + echo N > /sys/module/lpm_levels/system/perf/cpu2/fpc-def/idle_enabled + echo N > /sys/module/lpm_levels/system/perf/cpu3/fpc-def/idle_enabled + else + # Enable all LPMs by default + # This will enable C4, D4, D3, E4 and M3 LPMs + echo N > /sys/module/lpm_levels/parameters/sleep_disabled + fi + echo N > /sys/module/lpm_levels/parameters/sleep_disabled + # Starting io prefetcher service + start iop + + # Set Memory parameters + configure_memory_parameters + ;; +esac + +case "$target" in + "sdm845") + + # Set the default IRQ affinity to the silver cluster. When a + # CPU is isolated/hotplugged, the IRQ affinity is adjusted + # to one of the CPU from the default IRQ affinity mask. + echo f > /proc/irq/default_smp_affinity + + if [ -f /sys/devices/soc0/soc_id ]; then + soc_id=`cat /sys/devices/soc0/soc_id` + else + soc_id=`cat /sys/devices/system/soc/soc0/id` + fi + + if [ -f /sys/devices/soc0/hw_platform ]; then + hw_platform=`cat /sys/devices/soc0/hw_platform` + fi + + if [ -f /sys/devices/soc0/platform_subtype_id ]; then + platform_subtype_id=`cat /sys/devices/soc0/platform_subtype_id` + fi + + case "$soc_id" in + "321" | "341") + # Start Host based Touch processing + case "$hw_platform" in + "QRD" ) + case "$platform_subtype_id" in + "32") #QVR845 do nothing + ;; + *) + start_hbtp + ;; + esac + ;; + *) + start_hbtp + ;; + esac + ;; + esac + # Core control parameters + echo 2 > /sys/devices/system/cpu/cpu4/core_ctl/min_cpus + echo 60 > /sys/devices/system/cpu/cpu4/core_ctl/busy_up_thres + echo 30 > /sys/devices/system/cpu/cpu4/core_ctl/busy_down_thres + echo 100 > /sys/devices/system/cpu/cpu4/core_ctl/offline_delay_ms + echo 1 > /sys/devices/system/cpu/cpu4/core_ctl/is_big_cluster + echo 4 > /sys/devices/system/cpu/cpu4/core_ctl/task_thres + + # Setting b.L scheduler parameters + echo 95 > /proc/sys/kernel/sched_upmigrate + echo 85 > /proc/sys/kernel/sched_downmigrate + echo 100 > /proc/sys/kernel/sched_group_upmigrate + echo 95 > /proc/sys/kernel/sched_group_downmigrate + echo 1 > /proc/sys/kernel/sched_walt_rotate_big_tasks + + # configure governor settings for little cluster + echo "schedutil" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor + echo 0 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/rate_limit_us + echo 1209600 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/hispeed_freq + echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/schedutil/pl + echo 576000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq + + # configure governor settings for big cluster + echo "schedutil" > /sys/devices/system/cpu/cpu4/cpufreq/scaling_governor + echo 0 > /sys/devices/system/cpu/cpu4/cpufreq/schedutil/rate_limit_us + echo 1574400 > /sys/devices/system/cpu/cpu4/cpufreq/schedutil/hispeed_freq + echo 1 > /sys/devices/system/cpu/cpu4/cpufreq/schedutil/pl + echo "0:1324800" > /sys/module/cpu_boost/parameters/input_boost_freq + echo 120 > /sys/module/cpu_boost/parameters/input_boost_ms + # Limit the min frequency to 825MHz + echo 825000 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_min_freq + + # Enable oom_reaper + echo 1 > /sys/module/lowmemorykiller/parameters/oom_reaper + + # Enable bus-dcvs + for cpubw in /sys/class/devfreq/*qcom,cpubw* + do + echo "bw_hwmon" > $cpubw/governor + echo 50 > $cpubw/polling_interval + echo "2288 4577 6500 8132 9155 10681" > $cpubw/bw_hwmon/mbps_zones + echo 4 > $cpubw/bw_hwmon/sample_ms + echo 50 > $cpubw/bw_hwmon/io_percent + echo 20 > $cpubw/bw_hwmon/hist_memory + echo 10 > $cpubw/bw_hwmon/hyst_length + echo 0 > $cpubw/bw_hwmon/guard_band_mbps + echo 250 > $cpubw/bw_hwmon/up_scale + echo 1600 > $cpubw/bw_hwmon/idle_mbps + done + + for llccbw in /sys/class/devfreq/*qcom,llccbw* + do + echo "bw_hwmon" > $llccbw/governor + echo 50 > $llccbw/polling_interval + echo "1720 2929 3879 5931 6881" > $llccbw/bw_hwmon/mbps_zones + echo 4 > $llccbw/bw_hwmon/sample_ms + echo 80 > $llccbw/bw_hwmon/io_percent + echo 20 > $llccbw/bw_hwmon/hist_memory + echo 10 > $llccbw/bw_hwmon/hyst_length + echo 0 > $llccbw/bw_hwmon/guard_band_mbps + echo 250 > $llccbw/bw_hwmon/up_scale + echo 1600 > $llccbw/bw_hwmon/idle_mbps + done + + #Enable mem_latency governor for DDR scaling + for memlat in /sys/class/devfreq/*qcom,memlat-cpu* + do + echo "mem_latency" > $memlat/governor + echo 10 > $memlat/polling_interval + echo 400 > $memlat/mem_latency/ratio_ceil + done + + #Enable mem_latency governor for L3 scaling + for memlat in /sys/class/devfreq/*qcom,l3-cpu* + do + echo "mem_latency" > $memlat/governor + echo 10 > $memlat/polling_interval + echo 400 > $memlat/mem_latency/ratio_ceil + done + + #Enable userspace governor for L3 cdsp nodes + for l3cdsp in /sys/class/devfreq/*qcom,l3-cdsp* + do + echo "userspace" > $l3cdsp/governor + chown -h system $l3cdsp/userspace/set_freq + done + + #Gold L3 ratio ceil + echo 4000 > /sys/class/devfreq/soc:qcom,l3-cpu4/mem_latency/ratio_ceil + + echo "compute" > /sys/class/devfreq/soc:qcom,mincpubw/governor + echo 10 > /sys/class/devfreq/soc:qcom,mincpubw/polling_interval + + # cpuset parameters + echo 0-3 > /dev/cpuset/background/cpus + echo 0-3 > /dev/cpuset/system-background/cpus + + # Turn off scheduler boost at the end + echo 0 > /proc/sys/kernel/sched_boost + # Disable CPU Retention + echo N > /sys/module/lpm_levels/L3/cpu0/ret/idle_enabled + echo N > /sys/module/lpm_levels/L3/cpu1/ret/idle_enabled + echo N > /sys/module/lpm_levels/L3/cpu2/ret/idle_enabled + echo N > /sys/module/lpm_levels/L3/cpu3/ret/idle_enabled + echo N > /sys/module/lpm_levels/L3/cpu4/ret/idle_enabled + echo N > /sys/module/lpm_levels/L3/cpu5/ret/idle_enabled + echo N > /sys/module/lpm_levels/L3/cpu6/ret/idle_enabled + echo N > /sys/module/lpm_levels/L3/cpu7/ret/idle_enabled + echo N > /sys/module/lpm_levels/L3/l3-dyn-ret/idle_enabled + # Turn on sleep modes. + echo 0 > /sys/module/lpm_levels/parameters/sleep_disabled + echo 100 > /proc/sys/vm/swappiness + echo 120 > /proc/sys/vm/watermark_scale_factor + ;; +esac + +case "$target" in + "msmnile") + # Core control parameters for gold + echo 2 > /sys/devices/system/cpu/cpu4/core_ctl/min_cpus + echo 60 > /sys/devices/system/cpu/cpu4/core_ctl/busy_up_thres + echo 30 > /sys/devices/system/cpu/cpu4/core_ctl/busy_down_thres + echo 100 > /sys/devices/system/cpu/cpu4/core_ctl/offline_delay_ms + echo 3 > /sys/devices/system/cpu/cpu4/core_ctl/task_thres + + # Core control parameters for gold+ + echo 0 > /sys/devices/system/cpu/cpu7/core_ctl/min_cpus + echo 60 > /sys/devices/system/cpu/cpu7/core_ctl/busy_up_thres + echo 30 > /sys/devices/system/cpu/cpu7/core_ctl/busy_down_thres + echo 100 > /sys/devices/system/cpu/cpu7/core_ctl/offline_delay_ms + echo 1 > /sys/devices/system/cpu/cpu7/core_ctl/task_thres + # Controls how many more tasks should be eligible to run on gold CPUs + # w.r.t number of gold CPUs available to trigger assist (max number of + # tasks eligible to run on previous cluster minus number of CPUs in + # the previous cluster). + # + # Setting to 1 by default which means there should be at least + # 4 tasks eligible to run on gold cluster (tasks running on gold cores + # plus misfit tasks on silver cores) to trigger assitance from gold+. + echo 1 > /sys/devices/system/cpu/cpu7/core_ctl/nr_prev_assist_thresh + + # Disable Core control on silver + echo 0 > /sys/devices/system/cpu/cpu0/core_ctl/enable + + # Setting b.L scheduler parameters + echo 95 95 > /proc/sys/kernel/sched_upmigrate + echo 85 85 > /proc/sys/kernel/sched_downmigrate + echo 100 > /proc/sys/kernel/sched_group_upmigrate + echo 10 > /proc/sys/kernel/sched_group_downmigrate + echo 1 > /proc/sys/kernel/sched_walt_rotate_big_tasks + + # cpuset parameters + echo 0-3 > /dev/cpuset/background/cpus + echo 0-3 > /dev/cpuset/system-background/cpus + + # Turn off scheduler boost at the end + echo 0 > /proc/sys/kernel/sched_boost + + # configure governor settings for silver cluster + echo "schedutil" > /sys/devices/system/cpu/cpufreq/policy0/scaling_governor + echo 0 > /sys/devices/system/cpu/cpufreq/policy0/schedutil/up_rate_limit_us + echo 0 > /sys/devices/system/cpu/cpufreq/policy0/schedutil/down_rate_limit_us + echo 1209600 > /sys/devices/system/cpu/cpufreq/policy0/schedutil/hispeed_freq + echo 576000 > /sys/devices/system/cpu/cpufreq/policy0/scaling_min_freq + echo 1 > /sys/devices/system/cpu/cpufreq/policy0/schedutil/pl + + # configure governor settings for gold cluster + echo "schedutil" > /sys/devices/system/cpu/cpufreq/policy4/scaling_governor + echo 0 > /sys/devices/system/cpu/cpufreq/policy4/schedutil/up_rate_limit_us + echo 0 > /sys/devices/system/cpu/cpufreq/policy0/schedutil/down_rate_limit_us + echo 1612800 > /sys/devices/system/cpu/cpufreq/policy4/schedutil/hispeed_freq + echo 1 > /sys/devices/system/cpu/cpufreq/policy4/schedutil/pl + + # configure governor settings for gold+ cluster + echo "schedutil" > /sys/devices/system/cpu/cpufreq/policy7/scaling_governor + echo 0 > /sys/devices/system/cpu/cpufreq/policy7/schedutil/up_rate_limit_us + echo 0 > /sys/devices/system/cpu/cpufreq/policy0/schedutil/down_rate_limit_us + echo 1612800 > /sys/devices/system/cpu/cpufreq/policy7/schedutil/hispeed_freq + echo 1 > /sys/devices/system/cpu/cpufreq/policy7/schedutil/pl + + # configure input boost settings + echo "0:1324800" > /sys/module/cpu_boost/parameters/input_boost_freq + echo 120 > /sys/module/cpu_boost/parameters/input_boost_ms + + # Disable wsf, beacause we are using efk. + # wsf Range : 1..1000 So set to bare minimum value 1. + echo 1 > /proc/sys/vm/watermark_scale_factor + + echo 0-3 > /dev/cpuset/background/cpus + echo 0-3 > /dev/cpuset/system-background/cpus + + # Enable oom_reaper + if [ -f /sys/module/lowmemorykiller/parameters/oom_reaper ]; then + echo 1 > /sys/module/lowmemorykiller/parameters/oom_reaper + else + echo 1 > /proc/sys/vm/reap_mem_on_sigkill + fi + + # Enable bus-dcvs + for device in /sys/devices/platform/soc + do + for cpubw in $device/*cpu-cpu-llcc-bw/devfreq/*cpu-cpu-llcc-bw + do + echo "bw_hwmon" > $cpubw/governor + echo 40 > $cpubw/polling_interval + echo "2288 4577 7110 9155 12298 14236 15258" > $cpubw/bw_hwmon/mbps_zones + echo 4 > $cpubw/bw_hwmon/sample_ms + echo 50 > $cpubw/bw_hwmon/io_percent + echo 20 > $cpubw/bw_hwmon/hist_memory + echo 10 > $cpubw/bw_hwmon/hyst_length + echo 30 > $cpubw/bw_hwmon/down_thres + echo 0 > $cpubw/bw_hwmon/guard_band_mbps + echo 250 > $cpubw/bw_hwmon/up_scale + echo 1600 > $cpubw/bw_hwmon/idle_mbps + echo 14236 > $cpubw/max_freq + done + + for llccbw in $device/*cpu-llcc-ddr-bw/devfreq/*cpu-llcc-ddr-bw + do + echo "bw_hwmon" > $llccbw/governor + echo 40 > $llccbw/polling_interval + echo "1720 2929 3879 5931 6881 7980" > $llccbw/bw_hwmon/mbps_zones + echo 4 > $llccbw/bw_hwmon/sample_ms + echo 80 > $llccbw/bw_hwmon/io_percent + echo 20 > $llccbw/bw_hwmon/hist_memory + echo 10 > $llccbw/bw_hwmon/hyst_length + echo 30 > $llccbw/bw_hwmon/down_thres + echo 0 > $llccbw/bw_hwmon/guard_band_mbps + echo 250 > $llccbw/bw_hwmon/up_scale + echo 1600 > $llccbw/bw_hwmon/idle_mbps + echo 6881 > $llccbw/max_freq + done + + for npubw in $device/*npu-npu-ddr-bw/devfreq/*npu-npu-ddr-bw + do + echo 1 > /sys/devices/virtual/npu/msm_npu/pwr + echo "bw_hwmon" > $npubw/governor + echo 40 > $npubw/polling_interval + echo "1720 2929 3879 5931 6881 7980" > $npubw/bw_hwmon/mbps_zones + echo 4 > $npubw/bw_hwmon/sample_ms + echo 80 > $npubw/bw_hwmon/io_percent + echo 20 > $npubw/bw_hwmon/hist_memory + echo 6 > $npubw/bw_hwmon/hyst_length + echo 30 > $npubw/bw_hwmon/down_thres + echo 0 > $npubw/bw_hwmon/guard_band_mbps + echo 250 > $npubw/bw_hwmon/up_scale + echo 0 > $npubw/bw_hwmon/idle_mbps + echo 0 > /sys/devices/virtual/npu/msm_npu/pwr + done + + #Enable mem_latency governor for L3, LLCC, and DDR scaling + for memlat in $device/*cpu*-lat/devfreq/*cpu*-lat + do + echo "mem_latency" > $memlat/governor + echo 10 > $memlat/polling_interval + echo 400 > $memlat/mem_latency/ratio_ceil + done + + #Enable userspace governor for L3 cdsp nodes + for l3cdsp in $device/*cdsp-cdsp-l3-lat/devfreq/*cdsp-cdsp-l3-lat + do + echo "cdspl3" > $l3cdsp/governor + done + + #Enable compute governor for gold latfloor + for latfloor in $device/*cpu-ddr-latfloor*/devfreq/*cpu-ddr-latfloor* + do + echo "compute" > $latfloor/governor + echo 10 > $latfloor/polling_interval + done + + #Gold L3 ratio ceil + for l3gold in $device/*cpu4-cpu-l3-lat/devfreq/*cpu4-cpu-l3-lat + do + echo 4000 > $l3gold/mem_latency/ratio_ceil + done + + #Prime L3 ratio ceil + for l3prime in $device/*cpu7-cpu-l3-lat/devfreq/*cpu7-cpu-l3-lat + do + echo 20000 > $l3prime/mem_latency/ratio_ceil + done + done + + if [ -f /sys/devices/soc0/hw_platform ]; then + hw_platform=`cat /sys/devices/soc0/hw_platform` + else + hw_platform=`cat /sys/devices/system/soc/soc0/hw_platform` + fi + + if [ -f /sys/devices/soc0/platform_subtype_id ]; then + platform_subtype_id=`cat /sys/devices/soc0/platform_subtype_id` + fi + + case "$hw_platform" in + "MTP" | "Surf" | "RCM" ) + # Start Host based Touch processing + case "$platform_subtype_id" in + "0" | "1" | "2" | "3" | "4" | "5") + start_hbtp + ;; + esac + ;; + "HDK" ) + if [ -d /sys/kernel/hbtpsensor ] ; then + start_hbtp + fi + ;; + esac + + echo 0 > /sys/module/lpm_levels/parameters/sleep_disabled + configure_memory_parameters + target_type=`getprop ro.hardware.type` + if [ "$target_type" == "automotive" ]; then + # update frequencies + configure_automotive_sku_parameters + fi + + ;; +esac + +case "$target" in + "sdmshrike") + # Core control parameters for gold + echo 2 > /sys/devices/system/cpu/cpu4/core_ctl/min_cpus + echo 60 > /sys/devices/system/cpu/cpu4/core_ctl/busy_up_thres + echo 30 > /sys/devices/system/cpu/cpu4/core_ctl/busy_down_thres + echo 100 > /sys/devices/system/cpu/cpu4/core_ctl/offline_delay_ms + echo 3 > /sys/devices/system/cpu/cpu4/core_ctl/task_thres + + # Core control parameters for gold+ + echo 0 > /sys/devices/system/cpu/cpu7/core_ctl/min_cpus + echo 60 > /sys/devices/system/cpu/cpu7/core_ctl/busy_up_thres + echo 30 > /sys/devices/system/cpu/cpu7/core_ctl/busy_down_thres + echo 100 > /sys/devices/system/cpu/cpu7/core_ctl/offline_delay_ms + echo 1 > /sys/devices/system/cpu/cpu7/core_ctl/task_thres + # Controls how many more tasks should be eligible to run on gold CPUs + # w.r.t number of gold CPUs available to trigger assist (max number of + # tasks eligible to run on previous cluster minus number of CPUs in + # the previous cluster). + # + # Setting to 1 by default which means there should be at least + # 4 tasks eligible to run on gold cluster (tasks running on gold cores + # plus misfit tasks on silver cores) to trigger assitance from gold+. + echo 1 > /sys/devices/system/cpu/cpu7/core_ctl/nr_prev_assist_thresh + + # Disable Core control on silver + echo 0 > /sys/devices/system/cpu/cpu0/core_ctl/enable + + # Setting b.L scheduler parameters + echo 95 95 > /proc/sys/kernel/sched_upmigrate + echo 85 85 > /proc/sys/kernel/sched_downmigrate + echo 100 > /proc/sys/kernel/sched_group_upmigrate + echo 10 > /proc/sys/kernel/sched_group_downmigrate + echo 1 > /proc/sys/kernel/sched_walt_rotate_big_tasks + + # cpuset parameters + echo 0-3 > /dev/cpuset/background/cpus + echo 0-3 > /dev/cpuset/system-background/cpus + + # Turn off scheduler boost at the end + echo 0 > /proc/sys/kernel/sched_boost + + # configure governor settings for silver cluster + echo "schedutil" > /sys/devices/system/cpu/cpufreq/policy0/scaling_governor + echo 0 > /sys/devices/system/cpu/cpufreq/policy0/schedutil/up_rate_limit_us + echo 0 > /sys/devices/system/cpu/cpufreq/policy0/schedutil/down_rate_limit_us + echo 1209600 > /sys/devices/system/cpu/cpufreq/policy0/schedutil/hispeed_freq + echo 576000 > /sys/devices/system/cpu/cpufreq/policy0/scaling_min_freq + echo 1 > /sys/devices/system/cpu/cpufreq/policy0/schedutil/pl + + # configure governor settings for gold cluster + echo "schedutil" > /sys/devices/system/cpu/cpufreq/policy4/scaling_governor + echo 0 > /sys/devices/system/cpu/cpufreq/policy4/schedutil/up_rate_limit_us + echo 0 > /sys/devices/system/cpu/cpufreq/policy4/schedutil/down_rate_limit_us + echo 1612800 > /sys/devices/system/cpu/cpufreq/policy4/schedutil/hispeed_freq + echo 1 > /sys/devices/system/cpu/cpufreq/policy4/schedutil/pl + + # configure governor settings for gold+ cluster + echo "schedutil" > /sys/devices/system/cpu/cpufreq/policy7/scaling_governor + echo 0 > /sys/devices/system/cpu/cpufreq/policy7/schedutil/up_rate_limit_us + echo 0 > /sys/devices/system/cpu/cpufreq/policy7/schedutil/down_rate_limit_us + echo 1612800 > /sys/devices/system/cpu/cpufreq/policy7/schedutil/hispeed_freq + echo 1 > /sys/devices/system/cpu/cpufreq/policy7/schedutil/pl + + # configure input boost settings + echo "0:1324800" > /sys/module/cpu_boost/parameters/input_boost_freq + echo 120 > /sys/module/cpu_boost/parameters/input_boost_ms + + # Disable wsf, beacause we are using efk. + # wsf Range : 1..1000 So set to bare minimum value 1. + echo 1 > /proc/sys/vm/watermark_scale_factor + + echo 0-3 > /dev/cpuset/background/cpus + echo 0-3 > /dev/cpuset/system-background/cpus + + # Enable oom_reaper + if [ -f /sys/module/lowmemorykiller/parameters/oom_reaper ]; then + echo 1 > /sys/module/lowmemorykiller/parameters/oom_reaper + else + echo 1 > /proc/sys/vm/reap_mem_on_sigkill + fi + + # Enable bus-dcvs + for device in /sys/devices/platform/soc + do + for cpubw in $device/*cpu-cpu-llcc-bw/devfreq/*cpu-cpu-llcc-bw + do + echo "bw_hwmon" > $cpubw/governor + echo 40 > $cpubw/polling_interval + echo "2288 4577 7110 9155 12298 14236 15258" > $cpubw/bw_hwmon/mbps_zones + echo 4 > $cpubw/bw_hwmon/sample_ms + echo 50 > $cpubw/bw_hwmon/io_percent + echo 20 > $cpubw/bw_hwmon/hist_memory + echo 10 > $cpubw/bw_hwmon/hyst_length + echo 30 > $cpubw/bw_hwmon/down_thres + echo 0 > $cpubw/bw_hwmon/guard_band_mbps + echo 250 > $cpubw/bw_hwmon/up_scale + echo 1600 > $cpubw/bw_hwmon/idle_mbps + echo 14236 > $cpubw/max_freq + done + + for llccbw in $device/*cpu-llcc-ddr-bw/devfreq/*cpu-llcc-ddr-bw + do + echo "bw_hwmon" > $llccbw/governor + echo 40 > $llccbw/polling_interval + echo "1720 2929 3879 5931 6881 7980" > $llccbw/bw_hwmon/mbps_zones + echo 4 > $llccbw/bw_hwmon/sample_ms + echo 80 > $llccbw/bw_hwmon/io_percent + echo 20 > $llccbw/bw_hwmon/hist_memory + echo 10 > $llccbw/bw_hwmon/hyst_length + echo 30 > $llccbw/bw_hwmon/down_thres + echo 0 > $llccbw/bw_hwmon/guard_band_mbps + echo 250 > $llccbw/bw_hwmon/up_scale + echo 1600 > $llccbw/bw_hwmon/idle_mbps + echo 6881 > $llccbw/max_freq + done + + for npubw in $device/*npu-npu-ddr-bw/devfreq/*npu-npu-ddr-bw + do + echo 1 > /sys/devices/virtual/npu/msm_npu/pwr + echo "bw_hwmon" > $npubw/governor + echo 40 > $npubw/polling_interval + echo "1720 2929 3879 5931 6881 7980" > $npubw/bw_hwmon/mbps_zones + echo 4 > $npubw/bw_hwmon/sample_ms + echo 80 > $npubw/bw_hwmon/io_percent + echo 20 > $npubw/bw_hwmon/hist_memory + echo 6 > $npubw/bw_hwmon/hyst_length + echo 30 > $npubw/bw_hwmon/down_thres + echo 0 > $npubw/bw_hwmon/guard_band_mbps + echo 250 > $npubw/bw_hwmon/up_scale + echo 0 > $npubw/bw_hwmon/idle_mbps + echo 0 > /sys/devices/virtual/npu/msm_npu/pwr + done + + #Enable mem_latency governor for L3, LLCC, and DDR scaling + for memlat in $device/*cpu*-lat/devfreq/*cpu*-lat + do + echo "mem_latency" > $memlat/governor + echo 10 > $memlat/polling_interval + echo 400 > $memlat/mem_latency/ratio_ceil + done + + #Enable userspace governor for L3 cdsp nodes + for l3cdsp in $device/*cdsp-cdsp-l3-lat/devfreq/*cdsp-cdsp-l3-lat + do + echo "cdspl3" > $l3cdsp/governor + done + + #Enable compute governor for gold latfloor + for latfloor in $device/*cpu-ddr-latfloor*/devfreq/*cpu-ddr-latfloor* + do + echo "compute" > $latfloor/governor + echo 10 > $latfloor/polling_interval + done + + #Gold L3 ratio ceil + for l3gold in $device/*cpu4-cpu-l3-lat/devfreq/*cpu4-cpu-l3-lat + do + echo 4000 > $l3gold/mem_latency/ratio_ceil + done + + #Prime L3 ratio ceil + for l3prime in $device/*cpu7-cpu-l3-lat/devfreq/*cpu7-cpu-l3-lat + do + echo 20000 > $l3prime/mem_latency/ratio_ceil + done + done + + if [ -f /sys/devices/soc0/hw_platform ]; then + hw_platform=`cat /sys/devices/soc0/hw_platform` + else + hw_platform=`cat /sys/devices/system/soc/soc0/hw_platform` + fi + + if [ -f /sys/devices/soc0/platform_subtype_id ]; then + platform_subtype_id=`cat /sys/devices/soc0/platform_subtype_id` + fi + + case "$hw_platform" in + "MTP" | "Surf" | "RCM" ) + # Start Host based Touch processing + case "$platform_subtype_id" in + "0" | "1") + start_hbtp + ;; + esac + ;; + "HDK" ) + if [ -d /sys/kernel/hbtpsensor ] ; then + start_hbtp + fi + ;; + esac + + #Setting the min and max supported frequencies + reg_val=`cat /sys/devices/platform/soc/780130.qfprom/qfprom0/nvmem | od -An -t d4` + feature_id=$(((reg_val >> 20) & 0xFF)) + + #Setting the min supported frequencies + echo 1113600 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq + echo 1113600 > /sys/devices/system/cpu/cpu1/cpufreq/scaling_min_freq + echo 1113600 > /sys/devices/system/cpu/cpu2/cpufreq/scaling_min_freq + echo 1113600 > /sys/devices/system/cpu/cpu3/cpufreq/scaling_min_freq + echo 1171200 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_min_freq + echo 1171200 > /sys/devices/system/cpu/cpu5/cpufreq/scaling_min_freq + echo 1171200 > /sys/devices/system/cpu/cpu6/cpufreq/scaling_min_freq + echo 1171200 > /sys/devices/system/cpu/cpu7/cpufreq/scaling_min_freq + #setting min gpu freq to 392 MHz + echo 4 > /sys/class/kgsl/kgsl-3d0/min_pwrlevel + if [ $feature_id == 0 ]; then + echo "feature_id is 0 for SA8185P" + + #setting max gpu freq to 530 MHz + echo 3 > /sys/class/kgsl/kgsl-3d0/max_pwrlevel + echo {class:ddr, res:capped, val: 1804} > /sys/kernel/debug/aop_send_message + elif [ $feature_id == 1 ]; then + echo "feature_id is 1 for SA8195P" + + #setting max gpu freq to 670 MHz + echo 0 > /sys/class/kgsl/kgsl-3d0/max_pwrlevel + echo {class:ddr, res:capped, val: 2092} > /sys/kernel/debug/aop_send_message + else + echo "unknown feature_id value" $feature_id + fi + + echo 0 > /sys/module/lpm_levels/parameters/sleep_disabled + configure_memory_parameters + ;; +esac + +case "$target" in + "kona") + rev=`cat /sys/devices/soc0/revision` + ddr_type=`od -An -tx /proc/device-tree/memory/ddr_device_type` + ddr_type4="07" + ddr_type5="08" + + # Core control parameters for gold + echo 2 > /sys/devices/system/cpu/cpu4/core_ctl/min_cpus + echo 60 > /sys/devices/system/cpu/cpu4/core_ctl/busy_up_thres + echo 30 > /sys/devices/system/cpu/cpu4/core_ctl/busy_down_thres + echo 100 > /sys/devices/system/cpu/cpu4/core_ctl/offline_delay_ms + echo 3 > /sys/devices/system/cpu/cpu4/core_ctl/task_thres + + # Core control parameters for gold+ + echo 0 > /sys/devices/system/cpu/cpu7/core_ctl/min_cpus + echo 60 > /sys/devices/system/cpu/cpu7/core_ctl/busy_up_thres + echo 30 > /sys/devices/system/cpu/cpu7/core_ctl/busy_down_thres + echo 100 > /sys/devices/system/cpu/cpu7/core_ctl/offline_delay_ms + echo 1 > /sys/devices/system/cpu/cpu7/core_ctl/task_thres + # Controls how many more tasks should be eligible to run on gold CPUs + # w.r.t number of gold CPUs available to trigger assist (max number of + # tasks eligible to run on previous cluster minus number of CPUs in + # the previous cluster). + # + # Setting to 1 by default which means there should be at least + # 4 tasks eligible to run on gold cluster (tasks running on gold cores + # plus misfit tasks on silver cores) to trigger assitance from gold+. + echo 1 > /sys/devices/system/cpu/cpu7/core_ctl/nr_prev_assist_thresh + + # Disable Core control on silver + echo 0 > /sys/devices/system/cpu/cpu0/core_ctl/enable + + # Setting b.L scheduler parameters + echo 95 95 > /proc/sys/kernel/sched_upmigrate + echo 85 85 > /proc/sys/kernel/sched_downmigrate + echo 100 > /proc/sys/kernel/sched_group_upmigrate + echo 85 > /proc/sys/kernel/sched_group_downmigrate + echo 1 > /proc/sys/kernel/sched_walt_rotate_big_tasks + echo 400000000 > /proc/sys/kernel/sched_coloc_downmigrate_ns + + # cpuset parameters + echo 0-3 > /dev/cpuset/background/cpus + echo 0-3 > /dev/cpuset/system-background/cpus + + # Turn off scheduler boost at the end + echo 0 > /proc/sys/kernel/sched_boost + + # configure governor settings for silver cluster + echo "schedutil" > /sys/devices/system/cpu/cpufreq/policy0/scaling_governor + echo 0 > /sys/devices/system/cpu/cpufreq/policy0/schedutil/down_rate_limit_us + echo 0 > /sys/devices/system/cpu/cpufreq/policy0/schedutil/up_rate_limit_us + if [ $rev == "2.0" ] || [ $rev == "2.1"]; then + echo 1248000 > /sys/devices/system/cpu/cpufreq/policy0/schedutil/hispeed_freq + else + echo 1228800 > /sys/devices/system/cpu/cpufreq/policy0/schedutil/hispeed_freq + fi + echo 691200 > /sys/devices/system/cpu/cpufreq/policy0/scaling_min_freq + echo 1 > /sys/devices/system/cpu/cpufreq/policy0/schedutil/pl + + # configure input boost settings + echo "0:1324800" > /sys/devices/system/cpu/cpu_boost/input_boost_freq + echo 120 > /sys/devices/system/cpu/cpu_boost/input_boost_ms + + # configure governor settings for gold cluster + echo "schedutil" > /sys/devices/system/cpu/cpufreq/policy4/scaling_governor + echo 0 > /sys/devices/system/cpu/cpufreq/policy4/schedutil/down_rate_limit_us + echo 0 > /sys/devices/system/cpu/cpufreq/policy4/schedutil/up_rate_limit_us + echo 1574400 > /sys/devices/system/cpu/cpufreq/policy4/schedutil/hispeed_freq + echo 1 > /sys/devices/system/cpu/cpufreq/policy4/schedutil/pl + + # configure governor settings for gold+ cluster + echo "schedutil" > /sys/devices/system/cpu/cpufreq/policy7/scaling_governor + echo 0 > /sys/devices/system/cpu/cpufreq/policy7/schedutil/down_rate_limit_us + echo 0 > /sys/devices/system/cpu/cpufreq/policy7/schedutil/up_rate_limit_us + if [ $rev == "2.0" ] || [ $rev == "2.1"]; then + echo 1632000 > /sys/devices/system/cpu/cpufreq/policy7/schedutil/hispeed_freq + else + echo 1612800 > /sys/devices/system/cpu/cpufreq/policy7/schedutil/hispeed_freq + fi + echo 1 > /sys/devices/system/cpu/cpufreq/policy7/schedutil/pl + + # Enable bus-dcvs + for device in /sys/devices/platform/soc + do + for cpubw in $device/*cpu-cpu-llcc-bw/devfreq/*cpu-cpu-llcc-bw + do + echo "bw_hwmon" > $cpubw/governor + echo "4577 7110 9155 12298 14236 15258" > $cpubw/bw_hwmon/mbps_zones + echo 4 > $cpubw/bw_hwmon/sample_ms + echo 50 > $cpubw/bw_hwmon/io_percent + echo 20 > $cpubw/bw_hwmon/hist_memory + echo 10 > $cpubw/bw_hwmon/hyst_length + echo 30 > $cpubw/bw_hwmon/down_thres + echo 0 > $cpubw/bw_hwmon/guard_band_mbps + echo 250 > $cpubw/bw_hwmon/up_scale + echo 1600 > $cpubw/bw_hwmon/idle_mbps + echo 14236 > $cpubw/max_freq + echo 40 > $cpubw/polling_interval + done + + for llccbw in $device/*cpu-llcc-ddr-bw/devfreq/*cpu-llcc-ddr-bw + do + echo "bw_hwmon" > $llccbw/governor + if [ ${ddr_type:4:2} == $ddr_type4 ]; then + echo "1720 2086 2929 3879 5161 5931 6881 7980" > $llccbw/bw_hwmon/mbps_zones + elif [ ${ddr_type:4:2} == $ddr_type5 ]; then + echo "1720 2086 2929 3879 5931 6881 7980 10437" > $llccbw/bw_hwmon/mbps_zones + fi + echo 4 > $llccbw/bw_hwmon/sample_ms + echo 80 > $llccbw/bw_hwmon/io_percent + echo 20 > $llccbw/bw_hwmon/hist_memory + echo 10 > $llccbw/bw_hwmon/hyst_length + echo 30 > $llccbw/bw_hwmon/down_thres + echo 0 > $llccbw/bw_hwmon/guard_band_mbps + echo 250 > $llccbw/bw_hwmon/up_scale + echo 1600 > $llccbw/bw_hwmon/idle_mbps + echo 6881 > $llccbw/max_freq + echo 40 > $llccbw/polling_interval + done + + for npubw in $device/*npu*-ddr-bw/devfreq/*npu*-ddr-bw + do + echo 1 > /sys/devices/virtual/npu/msm_npu/pwr + echo "bw_hwmon" > $npubw/governor + if [ ${ddr_type:4:2} == $ddr_type4 ]; then + echo "1720 2086 2929 3879 5931 6881 7980" > $npubw/bw_hwmon/mbps_zones + elif [ ${ddr_type:4:2} == $ddr_type5 ]; then + echo "1720 2086 2929 3879 5931 6881 7980 10437" > $npubw/bw_hwmon/mbps_zones + fi + echo 4 > $npubw/bw_hwmon/sample_ms + echo 160 > $npubw/bw_hwmon/io_percent + echo 20 > $npubw/bw_hwmon/hist_memory + echo 10 > $npubw/bw_hwmon/hyst_length + echo 30 > $npubw/bw_hwmon/down_thres + echo 0 > $npubw/bw_hwmon/guard_band_mbps + echo 250 > $npubw/bw_hwmon/up_scale + echo 1600 > $npubw/bw_hwmon/idle_mbps + echo 40 > $npubw/polling_interval + echo 0 > /sys/devices/virtual/npu/msm_npu/pwr + done + + for npullccbw in $device/*npu*-llcc-bw/devfreq/*npu*-llcc-bw + do + echo 1 > /sys/devices/virtual/npu/msm_npu/pwr + echo "bw_hwmon" > $npullccbw/governor + echo "4577 7110 9155 12298 14236 15258" > $npullccbw/bw_hwmon/mbps_zones + echo 4 > $npullccbw/bw_hwmon/sample_ms + echo 160 > $npullccbw/bw_hwmon/io_percent + echo 20 > $npullccbw/bw_hwmon/hist_memory + echo 10 > $npullccbw/bw_hwmon/hyst_length + echo 30 > $npullccbw/bw_hwmon/down_thres + echo 0 > $npullccbw/bw_hwmon/guard_band_mbps + echo 250 > $npullccbw/bw_hwmon/up_scale + echo 1600 > $npullccbw/bw_hwmon/idle_mbps + echo 40 > $npullccbw/polling_interval + echo 0 > /sys/devices/virtual/npu/msm_npu/pwr + done + #Enable mem_latency governor for L3 scaling + for memlat in $device/*qcom,devfreq-l3/*cpu*-lat/devfreq/*cpu*-lat + do + echo "mem_latency" > $memlat/governor + echo 8 > $memlat/polling_interval + echo 400 > $memlat/mem_latency/ratio_ceil + done + + #Enable cdspl3 governor for L3 cdsp nodes + for l3cdsp in $device/*qcom,devfreq-l3/*cdsp-l3-lat/devfreq/*cdsp-l3-lat + do + echo "cdspl3" > $l3cdsp/governor + done + + #Enable mem_latency governor for LLCC and DDR scaling + for memlat in $device/*cpu*-lat/devfreq/*cpu*-lat + do + echo "mem_latency" > $memlat/governor + echo 8 > $memlat/polling_interval + echo 400 > $memlat/mem_latency/ratio_ceil + done + + #Enable compute governor for gold latfloor + for latfloor in $device/*cpu-ddr-latfloor*/devfreq/*cpu-ddr-latfloor* + do + echo "compute" > $latfloor/governor + echo 8 > $latfloor/polling_interval + done + + #Gold L3 ratio ceil + for l3gold in $device/*qcom,devfreq-l3/*cpu4-cpu-l3-lat/devfreq/*cpu4-cpu-l3-lat + do + echo 4000 > $l3gold/mem_latency/ratio_ceil + done + + #Prime L3 ratio ceil + for l3prime in $device/*qcom,devfreq-l3/*cpu7-cpu-l3-lat/devfreq/*cpu7-cpu-l3-lat + do + echo 20000 > $l3prime/mem_latency/ratio_ceil + done + + #Enable mem_latency governor for qoslat + for qoslat in $device/*qoslat/devfreq/*qoslat + do + echo "mem_latency" > $qoslat/governor + echo 10 > $qoslat/polling_interval + echo 50 > $qoslat/mem_latency/ratio_ceil + done + done + echo N > /sys/module/lpm_levels/parameters/sleep_disabled + configure_memory_parameters + ;; +esac + +case "$target" in + "msm8998" | "apq8098_latv") + + echo 2 > /sys/devices/system/cpu/cpu4/core_ctl/min_cpus + echo 60 > /sys/devices/system/cpu/cpu4/core_ctl/busy_up_thres + echo 30 > /sys/devices/system/cpu/cpu4/core_ctl/busy_down_thres + echo 100 > /sys/devices/system/cpu/cpu4/core_ctl/offline_delay_ms + echo 1 > /sys/devices/system/cpu/cpu4/core_ctl/is_big_cluster + echo 4 > /sys/devices/system/cpu/cpu4/core_ctl/task_thres + + # Setting b.L scheduler parameters + echo 1 > /proc/sys/kernel/sched_migration_fixup + echo 95 > /proc/sys/kernel/sched_upmigrate + echo 90 > /proc/sys/kernel/sched_downmigrate + echo 100 > /proc/sys/kernel/sched_group_upmigrate + echo 95 > /proc/sys/kernel/sched_group_downmigrate + echo 0 > /proc/sys/kernel/sched_select_prev_cpu_us + echo 400000 > /proc/sys/kernel/sched_freq_inc_notify + echo 400000 > /proc/sys/kernel/sched_freq_dec_notify + echo 5 > /proc/sys/kernel/sched_spill_nr_run + echo 1 > /proc/sys/kernel/sched_restrict_cluster_spill + echo 1 > /proc/sys/kernel/sched_prefer_sync_wakee_to_waker + start iop + + # disable thermal bcl hotplug to switch governor + echo 0 > /sys/module/msm_thermal/core_control/enabled + + # online CPU0 + echo 1 > /sys/devices/system/cpu/cpu0/online + # configure governor settings for little cluster + echo "interactive" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor + echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/use_sched_load + echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/use_migration_notif + echo 19000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/above_hispeed_delay + echo 90 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/go_hispeed_load + echo 20000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/timer_rate + echo 1248000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/hispeed_freq + echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/io_is_busy + echo "83 1804800:95" > /sys/devices/system/cpu/cpu0/cpufreq/interactive/target_loads + echo 19000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/min_sample_time + echo 79000 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/max_freq_hysteresis + echo 518400 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq + echo 1 > /sys/devices/system/cpu/cpu0/cpufreq/interactive/ignore_hispeed_on_notif + # online CPU4 + echo 1 > /sys/devices/system/cpu/cpu4/online + # configure governor settings for big cluster + echo "interactive" > /sys/devices/system/cpu/cpu4/cpufreq/scaling_governor + echo 1 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/use_sched_load + echo 1 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/use_migration_notif + echo 19000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/above_hispeed_delay + echo 90 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/go_hispeed_load + echo 20000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/timer_rate + echo 1574400 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/hispeed_freq + echo 1 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/io_is_busy + echo "83 1939200:90 2016000:95" > /sys/devices/system/cpu/cpu4/cpufreq/interactive/target_loads + echo 19000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/min_sample_time + echo 79000 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/max_freq_hysteresis + echo 806400 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_min_freq + echo 1 > /sys/devices/system/cpu/cpu4/cpufreq/interactive/ignore_hispeed_on_notif + + # re-enable thermal and BCL hotplug + echo 1 > /sys/module/msm_thermal/core_control/enabled + + # Enable input boost configuration + echo "0:1324800" > /sys/module/cpu_boost/parameters/input_boost_freq + echo 40 > /sys/module/cpu_boost/parameters/input_boost_ms + # Enable bus-dcvs + for cpubw in /sys/class/devfreq/*qcom,cpubw* + do + echo "bw_hwmon" > $cpubw/governor + echo 50 > $cpubw/polling_interval + echo 1525 > $cpubw/min_freq + echo "3143 5859 11863 13763" > $cpubw/bw_hwmon/mbps_zones + echo 4 > $cpubw/bw_hwmon/sample_ms + echo 34 > $cpubw/bw_hwmon/io_percent + echo 20 > $cpubw/bw_hwmon/hist_memory + echo 10 > $cpubw/bw_hwmon/hyst_length + echo 0 > $cpubw/bw_hwmon/low_power_ceil_mbps + echo 34 > $cpubw/bw_hwmon/low_power_io_percent + echo 20 > $cpubw/bw_hwmon/low_power_delay + echo 0 > $cpubw/bw_hwmon/guard_band_mbps + echo 250 > $cpubw/bw_hwmon/up_scale + echo 1600 > $cpubw/bw_hwmon/idle_mbps + done + + for memlat in /sys/class/devfreq/*qcom,memlat-cpu* + do + echo "mem_latency" > $memlat/governor + echo 10 > $memlat/polling_interval + echo 400 > $memlat/mem_latency/ratio_ceil + done + echo "cpufreq" > /sys/class/devfreq/soc:qcom,mincpubw/governor + if [ -f /sys/devices/soc0/soc_id ]; then + soc_id=`cat /sys/devices/soc0/soc_id` + else + soc_id=`cat /sys/devices/system/soc/soc0/id` + fi + + if [ -f /sys/devices/soc0/hw_platform ]; then + hw_platform=`cat /sys/devices/soc0/hw_platform` + else + hw_platform=`cat /sys/devices/system/soc/soc0/hw_platform` + fi + + if [ -f /sys/devices/soc0/platform_version ]; then + platform_version=`cat /sys/devices/soc0/platform_version` + platform_major_version=$((10#${platform_version}>>16)) + fi + + if [ -f /sys/devices/soc0/platform_subtype_id ]; then + platform_subtype_id=`cat /sys/devices/soc0/platform_subtype_id` + fi + + case "$soc_id" in + "292") #msm8998 apq8098_latv + # Start Host based Touch processing + case "$hw_platform" in + "QRD") + case "$platform_subtype_id" in + "0") + start_hbtp + ;; + "16") + if [ $platform_major_version -lt 6 ]; then + start_hbtp + fi + ;; + esac + + ;; + esac + ;; + esac + + echo N > /sys/module/lpm_levels/system/pwr/cpu0/ret/idle_enabled + echo N > /sys/module/lpm_levels/system/pwr/cpu1/ret/idle_enabled + echo N > /sys/module/lpm_levels/system/pwr/cpu2/ret/idle_enabled + echo N > /sys/module/lpm_levels/system/pwr/cpu3/ret/idle_enabled + echo N > /sys/module/lpm_levels/system/perf/cpu4/ret/idle_enabled + echo N > /sys/module/lpm_levels/system/perf/cpu5/ret/idle_enabled + echo N > /sys/module/lpm_levels/system/perf/cpu6/ret/idle_enabled + echo N > /sys/module/lpm_levels/system/perf/cpu7/ret/idle_enabled + echo N > /sys/module/lpm_levels/system/pwr/pwr-l2-dynret/idle_enabled + echo N > /sys/module/lpm_levels/system/pwr/pwr-l2-ret/idle_enabled + echo N > /sys/module/lpm_levels/system/perf/perf-l2-dynret/idle_enabled + echo N > /sys/module/lpm_levels/system/perf/perf-l2-ret/idle_enabled + echo N > /sys/module/lpm_levels/parameters/sleep_disabled + + echo 0-3 > /dev/cpuset/background/cpus + echo 0-3 > /dev/cpuset/system-background/cpus + echo 0 > /proc/sys/kernel/sched_boost + + # Set Memory parameters + configure_memory_parameters + ;; +esac + +case "$target" in + "msm8909") + + if [ -f /sys/devices/soc0/soc_id ]; then + soc_id=`cat /sys/devices/soc0/soc_id` + else + soc_id=`cat /sys/devices/system/soc/soc0/id` + fi + + # HMP scheduler settings for 8909 similiar to 8917 + echo 3 > /proc/sys/kernel/sched_window_stats_policy + echo 3 > /proc/sys/kernel/sched_ravg_hist_size + + echo 1 > /proc/sys/kernel/sched_restrict_tasks_spread + + echo 20 > /proc/sys/kernel/sched_small_task + echo 30 > /sys/devices/system/cpu/cpu0/sched_mostly_idle_load + echo 30 > /sys/devices/system/cpu/cpu1/sched_mostly_idle_load + echo 30 > /sys/devices/system/cpu/cpu2/sched_mostly_idle_load + echo 30 > /sys/devices/system/cpu/cpu3/sched_mostly_idle_load + + echo 3 > /sys/devices/system/cpu/cpu0/sched_mostly_idle_nr_run + echo 3 > /sys/devices/system/cpu/cpu1/sched_mostly_idle_nr_run + echo 3 > /sys/devices/system/cpu/cpu2/sched_mostly_idle_nr_run + echo 3 > /sys/devices/system/cpu/cpu3/sched_mostly_idle_nr_run + + echo 0 > /sys/devices/system/cpu/cpu0/sched_prefer_idle + echo 0 > /sys/devices/system/cpu/cpu1/sched_prefer_idle + echo 0 > /sys/devices/system/cpu/cpu2/sched_prefer_idle + echo 0 > /sys/devices/system/cpu/cpu3/sched_prefer_idle + + # Apply governor settings for 8909 + + # disable thermal core_control to update scaling_min_freq + echo 0 > /sys/module/msm_thermal/core_control/enabled + echo 1 > /sys/devices/system/cpu/cpu0/online + echo "interactive" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor + echo 800000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq + # enable thermal core_control now + echo 1 > /sys/module/msm_thermal/core_control/enabled + + echo "29000 1094400:49000" > /sys/devices/system/cpu/cpufreq/interactive/above_hispeed_delay + echo 90 > /sys/devices/system/cpu/cpufreq/interactive/go_hispeed_load + echo 30000 > /sys/devices/system/cpu/cpufreq/interactive/timer_rate + echo 998400 > /sys/devices/system/cpu/cpufreq/interactive/hispeed_freq + echo 0 > /sys/devices/system/cpu/cpufreq/interactive/io_is_busy + echo "1 800000:85 998400:90 1094400:80" > /sys/devices/system/cpu/cpufreq/interactive/target_loads + echo 50000 > /sys/devices/system/cpu/cpufreq/interactive/min_sample_time + echo 50000 > /sys/devices/system/cpu/cpufreq/interactive/sampling_down_factor + + # Bring up all cores online + echo 1 > /sys/devices/system/cpu/cpu1/online + echo 1 > /sys/devices/system/cpu/cpu2/online + echo 1 > /sys/devices/system/cpu/cpu3/online + echo 0 > /sys/module/lpm_levels/parameters/sleep_disabled + + for devfreq_gov in /sys/class/devfreq/*qcom,cpubw*/governor + do + echo "bw_hwmon" > $devfreq_gov + for cpu_bimc_bw_step in /sys/class/devfreq/*qcom,cpubw*/bw_hwmon/bw_step + do + echo 60 > $cpu_bimc_bw_step + done + for cpu_guard_band_mbps in /sys/class/devfreq/*qcom,cpubw*/bw_hwmon/guard_band_mbps + do + echo 30 > $cpu_guard_band_mbps + done + done + + for gpu_bimc_io_percent in /sys/class/devfreq/*qcom,gpubw*/bw_hwmon/io_percent + do + echo 40 > $gpu_bimc_io_percent + done + for gpu_bimc_bw_step in /sys/class/devfreq/*qcom,gpubw*/bw_hwmon/bw_step + do + echo 60 > $gpu_bimc_bw_step + done + for gpu_bimc_guard_band_mbps in /sys/class/devfreq/*qcom,gpubw*/bw_hwmon/guard_band_mbps + do + echo 30 > $gpu_bimc_guard_band_mbps + done + + # Set Memory parameters + configure_memory_parameters + restorecon -R /sys/devices/system/cpu + ;; +esac + +case "$target" in + "msm7627_ffa" | "msm7627_surf" | "msm7627_6x") + echo 25000 > /sys/devices/system/cpu/cpufreq/ondemand/sampling_rate + ;; +esac + +case "$target" in + "qsd8250_surf" | "qsd8250_ffa" | "qsd8650a_st1x") + echo 50000 > /sys/devices/system/cpu/cpufreq/ondemand/sampling_rate + ;; +esac + +case "$target" in + "qsd8650a_st1x") + mount -t debugfs none /sys/kernel/debug + ;; +esac + +chown -h system /sys/devices/system/cpu/cpufreq/ondemand/sampling_rate +chown -h system /sys/devices/system/cpu/cpufreq/ondemand/sampling_down_factor +chown -h system /sys/devices/system/cpu/cpufreq/ondemand/io_is_busy + +emmc_boot=`getprop vendor.boot.emmc` +case "$emmc_boot" + in "true") + chown -h system /sys/devices/platform/rs300000a7.65536/force_sync + chown -h system /sys/devices/platform/rs300000a7.65536/sync_sts + chown -h system /sys/devices/platform/rs300100a7.65536/force_sync + chown -h system /sys/devices/platform/rs300100a7.65536/sync_sts + ;; +esac + +case "$target" in + "msm8960" | "msm8660" | "msm7630_surf") + echo 10 > /sys/devices/platform/msm_sdcc.3/idle_timeout + ;; + "msm7627a") + echo 10 > /sys/devices/platform/msm_sdcc.1/idle_timeout + ;; +esac + +# Post-setup services +case "$target" in + "msm8660" | "msm8960" | "msm8226" | "msm8610" | "mpq8092" ) + start mpdecision + ;; + "msm8974") + start mpdecision + echo 512 > /sys/block/mmcblk0/bdi/read_ahead_kb + ;; + "msm8909" | "msm8916" | "msm8937" | "msm8952" | "msm8953" | "msm8994" | "msm8992" | "msm8996" | "msm8998" | "sdm660" | "apq8098_latv" | "sdm845" | "sdm710" | "qcs605" |"msmnile" | "sdmshrike" |"msmsteppe" | "sm6150" | "kona" | "lito" | "trinket" | "atoll" | "bengal" ) + setprop vendor.post_boot.parsed 1 + ;; + "apq8084") + rm /data/system/perfd/default_values + start mpdecision + echo 512 > /sys/block/mmcblk0/bdi/read_ahead_kb + echo 512 > /sys/block/sda/bdi/read_ahead_kb + echo 512 > /sys/block/sdb/bdi/read_ahead_kb + echo 512 > /sys/block/sdc/bdi/read_ahead_kb + echo 512 > /sys/block/sdd/bdi/read_ahead_kb + echo 512 > /sys/block/sde/bdi/read_ahead_kb + echo 512 > /sys/block/sdf/bdi/read_ahead_kb + echo 512 > /sys/block/sdg/bdi/read_ahead_kb + echo 512 > /sys/block/sdh/bdi/read_ahead_kb + ;; + "msm7627a") + if [ -f /sys/devices/soc0/soc_id ]; then + soc_id=`cat /sys/devices/soc0/soc_id` + else + soc_id=`cat /sys/devices/system/soc/soc0/id` + fi + case "$soc_id" in + "127" | "128" | "129") + start mpdecision + ;; + esac + ;; +esac + +# Enable Power modes and set the CPU Freq Sampling rates +case "$target" in + "msm7627a") + start qosmgrd + echo 1 > /sys/module/pm2/modes/cpu0/standalone_power_collapse/idle_enabled + echo 1 > /sys/module/pm2/modes/cpu1/standalone_power_collapse/idle_enabled + echo 1 > /sys/module/pm2/modes/cpu0/standalone_power_collapse/suspend_enabled + echo 1 > /sys/module/pm2/modes/cpu1/standalone_power_collapse/suspend_enabled + #SuspendPC: + echo 1 > /sys/module/pm2/modes/cpu0/power_collapse/suspend_enabled + #IdlePC: + echo 1 > /sys/module/pm2/modes/cpu0/power_collapse/idle_enabled + echo 25000 > /sys/devices/system/cpu/cpufreq/ondemand/sampling_rate + ;; +esac + +# Change adj level and min_free_kbytes setting for lowmemory killer to kick in +case "$target" in + "msm7627a") + echo 0,1,2,4,9,12 > /sys/module/lowmemorykiller/parameters/adj + echo 5120 > /proc/sys/vm/min_free_kbytes + ;; +esac + +# Install AdrenoTest.apk if not already installed +if [ -f /data/prebuilt/AdrenoTest.apk ]; then + if [ ! -d /data/data/com.qualcomm.adrenotest ]; then + pm install /data/prebuilt/AdrenoTest.apk + fi +fi + +# Install SWE_Browser.apk if not already installed +if [ -f /data/prebuilt/SWE_AndroidBrowser.apk ]; then + if [ ! -d /data/data/com.android.swe.browser ]; then + pm install /data/prebuilt/SWE_AndroidBrowser.apk + fi +fi + +# Change adj level and min_free_kbytes setting for lowmemory killer to kick in +case "$target" in + "msm8660") + start qosmgrd + echo 0,1,2,4,9,12 > /sys/module/lowmemorykiller/parameters/adj + echo 5120 > /proc/sys/vm/min_free_kbytes + ;; +esac + +# Let kernel know our image version/variant/crm_version +if [ -f /sys/devices/soc0/select_image ]; then + image_version="10:" + image_version+=`getprop ro.build.id` + image_version+=":" + image_version+=`getprop ro.build.version.incremental` + image_variant=`getprop ro.product.name` + image_variant+="-" + image_variant+=`getprop ro.build.type` + oem_version=`getprop ro.build.version.codename` + echo 10 > /sys/devices/soc0/select_image + echo $image_version > /sys/devices/soc0/image_version + echo $image_variant > /sys/devices/soc0/image_variant + echo $oem_version > /sys/devices/soc0/image_crm_version +fi + +# Change console log level as per console config property +console_config=`getprop persist.console.silent.config` +case "$console_config" in + "1") + echo "Enable console config to $console_config" + echo 0 > /proc/sys/kernel/printk + ;; + *) + echo "Enable console config to $console_config" + ;; +esac + +# Parse misc partition path and set property +misc_link=$(ls -l /dev/block/bootdevice/by-name/misc) +real_path=${misc_link##*>} +setprop persist.vendor.mmi.misc_dev_path $real_path diff --git a/rootdir/bin/init.qcom.sdio.sh b/rootdir/bin/init.qcom.sdio.sh new file mode 100644 index 0000000..df77745 --- /dev/null +++ b/rootdir/bin/init.qcom.sdio.sh @@ -0,0 +1,78 @@ +#! /vendor/bin/sh + +# Copyright (c) 2010, 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. +# + +# For successful WLAN card detection, WLAN needs SDIO polling turned on. +# This script can be used to turn on/off SDIO polling on appropriate +# SDIO slot on the MSM target (e.g. slot 3 on 7x30 surf). + +arg=$1 +target=`getprop ro.board.platform` + +case "$target" in + "msm7627_6x") + echo 1 > /sys/devices/platform/msm_sdcc.1/polling + echo 1 > /sys/devices/platform/msm_sdcc.2/polling + ;; + + "msm7627_ffa") + echo 1 > /sys/devices/platform/msm_sdcc.2/polling + ;; + + "msm7627_surf") + echo 1 > /sys/devices/platform/msm_sdcc.1/polling + echo 1 > /sys/devices/platform/msm_sdcc.2/polling + ;; + + "msm7627a") + echo 1 > /sys/devices/platform/msm_sdcc.2/polling + ;; + + "msm7630_surf") + echo 1 > /sys/devices/platform/msm_sdcc.3/polling + ;; + + "msm7630_1x") + echo 1 > /sys/devices/platform/msm_sdcc.3/polling + ;; + + "msm7630_fusion") + echo 1 > /sys/devices/platform/msm_sdcc.3/polling + ;; + + "msm8660") + echo 1 > /sys/devices/platform/msm_sdcc.4/polling + ;; + + "msm8660_csfb") + echo 1 > /sys/devices/platform/msm_sdcc.4/polling + ;; +esac + +exit 0 diff --git a/rootdir/bin/init.qcom.sensors.sh b/rootdir/bin/init.qcom.sensors.sh new file mode 100644 index 0000000..daf7de2 --- /dev/null +++ b/rootdir/bin/init.qcom.sensors.sh @@ -0,0 +1,45 @@ +#!/vendor/bin/sh +# Copyright (c) 2015,2018 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. +# + +# +# Function to start sensors for SSC enabled platforms +# +start_sensors() +{ + + chmod -h 664 /persist/sensors/sensors_settings + chown -h -R system.system /persist/sensors + start vendor.sensors.qti + + # Only for SLPI + if [ -c /dev/msm_dsps -o -c /dev/sensors ] ; then + start vendor.sensors + fi +} + +start_sensors diff --git a/rootdir/bin/init.qcom.sh b/rootdir/bin/init.qcom.sh new file mode 100644 index 0000000..9fe153f --- /dev/null +++ b/rootdir/bin/init.qcom.sh @@ -0,0 +1,465 @@ +#! /vendor/bin/sh + +# Copyright (c) 2009-2016, 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. +# + +target=`getprop ro.board.platform` +low_ram=`getprop ro.config.low_ram` +if [ -f /sys/devices/soc0/soc_id ]; then + platformid=`cat /sys/devices/soc0/soc_id` +else + platformid=`cat /sys/devices/system/soc/soc0/id` +fi + +start_battery_monitor() +{ + if ls /sys/bus/spmi/devices/qpnp-bms-*/fcc_data ; then + chown -h root.system /sys/module/pm8921_bms/parameters/* + chown -h root.system /sys/module/qpnp_bms/parameters/* + chown -h root.system /sys/bus/spmi/devices/qpnp-bms-*/fcc_data + chown -h root.system /sys/bus/spmi/devices/qpnp-bms-*/fcc_temp + chown -h root.system /sys/bus/spmi/devices/qpnp-bms-*/fcc_chgcyl + chmod 0660 /sys/module/qpnp_bms/parameters/* + chmod 0660 /sys/module/pm8921_bms/parameters/* + mkdir -p /data/bms + chown -h root.system /data/bms + chmod 0770 /data/bms + start battery_monitor + fi +} + +start_charger_monitor() +{ + if ls /sys/module/qpnp_charger/parameters/charger_monitor; then + chown -h root.system /sys/module/qpnp_charger/parameters/* + chown -h root.system /sys/class/power_supply/battery/input_current_max + chown -h root.system /sys/class/power_supply/battery/input_current_trim + chown -h root.system /sys/class/power_supply/battery/input_current_settled + chown -h root.system /sys/class/power_supply/battery/voltage_min + chmod 0664 /sys/class/power_supply/battery/input_current_max + chmod 0664 /sys/class/power_supply/battery/input_current_trim + chmod 0664 /sys/class/power_supply/battery/input_current_settled + chmod 0664 /sys/class/power_supply/battery/voltage_min + chmod 0664 /sys/module/qpnp_charger/parameters/charger_monitor + start charger_monitor + fi +} + +start_vm_bms() +{ + if [ -e /dev/vm_bms ]; then + chown -h root.system /sys/class/power_supply/bms/current_now + chown -h root.system /sys/class/power_supply/bms/voltage_ocv + chmod 0664 /sys/class/power_supply/bms/current_now + chmod 0664 /sys/class/power_supply/bms/voltage_ocv + start vm_bms + fi +} + +start_msm_irqbalance_8939() +{ + if [ -f /vendor/bin/msm_irqbalance ]; then + case "$platformid" in + "239" | "293" | "294" | "295" | "304" | "338" | "313" | "353" | "354") + start vendor.msm_irqbalance;; + "349" | "350" ) + start vendor.msm_irqbal_lb;; + esac + fi +} + +start_msm_irqbalance_msmnile() +{ + if [ -f /vendor/bin/msm_irqbalance ]; then + start vendor.msm_irqbalance + fi +} + +start_msm_irqbalance_kona() +{ + if [ -f /vendor/bin/msm_irqbalance ]; then + start vendor.msm_irqbalance + fi +} + +start_msm_irqbalance_lito() +{ + if [ -f /vendor/bin/msm_irqbalance ]; then + start vendor.msm_irqbalance + fi +} + +start_msm_irqbalance_atoll() +{ + if [ -f /vendor/bin/msm_irqbalance ]; then + start vendor.msm_irqbalance + fi +} + +start_msm_irqbalance660() +{ + if [ -f /vendor/bin/msm_irqbalance ]; then + case "$platformid" in + "317" | "321" | "324" | "325" | "326" | "336" | "345" | "346" | "360" | "393") + start vendor.msm_irqbalance;; + "318" | "327" | "385") + start vendor.msm_irqbl_sdm630;; + esac + fi +} + +start_msm_irqbalance() +{ + if [ -f /vendor/bin/msm_irqbalance ]; then + start vendor.msm_irqbalance + fi +} + +baseband=`getprop ro.baseband` +echo 1 > /proc/sys/net/ipv6/conf/default/accept_ra_defrtr + +case "$baseband" in + "svlte2a") + start bridgemgrd + ;; +esac + +case "$target" in + "msm7630_surf" | "msm7630_1x" | "msm7630_fusion") + if [ -f /sys/devices/soc0/hw_platform ]; then + value=`cat /sys/devices/soc0/hw_platform` + else + value=`cat /sys/devices/system/soc/soc0/hw_platform` + fi + case "$value" in + "Fluid") + start profiler_daemon;; + esac + ;; + "msm8660" ) + if [ -f /sys/devices/soc0/hw_platform ]; then + platformvalue=`cat /sys/devices/soc0/hw_platform` + else + platformvalue=`cat /sys/devices/system/soc/soc0/hw_platform` + fi + case "$platformvalue" in + "Fluid") + start profiler_daemon;; + esac + ;; + "msm8960") + case "$baseband" in + "msm") + start_battery_monitor;; + esac + + if [ -f /sys/devices/soc0/hw_platform ]; then + platformvalue=`cat /sys/devices/soc0/hw_platform` + else + platformvalue=`cat /sys/devices/system/soc/soc0/hw_platform` + fi + case "$platformvalue" in + "Fluid") + start profiler_daemon;; + "Liquid") + start profiler_daemon;; + esac + ;; + "msm8974") + platformvalue=`cat /sys/devices/soc0/hw_platform` + case "$platformvalue" in + "Fluid") + start profiler_daemon;; + "Liquid") + start profiler_daemon;; + esac + case "$baseband" in + "msm") + start_battery_monitor + ;; + esac + start_charger_monitor + ;; + "sdm660") + if [ -f /sys/devices/soc0/soc_id ]; then + soc_id=`cat /sys/devices/soc0/soc_id` + else + soc_id=`cat /sys/devices/system/soc/soc0/id` + fi + + if [ -f /sys/devices/soc0/hw_platform ]; then + hw_platform=`cat /sys/devices/soc0/hw_platform` + else + hw_platform=`cat /sys/devices/system/soc/soc0/hw_platform` + fi + + case "$soc_id" in + "317" | "324" | "325" | "326" | "318" | "327" ) + case "$hw_platform" in + "Surf") + setprop qemu.hw.mainkeys 0 + ;; + "MTP") + setprop qemu.hw.mainkeys 0 + ;; + "RCM") + setprop qemu.hw.mainkeys 0 + ;; + "QRD") + setprop qemu.hw.mainkeys 0 + ;; + esac + ;; + esac + start_msm_irqbalance660 + ;; + "apq8084") + platformvalue=`cat /sys/devices/soc0/hw_platform` + case "$platformvalue" in + "Fluid") + start profiler_daemon;; + "Liquid") + start profiler_daemon;; + esac + ;; + "msm8226") + start_charger_monitor + ;; + "msm8610") + start_charger_monitor + ;; + "msm8916") + start_vm_bms + start_msm_irqbalance_8939 + if [ -f /sys/devices/soc0/soc_id ]; then + soc_id=`cat /sys/devices/soc0/soc_id` + else + soc_id=`cat /sys/devices/system/soc/soc0/id` + fi + + if [ -f /sys/devices/soc0/platform_subtype_id ]; then + platform_subtype_id=`cat /sys/devices/soc0/platform_subtype_id` + fi + if [ -f /sys/devices/soc0/hw_platform ]; then + hw_platform=`cat /sys/devices/soc0/hw_platform` + fi + case "$soc_id" in + "239") + case "$hw_platform" in + "Surf") + case "$platform_subtype_id" in + "1") + setprop qemu.hw.mainkeys 0 + ;; + esac + ;; + "MTP") + case "$platform_subtype_id" in + "3") + setprop qemu.hw.mainkeys 0 + ;; + esac + ;; + esac + ;; + esac + ;; + "msm8994" | "msm8992" | "msm8998" | "apq8098_latv" | "sdm845" | "sdm710" | "qcs605" | "sm6150" | "trinket" | "bengal") + start_msm_irqbalance + ;; + "msm8996") + if [ -f /sys/devices/soc0/hw_platform ]; then + hw_platform=`cat /sys/devices/soc0/hw_platform` + fi + case "$hw_platform" in + "MTP" | "CDP") + #Loop through the sysfs nodes and determine the correct sysfs to change the permission and ownership. + for count in 0 1 2 3 4 5 6 7 8 9 10 + do + dir="/sys/devices/soc/75ba000.i2c/i2c-12/12-0020/input/input"$count + if [ -d "$dir" ]; then + chmod 0660 $dir/secure_touch_enable + chmod 0440 $dir/secure_touch + chown system.drmrpc $dir/secure_touch_enable + chown system.drmrpc $dir/secure_touch + break + fi + done + ;; + esac + ;; + "msm8909") + start_vm_bms + ;; + "msmnile") + start_msm_irqbalance_msmnile + ;; + "kona") + start_msm_irqbalance_kona + ;; + "lito") + start_msm_irqbalance_lito + ;; + "atoll") + start_msm_irqbalance_atoll + ;; + "msm8937") + start_msm_irqbalance_8939 + if [ -f /sys/devices/soc0/soc_id ]; then + soc_id=`cat /sys/devices/soc0/soc_id` + else + soc_id=`cat /sys/devices/system/soc/soc0/id` + fi + + if [ -f /sys/devices/soc0/hw_platform ]; then + hw_platform=`cat /sys/devices/soc0/hw_platform` + else + hw_platform=`cat /sys/devices/system/soc/soc0/hw_platform` + fi + if [ "$low_ram" != "true" ]; then + case "$soc_id" in + "294" | "295" | "303" | "307" | "308" | "309" | "313" | "320" | "353" | "354" | "363" | "364") + case "$hw_platform" in + "Surf") + setprop qemu.hw.mainkeys 0 + ;; + "MTP") + setprop qemu.hw.mainkeys 0 + ;; + "RCM") + setprop qemu.hw.mainkeys 0 + ;; + "QRD") + setprop qemu.hw.mainkeys 0 + ;; + esac + ;; + esac + fi + ;; + "msm8953") + start_msm_irqbalance_8939 + if [ -f /sys/devices/soc0/soc_id ]; then + soc_id=`cat /sys/devices/soc0/soc_id` + else + soc_id=`cat /sys/devices/system/soc/soc0/id` + fi + + if [ -f /sys/devices/soc0/hw_platform ]; then + hw_platform=`cat /sys/devices/soc0/hw_platform` + else + hw_platform=`cat /sys/devices/system/soc/soc0/hw_platform` + fi + case "$soc_id" in + "293" | "304" | "338" | "351" | "349" | "350" ) + case "$hw_platform" in + "Surf") + setprop qemu.hw.mainkeys 0 + ;; + "MTP") + setprop qemu.hw.mainkeys 0 + ;; + "RCM") + setprop qemu.hw.mainkeys 0 + ;; + "QRD") + setprop qemu.hw.mainkeys 0 + ;; + esac + ;; + esac + ;; + "sdm710") + if [ -f /sys/devices/soc0/soc_id ]; then + soc_id=`cat /sys/devices/soc0/soc_id` + else + soc_id=`cat /sys/devices/system/soc/soc0/id` + fi + + if [ -f /sys/devices/soc0/hw_platform ]; then + hw_platform=`cat /sys/devices/soc0/hw_platform` + else + hw_platform=`cat /sys/devices/system/soc/soc0/hw_platform` + fi + case "$soc_id" in + "336" | "337" | "347" | "360" | "393" ) + case "$hw_platform" in + "Surf") + setprop qemu.hw.mainkeys 0 + ;; + "MTP") + setprop qemu.hw.mainkeys 0 + ;; + "RCM") + setprop qemu.hw.mainkeys 0 + ;; + "QRD") + setprop qemu.hw.mainkeys 0 + ;; + esac + ;; + esac + ;; +esac + +# +# Make modem config folder and copy firmware config to that folder for RIL +# +if [ -f /data/vendor/modem_config/ver_info.txt ]; then + prev_version_info=`cat /data/vendor/modem_config/ver_info.txt` +else + prev_version_info="" +fi + +cur_version_info=`cat /vendor/firmware_mnt/verinfo/ver_info.txt` +if [ ! -f /vendor/firmware_mnt/verinfo/ver_info.txt -o "$prev_version_info" != "$cur_version_info" ]; then + # add W for group recursively before delete + chmod g+w -R /data/vendor/modem_config/* + rm -rf /data/vendor/modem_config/* + # preserve the read only mode for all subdir and files + cp --preserve=m -dr /vendor/firmware_mnt/image/modem_pr/mcfg/configs/* /data/vendor/modem_config + cp --preserve=m -d /vendor/firmware_mnt/verinfo/ver_info.txt /data/vendor/modem_config/ + cp --preserve=m -d /vendor/firmware_mnt/image/modem_pr/mbn_ota.txt /data/vendor/modem_config/ + # the group must be root, otherwise this script could not add "W" for group recursively + chown -hR radio.root /data/vendor/modem_config/* +fi +chmod g-w /data/vendor/modem_config +setprop ro.vendor.ril.mbn_copy_completed 1 + +#check build variant for printk logging +#current default minimum boot-time-default +buildvariant=`getprop ro.build.type` +case "$buildvariant" in + "userdebug" | "eng") + #set default loglevel to KERN_INFO + echo "7 6 1 7" > /proc/sys/kernel/printk + ;; + *) + #set default loglevel to KERN_WARNING + echo "4 4 1 4" > /proc/sys/kernel/printk + ;; +esac diff --git a/rootdir/bin/init.qti.chg_policy.sh b/rootdir/bin/init.qti.chg_policy.sh new file mode 100644 index 0000000..01ff0fd --- /dev/null +++ b/rootdir/bin/init.qti.chg_policy.sh @@ -0,0 +1,29 @@ +#! /vendor/bin/sh + +# +# Copyright (c) 2019 Qualcomm Technologies, Inc. +# All Rights Reserved. +# Confidential and Proprietary - Qualcomm Technologies, Inc. +# +# Copyright (c) 2019 The Linux Foundation. All rights reserved. +# + +export PATH=/vendor/bin + +prefix="/sys/class/" +#List of folder for ownership update +arr=( "power_supply/battery/" "power_supply/usb/" "power_supply/main/" "power_supply/charge_pump_master/" "power_supply/pc_port/" "power_supply/dc/" "power_supply/bms/" "power_supply/parallel/" "usbpd/usbpd0/" "qc-vdm/" "charge_pump/" "qcom-battery/" ) +for i in "${arr[@]}" +do + for j in `ls "$prefix""$i"` + do + #skip directories to prevent possible security issues. + if [[ -d "$prefix""$i""$j" ]] + then + continue + else + chown -h system.system "$prefix""$i""$j" + fi + done +done +setprop persist.vendor.hvdcp_opti.start 1 diff --git a/rootdir/bin/init.qti.fm.sh b/rootdir/bin/init.qti.fm.sh new file mode 100644 index 0000000..9c73685 --- /dev/null +++ b/rootdir/bin/init.qti.fm.sh @@ -0,0 +1,70 @@ +#!/vendor/bin/sh +# Copyright (c) 2019 Qualcomm Technologies, Inc. +# All Rights Reserved. +# Confidential and Proprietary - Qualcomm Technologies, Inc. +# +# Copyright (c) 2009-2011, 2015, 2017 The Linux Foundation. All rights reserved. +# + +setprop vendor.hw.fm.init 0 + +mode=`getprop vendor.hw.fm.mode` +version=199217 + +LOG_TAG="qti-fm" +LOG_NAME="${0}:" + +loge () +{ + /vendor/bin/log -t $LOG_TAG -p e "$LOG_NAME $@" +} + +logi () +{ + /vendor/bin/log -t $LOG_TAG -p i "$LOG_NAME $@" +} + +failed () +{ + loge "$1: exit code $2" + exit $2 +} + +logi "In FM shell Script" +logi "mode: $mode" +logi "Version : $version" + +#$fm_qsoc_patches +# +case $mode in + "normal") + logi "inserting the radio transport module" + echo 1 > /sys/module/radio_iris_transport/parameters/fmsmd_set + /vendor/bin/fm_qsoc_patches $version 0 + ;; + "wa_enable") + /vendor/bin/fm_qsoc_patches $version 1 + ;; + "wa_disable") + /vendor/bin/fm_qsoc_patches $version 2 + ;; + *) + logi "Shell: Default case" + /vendor/bin/fm_qsoc_patches $version 0 + ;; +esac + +exit_code_fm_qsoc_patches=$? + +case $exit_code_fm_qsoc_patches in + 0) + logi "FM QSoC calibration and firmware download succeeded" + ;; + *) + failed "FM QSoC firmware download and/or calibration failed" $exit_code_fm_qsoc_patches + ;; +esac + +setprop vendor.hw.fm.init 1 + +exit 0 diff --git a/rootdir/bin/init.qti.ims.sh b/rootdir/bin/init.qti.ims.sh new file mode 100644 index 0000000..26cd396 --- /dev/null +++ b/rootdir/bin/init.qti.ims.sh @@ -0,0 +1,57 @@ +#! /vendor/bin/sh + +# Copyright (c) 2014, 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. +# +# + +dir0=/data +trigger_file=$dir0/ims_disabled +ims_disabled=`getprop persist.vendor.ims.disabled` +target=`getprop ro.build.product` + +#if [ ! -e $trigger_file ]; then +# for future use in doing conditional debugging +#else +# +#fi +echo "$ims_disabled" +echo "$target" + +if [ "$ims_disabled" = "0" ]; then + echo "ims will be enabled" + setprop vendor.service.qti.ims.enabled 1 + exit +fi + +if [ "$ims_disabled" = "1" ] || [ "$target" = "msm8909_512" ]; then + echo "ims is disabled" + setprop vendor.service.qti.ims.enabled 0 +else + echo "ims is enabled" + setprop vendor.service.qti.ims.enabled 1 +fi diff --git a/rootdir/bin/init.qti.media.sh b/rootdir/bin/init.qti.media.sh new file mode 100644 index 0000000..ef35b71 --- /dev/null +++ b/rootdir/bin/init.qti.media.sh @@ -0,0 +1,58 @@ +#! /vendor/bin/sh +#============================================================================== +# init.qti.media.sh +# +# Copyright (c) 2020, 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. +#=============================================================================== + +if [ -f /sys/devices/soc0/soc_id ]; then + soc_hwid=`cat /sys/devices/soc0/soc_id` 2> /dev/null +else + soc_hwid=`cat /sys/devices/system/soc/soc0/id` 2> /dev/null +fi + +target=`getprop ro.board.platform` +case "$target" in + "bengal") + case "$soc_hwid" in + 441) + setprop vendor.media.target.version 2 + sku_ver=`cat /sys/devices/platform/soc/5a00000.qcom,vidc1/sku_version` 2> /dev/null + if [ $sku_ver -eq 1 ]; then + setprop vendor.media.target.version 3 + fi + ;; + *) + sku_ver=`cat /sys/devices/platform/soc/5a00000.qcom,vidc/sku_version` 2> /dev/null + if [ $sku_ver -eq 1 ]; then + setprop vendor.media.target.version 1 + fi + ;; + esac + ;; +esac diff --git a/rootdir/bin/pstore_annotate.sh b/rootdir/bin/pstore_annotate.sh new file mode 100644 index 0000000..e1e0373 --- /dev/null +++ b/rootdir/bin/pstore_annotate.sh @@ -0,0 +1,33 @@ +#!/vendor/bin/sh +# +# Copyright (c) 2016, Motorola Mobility LLC, All rights reserved. +# +# The purpose of this script is to annotate panic dumps with useful information +# about the context of the event. +# + +export PATH=/vendor/bin:$PATH + +annotate() +{ + VAL=`$2` + [ "$VAL" ] || return + if [ -e /sys/fs/pstore/annotate-ramoops-0 ] ; then + echo "$1: $VAL" > /sys/fs/pstore/annotate-ramoops-0 + fi + + if [ -e /proc/driver/mmi_annotate ] ; then + echo "$1: $VAL" > /proc/driver/mmi_annotate + fi +} + +case $1 in + build*) + annotate "Boot mode" "getprop ro.boot.mode" + annotate "Console" "getprop ro.boot.console" + annotate "Secure hardware" "getprop ro.boot.secure_hardware" + annotate "Hab cid" "getprop ro.boot.hab.cid" + annotate "VB state" "getprop ro.boot.verifiedbootstate" + annotate "Verity mode" "getprop ro.boot.veritymode" + ;; +esac diff --git a/rootdir/bin/qca6234-service.sh b/rootdir/bin/qca6234-service.sh new file mode 100644 index 0000000..0d9923c --- /dev/null +++ b/rootdir/bin/qca6234-service.sh @@ -0,0 +1,87 @@ +#! /vendor/bin/sh + +# Copyright (c) 2010-2014, 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. + +# Check whether device is plugged on the HSIC bus +# Currently HSIC bus will be the first index + +PATH=/sbin:/system/sbin:/system/bin:/system/xbin +export PATH + +deviceprop=`getprop ro.baseband` +boardprop=`getprop ro.board.platform` + +if [ -e /sys/bus/platform/drivers/msm_hsic_host ]; then + if [ ! -L /sys/bus/usb/devices/1-1 ]; then + echo msm_hsic_host > /sys/bus/platform/drivers/msm_hsic_host/unbind + fi + + chown -h system.system /sys/bus/platform/drivers/msm_hsic_host/bind + chown -h system.system /sys/bus/platform/drivers/msm_hsic_host/unbind + chmod -h 0200 /sys/bus/platform/drivers/msm_hsic_host/bind + chmod -h 0200 /sys/bus/platform/drivers/msm_hsic_host/unbind +fi + +wlanchip="" + +if [ "$deviceprop" == "apq" ] && [ "$boardprop" == "msm8974" ]; then + wlanchip="AR6004-USB" +fi + +# force ar6004 is ar6004_wlan.conf existed. +if [ -f /system/etc/firmware/ath6k/AR6004/ar6004_wlan.conf ]; then + wlanchip=`cat /system/etc/firmware/ath6k/AR6004/ar6004_wlan.conf` +fi + +echo "The WLAN Chip ID is $wlanchip" +if [ "$wlanchip" == "AR6004-USB" ]; then + echo msm_hsic_host > /sys/bus/platform/drivers/msm_hsic_host/unbind + setprop wlan.driver.ath 2 + setprop vendor.bluetooth.soc ath3k + setprop wlan.driver.name /system/lib/modules/ath6kl-3.5/ath6kl_usb.ko + setprop wlan.supp.template /system/etc/wifi/wpa_supplicant_ath6kl.conf + btsoc="ath3k" +elif [ "$wlanchip" == "AR6004-SDIO" ]; then + setprop wlan.driver.ath 2 + setprop vendor.bluetooth.soc ath3k + setprop wlan.driver.name /system/lib/modules/ath6kl-3.5/ath6kl_sdio.ko + setprop wlan.supp.template /system/etc/wifi/wpa_supplicant_ath6kl.conf + btsoc="ath3k" + + # Chown polling nodes as needed from UI running on system server + chmod -h 0200 /sys/devices/msm_sdcc.1/polling + chmod -h 0200 /sys/devices/msm_sdcc.2/polling + chmod -h 0200 /sys/devices/msm_sdcc.3/polling + chmod -h 0200 /sys/devices/msm_sdcc.4/polling + + chown -h system.system /sys/devices/msm_sdcc.1/polling + chown -h system.system /sys/devices/msm_sdcc.2/polling + chown -h system.system /sys/devices/msm_sdcc.3/polling + chown -h system.system /sys/devices/msm_sdcc.4/polling +fi + diff --git a/rootdir/etc/fstab.qcom b/rootdir/etc/fstab.qcom new file mode 100644 index 0000000..776e134 --- /dev/null +++ b/rootdir/etc/fstab.qcom @@ -0,0 +1,27 @@ +# Android fstab file. +# The filesystem that contains the filesystem checker binary (typically /system) cannot +# specify MF_CHECK, and must come before any filesystems that do specify MF_CHECK + +#TODO: Add 'check' as fs_mgr_flags with data partition. +# Currently we dont have e2fsck compiled. So fs check would failed. + +# +system /system ext4 ro wait,slotselect,avb=vbmeta,avb_keys=/avb/q-gsi.avbpubkey:/avb/r-gsi.avbpubkey:/avb/s-gsi.avbpubkey,logical,first_stage_mount +vendor /vendor ext4 ro wait,slotselect,avb,logical,first_stage_mount +product /product ext4 ro wait,slotselect,avb,logical,nofail,first_stage_mount +/dev/block/bootdevice/by-name/metadata /metadata ext4 noatime,nosuid,nodev,discard,data=ordered,barrier=1 wait,formattable,first_stage_mount +#/dev/block/bootdevice/by-name/userdata /data f2fs rw,discard,nosuid,nodev,noatime,nodiratime,quota,nobarrier,reserve_root=32768,resgid=1065 latemount,wait,check,formattable,fileencryption=ice:aes-256-cts,quota,reservedsize=128M,checkpoint=fs +/dev/block/bootdevice/by-name/userdata /data f2fs noatime,nosuid,nodev,discard,reserve_root=32768,resgid=1065,fsync_mode=nobarrier latemount,wait,check,formattable,fileencryption=ice,quota,reservedsize=128M,sysfs_path=/sys/devices/platform/soc/4744000.sdhci,checkpoint=fs +/devices/platform/soc/4784000.sdhci/mmc_host* auto auto defaults wait,voldmanaged=sdcard1:auto +/dev/block/bootdevice/by-name/modem /vendor/firmware_mnt ext4 ro,nosuid,nodev,context=u:object_r:firmware_file:s0 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,data=ordered,barrier=1 wait +/dev/block/bootdevice/by-name/prodpersist /mnt/product/persist ext4 noatime,nosuid,nodev,data=ordered,barrier=1 wait,formattable,nofail +/dev/block/bootdevice/by-name/bluetooth /vendor/bt_firmware ext4 ro,nosuid,nodev,context=u:object_r:bt_firmware_file:s0 wait,slotselect +/devices/platform/soc/*.ssusb/*.dwc3/xhci-hcd.*.auto* /storage/usbotg vfat nosuid,nodev wait,voldmanaged=usbotg:auto +/dev/block/bootdevice/by-name/fsg /vendor/fsg ext4 ro,nosuid,nodev,context=u:object_r:fsg_file:s0 wait,slotselect +# Need to have this entry in here even though the mount point itself is no longer needed. +# The update_engine code looks for this entry in order to determine the boot device address +# and fails if it does not find it. +/dev/block/bootdevice/by-name/misc /misc emmc defaults defaults +/dev/block/zram0 none swap defaults zramsize=50% diff --git a/rootdir/etc/init.mmi.charge_only.rc b/rootdir/etc/init.mmi.charge_only.rc new file mode 100644 index 0000000..e654ed9 --- /dev/null +++ b/rootdir/etc/init.mmi.charge_only.rc @@ -0,0 +1,27 @@ +# Wait for the USB init shell script to finish, to prevent enumeration issues +on property:init.svc.vendor.mmi-usb-sh=stopped && property:ro.boot.mode=charger + setprop sys.usb.configfs 1 + setprop sys.usb.config charging + +on moto-charger + chown radio wakelock /sys/power/wake_lock + chmod 0660 /sys/power/wake_lock + chown radio wakelock /sys/power/wake_unlock + chmod 0660 /sys/power/wake_unlock + trigger firmware_mounts_complete + start vendor.charge_only_mode + start vendor.batt_health + start vendor.thermal-com + start system_suspend + + # Enable only CPU core 0 to keep current drain to a minimum + write /sys/devices/system/cpu/cpu0/online 1 + write /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor "interactive" + write /sys/devices/system/cpu/cpu1/online 0 + write /sys/devices/system/cpu/cpu2/online 0 + write /sys/devices/system/cpu/cpu3/online 0 + write /sys/devices/system/cpu/cpu4/online 0 + write /sys/devices/system/cpu/cpu5/online 0 + write /sys/devices/system/cpu/cpu6/online 0 + write /sys/devices/system/cpu/cpu7/online 0 + diff --git a/rootdir/etc/init.mmi.chipset.rc b/rootdir/etc/init.mmi.chipset.rc new file mode 100644 index 0000000..ae30f55 --- /dev/null +++ b/rootdir/etc/init.mmi.chipset.rc @@ -0,0 +1,12 @@ +# Charge only mode configuration +import /vendor/etc/init/hw/init.mmi.charge_only.rc + +on early-init + exec u:r:vendor_modprobe:s0 -- /vendor/bin/modprobe -a -d /vendor/lib/modules exfat + +on property:ro.vendor.build.motfactory=1 + write /sys/class/power_supply/battery/device/factory_image_mode 1 + +on property:ro.build.type=userdebug + setprop persist.vendor.qg.log_level 1 + diff --git a/rootdir/etc/init.mmi.debug.rc b/rootdir/etc/init.mmi.debug.rc new file mode 100644 index 0000000..33a7074 --- /dev/null +++ b/rootdir/etc/init.mmi.debug.rc @@ -0,0 +1,5 @@ +on boot && property:ro.boot.adb_early=1 + start vendor.mmi-usb-sh + +on post-fs && property:ro.boot.force_aplogd_enable=1 + setprop persist.vendor.log.aplogd.enable 1 diff --git a/rootdir/etc/init.mmi.diag.rc b/rootdir/etc/init.mmi.diag.rc new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/rootdir/etc/init.mmi.diag.rc @@ -0,0 +1 @@ + diff --git a/rootdir/etc/init.mmi.diag_mdlog.rc b/rootdir/etc/init.mmi.diag_mdlog.rc new file mode 100644 index 0000000..a50a5ab --- /dev/null +++ b/rootdir/etc/init.mmi.diag_mdlog.rc @@ -0,0 +1,37 @@ + +on post-fs-data + mkdir /data/vendor/diag_mdlog 0770 system log + mkdir /data/vendor/diag_mdlog/logs 0750 log log + +on property:persist.vendor.sys.diag_mdlog.on=1 + start vendor.diag_mdlog + +on property:persist.vendor.sys.diag_mdlog.on=0 + start vendor.safe_stop_mdlog + +on property:vendor.log.diag_mdlog.invld_mode_stop=1 + stop vendor.diag_mdlog + +on property:persist.vendor.radio.usbdiag=1 + setprop persist.vendor.sys.diag_mdlog.on 0 + +service vendor.diag_mdlog /vendor/bin/diag_mdlog-wrap + class late_start + socket mdlog_cmd stream 0660 log diag + user log + group log sdcard_rw sdcard_r media_rw oem_2901 mount + disabled + +service vendor.safe_stop_mdlog /vendor/bin/diag_mdlog-getlogs -s + class late_start + user log + group log sdcard_rw sdcard_r media_rw oem_2901 + oneshot + disabled + +service vendor.mdlog-getlogs /vendor/bin/init.mmi.mdlog-getlogs.sh + class late_start + user log + group log sdcard_rw sdcard_r media_rw oem_2901 + oneshot + disabled diff --git a/rootdir/etc/init.mmi.overlay.rc b/rootdir/etc/init.mmi.overlay.rc new file mode 100644 index 0000000..5c39403 --- /dev/null +++ b/rootdir/etc/init.mmi.overlay.rc @@ -0,0 +1,86 @@ + +on early-init && property:ro.bootmode=mot-factory + insmod /vendor/lib/modules/moto_f_usbnet.ko + +on mmi-priority + # Only high priority MMI DLKMs loaded here + # For instance, sensor_class referenced from several DLKMs + # and needs to load first. Touchscreen might need extra time + # to perform firmware update if necessary + setprop vendor.mmi_init.stage priority + exec u:r:vendor_modprobe:s0 -- /vendor/bin/modprobe -a -d /vendor/lib/modules mmi_annotate mmi_info tzlog_dump watchdog_cpu_ctx mmi_sys_temp + +on fs + # Majority of MMI DLKMs should be in this group + setprop vendor.mmi_init.stage common + insmod /vendor/lib/modules/cci_intf.ko + insmod /vendor/lib/modules/himax_v3_mmi_hx83102d.ko + insmod /vendor/lib/modules/himax_v3_mmi.ko + insmod /vendor/lib/modules/ili9882_mmi.ko + insmod /vendor/lib/modules/chipone_tddi_mmi.ko + insmod /vendor/lib/modules/qpnp_adaptive_charge.ko + insmod /vendor/lib/modules/qpnp-power-on-mmi.ko + exec u:r:vendor_modprobe:s0 -- /vendor/bin/modprobe -a -d /vendor/lib/modules sensor_class abov_sar_mmi_overlay audio_snd_soc_aw882xx + +on post-fs-data + # Load DLKM that can afford being loaded later + setprop vendor.mmi_init.stage late + start vendor.mmi_modules + #wait_for_prop init.svc.vendor.mmi_modules stopped + setprop vendor.mmi_init.stage complete + +on early-boot + # Goodix fingerprint + chown system system /dev/goodix_fp + chmod 0664 /dev/goodix_fp + chmod 0777 /proc/android_touch/debug + mkdir /data/vendor/gf_data 0770 system system + mkdir /mnt/vendor/persist/goodix 0770 system system + +on boot + # change permission for capsensor + chown system system /sys/class/capsense/reset + chown system system /sys/class/capsense/int_state + + # change permission for adaptive charging + chown system system /sys/module/qpnp_adaptive_charge/parameters/upper_limit + chown system system /sys/module/qpnp_adaptive_charge/parameters/lower_limit + # change ownership of display early suspend node + chown root system /sys/devices/platform/soc/soc:qcom,dsi-display-primary/dsi_display_early_power + chmod 0660 /sys/devices/platform/soc/soc:qcom,dsi-display-primary/dsi_display_early_power + +service vendor.mmi_modules /vendor/bin/init.mmi.modules.sh + user root + oneshot + disabled + +service capsense_reset /system/vendor/bin/capsense_reset + class core + user system + group system input + disabled + +on property:sys.boot_completed=1 + start capsense_reset + +service vendor.motpsd /vendor/bin/motpsd + class late_start + user root + +service vendor.vl53l1_daemon /vendor/bin/vl53l1_daemon + class late_start + user root + group root + socket vl53l1_daemon stream 660 root system + +service vendor.mmi-laser-sh /vendor/bin/init.mmi.laser.sh + class core + user root + oneshot + +# Turn on led to indicate device on in factory mode +on property:ro.bootmode=mot-factory + write /sys/class/leds/charging/brightness 255 + +# on property:ro.build.type=userdebug +# start vendor.touchRec diff --git a/rootdir/etc/init.mmi.rc b/rootdir/etc/init.mmi.rc new file mode 100644 index 0000000..c43a5d8 --- /dev/null +++ b/rootdir/etc/init.mmi.rc @@ -0,0 +1,619 @@ +# Chipset-specific file +import /vendor/etc/init/hw/init.mmi.chipset.rc + +# Target-specific file +import /vendor/etc/init/hw/init.mmi.overlay.rc + +# Moto USB configuration +import /vendor/etc/init/hw/init.mmi.usb.rc +# Moto debugging +import /vendor/etc/init/hw/init.mmi.debug.rc + +# Moto diag_mdlog configuration +import /vendor/etc/init/hw/init.mmi.diag_mdlog.rc + +import /vendor/etc/init/hw/init.oem.rc +import /vendor/etc/init/hw/init.mmi.common.rc +import /vendor/etc/init/hw/init.mmi.nonab.rc + +#Moto wlan configuration +import /vendor/etc/init/hw/init.mmi.wlan.rc + +# Moto verified boot extension +import /vendor/etc/init/hw/init.mmi.hab.rc + +# Test commands +import /vendor/etc/init/hw/init.mmi.tcmd.rc + +# Carrier specific script +import /vendor/etc/init/carrier/init.${ro.boot.carrier}.rc +import /vendor/etc/init/carrier/init.default.rc + +on early-boot + write /sys/module/subsystem_restart/parameters/disable_restart_work 0x0 + +on init + chown system log /sys/fs/pstore/console-ramoops-0 + chmod 0440 /sys/fs/pstore/console-ramoops-0 + chown system log /sys/fs/pstore/annotate-ramoops-0 + chmod 0640 /sys/fs/pstore/annotate-ramoops-0 + chown system log /sys/fs/pstore/dmesg-ramoops-0 + chmod 0640 /sys/fs/pstore/dmesg-ramoops-0 + chown system log /proc/driver/mmi_annotate + chmod 0640 /proc/driver/mmi_annotate + +on early-init && property:ro.bootmode=mot-factory + setprop ro.vendor.mot.factory true + +on early-init && property:ro.vendor.build.motfactory=1 + setprop ro.vendor.mot.factory true + +on early-init + # Need to wait for platform path for UTAGs driver to succeed + wait /dev/block/platform/soc/${ro.boot.bootdevice}/by-name/hw + + # initialize ro.vendor.mot.factory with default value when it is not set + setprop ro.vendor.mot.factory false + + # If utags driver is DLKM, script will load it, + # otherwise it has to be already loaded + exec_start vendor.oem-hw-sh + + # Map oem properties, this must follow + # execution of vendor.oem-hw-sh to set + # required properties. + setprop ro.carrier ${ro.boot.carrier} + setprop ro.sf.lcd_density ${ro.boot.lcd_density} + setprop ro.vendor.fsg-id ${ro.boot.fsg-id} + setprop ro.vendor.hw.device ${ro.boot.device} + setprop ro.vendor.hw.hwrev ${ro.boot.hwrev} + setprop ro.vendor.hw.modelno ${ro.boot.modelno} + setprop ro.vendor.hw.revision ${ro.boot.revision} + setprop ro.vendor.hw.nav_keys ${ro.boot.nav_keys} + setprop ro.product.vendor.device ${ro.vendor.product.device} + setprop ro.product.vendor.name ${ro.vendor.product.name} + setprop ro.product.vendor.model ${ro.vendor.product.model} + setprop ro.vendor.boot.cid ${ro.boot.cid} + setprop ro.vendor.boot.powerup_reason ${ro.boot.powerup_reason} + setprop ro.vendor.boot.bl_state ${ro.boot.bl_state} + setprop ro.vendor.boot.serialno ${ro.boot.serialno} + setprop ro.vendor.zygote ${ro.zygote} + + # Make sure ro.boot.product.hardware.sku is set before hwservicemanager startup. + setprop ro.boot.product.hardware.sku ${ro.vendor.product.hardware.sku.variant} + + # Trigger priority stage of MMI init + trigger mmi-priority + +on fs + insmod /vendor/lib/modules/cci_intf.ko + mkdir /mnt/vendor/persist/fps 0770 system system + exec_start vendor.ident-fps-sh + +on fs && property:ro.vendor.hw.modem_version=* + # Super modem detection + exec_start vendor.oem-super-image-detector-sh + +on property:ro.vendor.hw.super_image_failure=yes + setprop sys.powerctl reboot,recovery + +on post-fs && property:ro.vendor.hw.modem_super_image=yes + umount /vendor/firmware_mnt + mount ext4 /dev/block/bootdevice/by-name/modem${ro.boot.slot_suffix} /vendor/super_modem ro nosuid nodev context=u:object_r:firmware_file:s0 + mount ext4 loop@/vendor/super_modem/${ro.vendor.hw.modem_mount_file} /vendor/firmware_mnt ro nosuid nodev context=u:object_r:firmware_file:s0 + +on post-fs && property:ro.vendor.hw.fsg_super_image=yes + umount /vendor/fsg + mount ext4 /dev/block/bootdevice/by-name/fsg${ro.boot.slot_suffix} /vendor/super_fsg ro nosuid nodev context=u:object_r:fsg_file:s0 + mount ext4 loop@/vendor/super_fsg/${ro.vendor.hw.fsg_mount_file} /vendor/fsg ro nosuid nodev context=u:object_r:fsg_file:s0 + +on post-fs + mkdir /mnt/vendor/persist/camera 0755 vendor_tcmd vendor_tcmd + mkdir /mnt/vendor/persist/camera/dualcal 0775 camera vendor_tcmd + mkdir /mnt/vendor/persist/camera/focus 0775 camera vendor_tcmd + mkdir /mnt/vendor/persist/camera/ledcal 0775 camera vendor_tcmd + mkdir /mnt/vendor/persist/camera/mot_ledcal 0775 camera camera + mkdir /mnt/vendor/persist/camera/mot_gyrocal 0775 camera camera + mkdir /mnt/vendor/persist/batt_health 0775 vendor_pwric vendor_pwric + mkdir /mnt/vendor/persist/mdm 0770 radio radio + mkdir /mnt/vendor/persist/factory 0755 vendor_tcmd vendor_tcmd + mkdir /mnt/vendor/persist/factory/audio 0755 vendor_tcmd system + mkdir /mnt/vendor/persist/factory/wlan 0755 vendor_tcmd vendor_tcmd + mkdir /mnt/vendor/persist/factory/regulatory 0755 vendor_tcmd system + mkdir /mnt/vendor/persist/public 0755 vendor_tcmd vendor_tcmd + mkdir /persist/public/atvc 0770 mot_atvc shell + mkdir /mnt/vendor/persist/public/att_dm 0775 radio vendor_tcmd + mkdir /mnt/vendor/persist/public/hiddenmenu 0775 radio vendor_tcmd + mkdir /mnt/vendor/persist/public/hiddenmenu/data 0775 system vendor_tcmd + mkdir /persist/public/locale 0700 system system + mkdir /persist/public/omadm 0700 radio radio + mkdir /persist/public/svcs 0770 system system + mkdir /mnt/vendor/persist/wifi 0755 vendor_tcmd vendor_tcmd + mkdir /mnt/vendor/persist/bt 0755 vendor_tcmd bluetooth + mkdir /persist/public/usc_dm 0775 radio radio + mkdir /persist/sds 0700 vold vold + mkdir /mnt/vendor/persist/rfs/msm/mpss/mot_rfs 0771 vendor_rfs system + mkdir /mnt/vendor/persist/rfs/mdm/mpss/mot_rfs 0771 vendor_rfs system + + # This dir is used to store any OMA(both DM and CP) files in persist partition + # Any app with radio UID or vendor_tcmd GID can read/write/execute files in this dir. + mkdir /mnt/vendor/persist/public/oma 0775 radio vendor_tcmd + + chown vendor_tcmd vendor_tcmd /mnt/vendor/persist/factory/fti + chmod 0664 /mnt/vendor/persist/factory/fti + chown vendor_tcmd vendor_tcmd /mnt/vendor/persist/factory/byte + chmod 0660 /mnt/vendor/persist/factory/byte + chmod 0660 /mnt/vendor/persist/wifi/wlan_mac.bin + chown vendor_tcmd vendor_tcmd /mnt/vendor/persist/bt/bt_bdaddr + chmod 0664 /mnt/vendor/persist/bt/bt_bdaddr + + # Set life_calls and life_timer file permissions + chown radio vendor_tcmd /mnt/vendor/persist/public/hiddenmenu/life_calls + chmod 0775 /mnt/vendor/persist/public/hiddenmenu/life_calls + chown radio vendor_tcmd /mnt/vendor/persist/public/hiddenmenu/life_timer + chmod 0775 /mnt/vendor/persist/public/hiddenmenu/life_timer + + chmod 0711 /mnt/vendor/persist/rfs + chmod 0711 /mnt/vendor/persist/rfs/msm + chmod 0711 /mnt/vendor/persist/rfs/msm/mpss + chmod 0771 /mnt/vendor/persist/rfs/msm/mpss/mot_rfs + chmod 0711 /mnt/vendor/persist/rfs/mdm + chmod 0711 /mnt/vendor/persist/rfs/mdm/mpss + chmod 0771 /mnt/vendor/persist/rfs/mdm/mpss/mot_rfs + + swapon_all /vendor/etc/fstab.qcom + write /proc/sys/vm/page-cluster 0 + + # Set dm-verity property for system partition + verity_update_state + + # Set capsensor calibration sysfs for MDMCTBK + chown radio radio /sys/class/capsense/calibrate + chmod 0660 /sys/class/capsense/calibrate + + # Setting Swappiness + write /proc/sys/vm/swappiness 100 + setprop sys.sysctl.swappiness 100 + +on post-fs-data + setprop ro.vendor.build.fingerprint ${ro.product.vendor.brand}/${ro.product.vendor.name}/${ro.product.vendor.device}:${ro.vendor.build.version.release}/${ro.vendor.build.id}/${ro.vendor.build.version.incremental}:${ro.vendor.build.type}/${ro.vendor.build.tags} + + # Setup folders for security + mkdir /mnt/vendor/persist/security 02770 drmrpc drmrpc + mkdir /data/vendor/dbvc 0750 vendor_tcmd shell + chown drmrpc vendor_tcmd /mnt/vendor/persist/security + + # Setup folder for Pre-Activation Kill Switch app (PAKS) + mkdir /mnt/vendor/persist/paks 02770 vendor_tcmd vendor_tcmd + + # Create directory used by power_supply_logger + mkdir /data/vendor/power_supply_logger 0750 vendor_pwric log + # Create directory power_supply_logger used by memtest and batt_health + mkdir /data/vendor_de/power_supply_logger 0770 root log + chown vendor_pwric vendor_pwric /sys/class/power_supply/battery/cycle_count + chmod 0664 /sys/class/power_supply/battery/cycle_count + chmod 0664 /sys/class/power_supply/battery/charge_control_limit + + # Permissions for Factory Test of Charging Paths + chown vendor_pwric vendor_pwric /sys/class/power_supply/battery/device/force_chg_auto_enable + chown vendor_pwric vendor_pwric /sys/class/power_supply/battery/device/force_chg_ibatt + chown vendor_pwric vendor_pwric /sys/class/power_supply/battery/device/force_chg_itrick + chown vendor_pwric vendor_pwric /sys/class/power_supply/battery/device/force_chg_iusb + chown vendor_pwric vendor_pwric /sys/class/power_supply/battery/device/force_chg_idc + chown vendor_pwric vendor_pwric /sys/class/power_supply/battery/device/force_chg_usb_suspend + chown vendor_pwric vendor_pwric /sys/class/power_supply/battery/device/force_chg_fail_clear + chown vendor_pwric vendor_pwric /sys/class/power_supply/battery/device/force_chg_usb_otg_ctl + + chown vendor_pwric vendor_pwric /sys/class/power_supply/mmi_battery/device/force_chg_auto_enable + chown vendor_pwric vendor_pwric /sys/class/power_supply/mmi_battery/device/force_chg_ibatt + chown vendor_pwric vendor_pwric /sys/class/power_supply/mmi_battery/device/force_chg_itrick + chown vendor_pwric vendor_pwric /sys/class/power_supply/mmi_battery/device/force_chg_iusb + chown vendor_pwric vendor_pwric /sys/class/power_supply/mmi_battery/device/force_chg_idc + chown vendor_pwric vendor_pwric /sys/class/power_supply/mmi_battery/device/force_chg_usb_suspend + chown vendor_pwric vendor_pwric /sys/class/power_supply/mmi_battery/device/force_chg_fail_clear + chown vendor_pwric vendor_pwric /sys/class/power_supply/mmi_battery/device/force_chg_usb_otg_ctl + + chown vendor_pwric vendor_pwric /sys/class/power_supply/wireless/device/chip_id + chown vendor_pwric vendor_pwric /sys/class/power_supply/wireless/current_now + chown vendor_pwric vendor_pwric /sys/class/power_supply/wireless/voltage_now + chown vendor_pwric vendor_pwric /sys/class/power_supply/wireless/voltage_max + chmod 0664 /sys/class/power_supply/wireless/voltage_max + chown vendor_pwric vendor_pwric /sys/kernel/debug/pmic-votable/CHG_DISABLE/force_val + chmod 0664 /sys/kernel/debug/pmic-votable/CHG_DISABLE/force_val + chown vendor_pwric vendor_pwric /sys/kernel/debug/pmic-votable/CHG_DISABLE/force_active + chmod 0664 /sys/kernel/debug/pmic-votable/CHG_DISABLE/force_active + chown vendor_pwric vendor_pwric /sys/kernel/debug/regulator/smb5-vconn/enable + chmod 0664 /sys/kernel/debug/regulator/smb5-vconn/enable + + chown root vendor_mod /sys/module/qpnp_smbcharger_mmi/parameters/eb_rechrg_start_soc + chown root vendor_mod /sys/module/qpnp_smbcharger_mmi/parameters/eb_rechrg_stop_soc + chown root vendor_mod /sys/module/qpnp_smbcharger_mmi/parameters/eb_attach_start_soc + chown root vendor_mod /sys/module/qpnp_smbcharger_mmi/parameters/eb_attach_stop_soc + chown root vendor_mod /sys/module/qpnp_smbcharger_mmi/parameters/eb_low_start_soc + chown root vendor_mod /sys/module/qpnp_smbcharger_mmi/parameters/eb_low_stop_soc + chown root vendor_mod /sys/module/qpnp_smbcharger_mmi/parameters/eb_on_sw + + chmod 0664 /sys/module/qpnp_smbcharger_mmi/parameters/eb_rechrg_start_soc + chmod 0664 /sys/module/qpnp_smbcharger_mmi/parameters/eb_rechrg_stop_soc + chmod 0664 /sys/module/qpnp_smbcharger_mmi/parameters/eb_attach_start_soc + chmod 0664 /sys/module/qpnp_smbcharger_mmi/parameters/eb_attach_stop_soc + chmod 0664 /sys/module/qpnp_smbcharger_mmi/parameters/eb_low_start_soc + chmod 0664 /sys/module/qpnp_smbcharger_mmi/parameters/eb_low_stop_soc + chmod 0664 /sys/module/qpnp_smbcharger_mmi/parameters/eb_on_sw + + chown root vendor_mod /sys/class/power_supply/usb/usb_priority + chmod 0660 /sys/class/power_supply/usb/usb_priority + chown root vendor_mod /sys/module/dwc3_msm/parameters/usb_priority + chmod 0660 /sys/module/dwc3_msm/parameters/usb_priority + chown root vendor_mod /sys/module/usbnet/parameters/force_on + chmod 0666 /sys/module/usbnet/parameters/force_on + + # Setup folder for native to transfer data to NativeDropBoxAgent + mkdir /data/vendor/dropbox-add 0730 log diag + + # Create panic dump dir. + mkdir /data/vendor/dontpanic 0750 root log + + # Create directory for cutback + mkdir /data/vendor/misc/cutback 0770 radio wifi + + # Create bug2go folder + mkdir /data/vendor/bug2go 0770 log log + + # Setup folder for aplogd + mkdir /data/vendor/aplogd 0750 log log + + # Create directory used by chargeonlymode + mkdir /data/vendor/chargeonly 0750 root log + + # Subsystem RAM-dumps + mkdir /data/vendor/ss-ram-dumps 0750 system log + mkdir /data/vendor/ss-ram-dumps/bp-dumps 0750 system log + mkdir /data/vendor/ss-ram-dumps/riva-dumps 0750 system log + + # folder for Blueooth ramdump + mkdir /data/vendor/bt-ram-dumps 0750 bluetooth log + + # folder for ssrdumps + mkdir /data/vendor/ssrdump 0775 root system + + #Folder for hardware properties + mkdir /data/vendor/hardware_revisions 0755 system system + + # Imager tuning data for camera subsystem + mkdir /data/vendor/misc/imager 0771 camera camera + + # NFC vendor data + mkdir /data/vendor/nfc 0770 nfc nfc + + # Required by FingerPrint Cards (FPC) via init so we don't need to give qseecomd or fingerprintd permissions to create them + mkdir /data/vendor/fpc 0700 system system + mkdir /data/vendor/.fps 0770 system vendor_fingerp + + # Required by touchRec for write the touch data + mkdir /data/vendor/touchrec 0770 input input + chown input input /data/vendor/touchrec/bootindex + chown input input /data/vendor/touchrec/lastbootuuid + chown input input /data/vendor/touchrec/touch_data.txt + chmod 0664 /data/vendor/touchrec/touch_data.txt + +on boot + # restore default console_loglevel to KERN_DEBUG + # restore default_message_loglevel to KERN_WARNING + write /proc/sys/kernel/printk "7 4 1 7" + + # MOTO, NJH348, IKHALFMWK-1864, change system max tcp buffer sizes based on RAT changes + # Define system changable TCP buffer max values + chown system system /proc/sys/net/core/rmem_max + chown system system /proc/sys/net/core/wmem_max + + # Change ownership and permission for leds backlight + chmod 0664 /sys/class/leds/lcd-backlight/brightness + chown system system /sys/class/leds/charging/brightness + chmod 0664 /sys/class/leds/charging/brightness + + # change permission of red leds + chown system system /sys/class/leds/red/brightness + chmod 0664 /sys/class/leds/red/brightness + + # Change ownership and permission for vibrator + chown system system /sys/class/timed_output/vibrator/enable + chmod 0660 /sys/class/timed_output/vibrator/enable + chown system system /sys/class/leds/vibrator/state + chmod 0660 /sys/class/leds/vibrator/state + chown system system /sys/class/leds/vibrator/activate + chmod 0660 /sys/class/leds/vibrator/activate + chown system system /sys/class/leds/vibrator/duration + chmod 0660 /sys/class/leds/vibrator/duration + chown system system /sys/class/leds/vibrator/seq + chmod 0660 /sys/class/leds/vibrator/seq + chown system system /sys/class/leds/vibrator/extra + chmod 0660 /sys/class/leds/vibrator/extra + chown root vendor_mod /sys/bus/i2c/devices/2-005a/reduce + + # Change ownership of aov related sysfs entries + chown audio audio /sys/kernel/aov/trigger + chown audio audio /sys/kernel/aov/register + chown audio audio /sys/kernel/aov/event + + # Quiet binder logs + write /sys/module/binder/parameters/debug_mask 0x5 + + # Clear cooldown state + mkdir /mnt/vendor/persist/chargeonly 0770 system system + write /mnt/vendor/persist/chargeonly/cooldown n + chown system system /mnt/vendor/persist/chargeonly/cooldown + chmod 0660 /mnt/vendor/persist/chargeonly/cooldown + +service vendor.mmi-block-perm /vendor/bin/init.mmi.block_perm.sh + class main + user root + oneshot + +service vendor.pstore_annotate /vendor/bin/pstore_annotate.sh build + class main + user system + group log + oneshot + +service vendor.apanic_copy /vendor/bin/apanic_copy.sh + class late_start + group log + oneshot + disabled + +service vendor.bl_logs_copy /vendor/bin/apanic_copy.sh -i + class late_start + group log + oneshot + disabled + +on charger + trigger early-fs + trigger fs + trigger post-fs + trigger late-fs + trigger post-fs-data + trigger moto-charger + class_stop main + class_stop late_start + +service vendor.apanic_annotate /vendor/bin/apanic_save.sh build + class late_start + group log + oneshot + disabled + +service vendor.batt_health /vendor/bin/batt_health + class late_start + user vendor_pwric + group vendor_pwric cache net_admin log + disabled + +on property:sys.boot_completed=1 + start vendor.batt_health + +on property:sys.boot_completed=1 && property:ro.vendor.bootreason=coldboot + start vendor.apanic_copy + +on property:ro.vendor.bootreason=watchdog + stop surfaceflinger + stop zygote + stop zygote_secondary + stop sensors + start vendor.apanic_annotate + +on property:ro.vendor.bootreason=pmic_watchdog + stop surfaceflinger + stop zygote + stop zygote_secondary + stop sensors + start vendor.apanic_annotate + +on property:ro.vendor.bootreason=kernel_panic + stop surfaceflinger + stop zygote + stop zygote_secondary + stop sensors + start vendor.apanic_annotate + +on property:ro.vendor.bootreason=hw_warmreset + stop surfaceflinger + stop zygote + stop zygote_secondary + stop sensors + start vendor.apanic_annotate + +on property:persist.vendor.log.aplogd.enable=1 + start vendor.aplogd + +on property:persist.vendor.log.aplogd.enable=0 + stop vendor.aplogd + +service vendor.aplogd /vendor/bin/aplogd + class late_start + #user log + #group log system sdcard_rw sdcard_r media_rw mount + # The user and group definitions above are intentionally disabled and left + # only as documentation. It actually starts as root and immediately drops + # to log plus those groups after preserving CAP_SYS_ADMIN, which is required + # for kernel logging. + disabled + +# from P onwards aplogd cannot read vold.post_fs_data_done so a new property +# shall be used to allow aplogd checking if FBE has finished /data decryption +on property:vold.post_fs_data_done=* + setprop vendor.vold.post_fs_data_done ${vold.post_fs_data_done} + +service vendor.mmi-boot-sh /vendor/bin/init.mmi.boot.sh + class core + user root + oneshot + +service vendor.mmi-shutdown-sh /vendor/bin/init.mmi.shutdown.sh + class core + user root + oneshot + disabled + +# translate to qcom property name in order to keep the consistent with +# our legacy property +on property:persist.vendor.qc.sub.rdump.on=* + setprop persist.vendor.ssr.enable_ramdumps ${persist.vendor.qc.sub.rdump.on} + +# translate MMI property in order to keep the consistent with QCOM +on property:ro.vendor.hw.dualsim=true + setprop persist.radio.multisim.config dsds + +on property:persist.vendor.qc.sub.rdump.on=* + setprop persist.vendor.ssr.enable_ramdumps ${persist.vendor.qc.sub.rdump.on} + +on property:ro.vendor.hw.dualsim=false + setprop persist.radio.multisim.config "" + +on property:sys.sysctl.swappiness=* + write /proc/sys/vm/swappiness ${sys.sysctl.swappiness} + +service vendor.mbm_spy /vendor/bin/mbm_spy + class late_start + user system + group system + oneshot + disabled + +on property:sys.boot_completed=1 + start vendor.mbm_spy + +service vendor.hw_revs /vendor/bin/hardware_revisions.sh + class late_start + user system + group system + oneshot + +service vendor.mmi-touch-sh /vendor/bin/init.mmi.touch.sh + class core + user root + oneshot + +service vendor.oem-hw-sh /vendor/bin/init.oem.hw.sh + class core + user root + oneshot + disabled + +service vendor.oem-super-image-detector-sh /vendor/bin/init.oem.hw.sh -M + class core + user root + oneshot + disabled + +service vendor.ident-fps-sh /vendor/bin/init.oem.fingerprint.sh + class core + user root + group drmrpc system + oneshot + disabled + +service vendor.hal-fps-sh /vendor/bin/init.oem.fingerprint2.sh + class late_start + user root + group system + oneshot + +service fpc_ident /vendor/bin/hw/fpc_ident + class late_start + user system + group system + oneshot + disabled + +service egis_ident /vendor/bin/hw/egis_ident + class late_start + user system + group system + oneshot + disabled + +service vendor.touch-dead-sh /vendor/bin/init.oem.hw.sh -f + class main + user root + oneshot + disabled + +service vendor.touch-ready-sh /vendor/bin/init.oem.hw.sh -r + class main + user root + oneshot + disabled + +service vendor.oem-hw-config-sh /vendor/bin/init.oem.hw.sh -p + class main + user root + oneshot + disabled + +on property:vendor.hw.touch.status="dead" + start vendor.touch-dead-sh + +on property:vendor.hw.touch.status="ready" + start vendor.touch-ready-sh + +service vendor.charge_only_mode /vendor/bin/charge_only_mode + user root + group graphics system input + disabled + +service vendor.thermal-com /vendor/bin/thermal-engine --minimode + class main + user root + group root system + socket thermal-send-client stream 0666 system oem_2907 + socket thermal-recv-client stream 0660 system oem_2907 + socket thermal-recv-passive-client stream 0666 system oem_2907 + socket thermal-send-rule stream 0660 system oem_2907 + disabled + +service vendor.adspd /vendor/bin/adspd + class main + socket adspdsock stream 0660 system audio + user audio + group audio input diag + +# bugreport is triggered by holding down volume down, volume up and power +service bugreport /system/bin/dumpstate -d -p -B -z \ + -o /data/user_de/0/com.android.shell/files/bugreports/bugreport + class main + disabled + oneshot + keycodes 114 115 116 + +# touchRec +service vendor.touchRec /vendor/bin/touchRec + class late_start + user input + group input + disabled + +on property:vendor.wifi.tethering=false + write /sys/module/wlan/parameters/sar_mhs disabled + +on property:vendor.wifi.tethering=true + write /sys/module/wlan/parameters/sar_mhs enabled + +# Override the AOSP sensor HAL service definition to add input group access +service vendor.sensors-hal-1-0 /vendor/bin/hw/android.hardware.sensors@1.0-service + class hal + user system + group system input uhid wakelock + capabilities BLOCK_SUSPEND + rlimit rtprio 10 10 + +#Override fwpath string when wpa_supplicant server was killed +on property:vendor.wifi.station=true + write /sys/module/wlan/parameters/sar_sta enabled + +on property:vendor.wifi.station=false + write /sys/module/wlan/parameters/sar_sta disabled + +on shutdown + exec_start vendor.mmi-shutdown-sh diff --git a/rootdir/etc/init.mmi.tcmd.rc b/rootdir/etc/init.mmi.tcmd.rc new file mode 100644 index 0000000..c4833c2 --- /dev/null +++ b/rootdir/etc/init.mmi.tcmd.rc @@ -0,0 +1,159 @@ +on early-boot && property:ro.vendor.build.motfactory=1 + write /proc/sys/kernel/poweroff_cmd "/system/bin/reboot -p" + +on post-fs && property:ro.vendor.build.motfactory=1 + write /sys/class/power_supply/battery/device/factory_image_mode 1 + +on post-fs + # change permission of utag for tcmd daemon + chown root system /proc/config + chown root system /proc/config/all + chown root system /proc/config/all/new + chown root system /proc/config/all/lock + chown root system /proc/config/all/.delete + chown root system /proc/config/barcode/ascii + chown root system /proc/config/battid/ascii + chown root system /proc/config/bootmode/ascii + chown root system /proc/config/bt_mac/ascii + chown root system /proc/config/carrier_sku/ascii + chown root system /proc/config/date/ascii + chown root system /proc/config/fti/ascii + chown root system /proc/config/imei/ascii + chown root system /proc/config/sku/ascii + chown root system /proc/config/reload + chown root system /proc/config/wifi_mac/ascii + chown root system /proc/hw + chown root system /proc/hw/all + chown root system /proc/hw/all/new + chown root system /proc/hw/all/lock + chown root system /proc/hw/all/.delete + chown root system /proc/hw/dualsim/ascii + chown root system /proc/hw/frontcolor/ascii + chown root system /proc/hw/reload + + # change permission of backlight brightness for tcmd daemon + chmod 664 /sys/class/backlight/panel0-backlight/brightness + +service vendor.tcmd /vendor/bin/tcmd + class core +# Total number of supplementary groups below is 32 now. Limit defined in service.h is 64. +# Please update the current number if you add more groups. + group vendor_tcmd radio vendor_pwric input system log camera graphics sdcard_r sdcard_rw audio inet bluetooth wifi compass net_bt_admin drmrpc mount net_raw net_admin media shell nfc oem_2901 vendor_dbvc cache media_rw vendor_dtv vendor_mod + socket local_tcmd stream 0660 vendor_tcmd vendor_tcmd + socket batch_socket stream 0600 vendor_tcmd vendor_tcmd + oneshot + disabled + +service vendor.tcmdhelp /vendor/bin/tcmdhelp + class main + user root + group system oem_2901 root vendor_pwric + socket tcmdhelp stream 0600 vendor_tcmd vendor_tcmd + oneshot + disabled + +service vendor.ftmipcd /vendor/bin/ftmipcd + user radio + group radio net_raw inet oem_2901 + capabilities NET_RAW + disabled + oneshot + +service tcmd_system /product/bin/tcmd_system + class main + user root + group vendor_prod_persist + oneshot + disabled + +on property:ro.bootmode=factory + start vendor.ftmipcd + +on property:ro.bootmode=mot-factory + start vendor.ftmipcd + +# Power up to suspend +on property:vendor.tcmd.suspend=1 + stop surfaceflinger + stop zygote + stop sensors + +# Normal to suspend +on property:vendor.tcmd.suspend=2 + stop surfaceflinger + stop zygote + stop sensors + stop qcamerasvr + stop vendor.hwcomposer-2-1 + stop vendor.hwcomposer-2-2 + stop vendor.hwcomposer-2-3 + stop vendor.qti.hardware.display.composer + +on property:vendor.tcmd.suspend=3 + start vendor.qti.hardware.display.composer + start vendor.hwcomposer-2-3 + start vendor.hwcomposer-2-2 + start vendor.hwcomposer-2-1 + start qcamerasvr + start sensors + start zygote + start surfaceflinger + +on property:vendor.tcmd.start_tcmdhelp=1 + start vendor.tcmdhelp + +on property:vendor.tcmd.start_ftmdaemon=1 + start vendor.mot.ftmd + +on property:vendor.tcmd.start_wdsdaemon=1 + start vendor.wdsdaemon + +on property:vendor.tcmd.start_wdsdaemon=0 + stop vendor.wdsdaemon + +service vendor.wdsdaemon /vendor/bin/wdsdaemon -us + class late_start + user root + group vendor_tcmd bluetooth net_bt_admin misc oem_2901 net_bt + disabled + oneshot + +on property:vendor.tcmd.start_fm_wdsdaemon=1 + start vendor.fm_wdsdaemon + +on property:vendor.tcmd.start_fm_wdsdaemon=0 + stop vendor.fm_wdsdaemon + +service vendor.fm_wdsdaemon /vendor/bin/wdsdaemon -ms + class late_start + user root + group vendor_tcmd + disabled + oneshot + +service vendor.mot.ftmd /vendor/bin/ftmdaemon + class late_start + user root + group oem_2901 bluetooth net_bt_admin misc diag net_bt + disabled + oneshot + +on property:vendor.tcmd_system.action=* + setprop sys.tcmd_system.action ${vendor.tcmd_system.action} + start tcmd_system + +on property:sys.bootbroadcast_completed=* + setprop vendor.sys.bootbroadcast_completed ${sys.bootbroadcast_completed} + +on property:vendor.boot_completed=1 + setprop ro.vendor.boot.hwrev ${ro.boot.hwrev} + setprop ro.vendor.boot.secure_hardware ${ro.boot.secure_hardware} + setprop ro.vendor.carrier ${ro.carrier} + setprop ro.vendor.build.version.sdk ${ro.build.version.sdk} + setprop ro.vendor.sys.adb_reset_protected ${ro.sys.adb_reset_protected} + setprop ro.vendor.telephony.default_network ${ro.telephony.default_network} + setprop ro.vendor.boot.radio ${ro.boot.radio} + setprop ro.vendor.build.description ${ro.build.description} + setprop ro.vendor.blan.interface ${ro.blan.interface} + setprop vendor.init.svc.adbd ${init.svc.adbd} + setprop persist.vendor.sys.motdpm.allow_adb ${persist.sys.motdpm.allow_adb} diff --git a/rootdir/etc/init.mmi.usb.rc b/rootdir/etc/init.mmi.usb.rc new file mode 100644 index 0000000..778934e --- /dev/null +++ b/rootdir/etc/init.mmi.usb.rc @@ -0,0 +1,568 @@ +# Copyright (c) 2011-2016, 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 init + mkdir /dev/usb-ffs 0770 shell shell + mkdir /dev/usb-ffs/adb 0770 shell shell + mount configfs none /config + mkdir /config/usb_gadget/g1 0770 shell shell + mkdir /config/usb_gadget/g1/strings/0x409 0770 shell shell + write /config/usb_gadget/g1/bcdUSB 0x0200 + write /config/usb_gadget/g1/os_desc/use 1 + mkdir /config/usb_gadget/g1/functions/usbnet.usb0 + mkdir /config/usb_gadget/g1/functions/mass_storage.0 + mkdir /config/usb_gadget/g1/functions/mtp.gs0 + mkdir /config/usb_gadget/g1/functions/ptp.gs1 + mkdir /config/usb_gadget/g1/functions/accessory.gs2 + mkdir /config/usb_gadget/g1/functions/audio_source.gs3 + mkdir /config/usb_gadget/g1/functions/midi.gs5 + mkdir /config/usb_gadget/g1/functions/ffs.adb + mkdir /config/usb_gadget/g1/functions/diag.diag + mkdir /config/usb_gadget/g1/functions/cser.dun.0 + mkdir /config/usb_gadget/g1/functions/cser.nmea.1 + mkdir /config/usb_gadget/g1/functions/gsi.rmnet + mkdir /config/usb_gadget/g1/functions/gsi.rndis + mkdir /config/usb_gadget/g1/functions/gsi.dpl + mkdir /config/usb_gadget/g1/functions/qdss.qdss + mkdir /config/usb_gadget/g1/functions/ncm.0 + mkdir /config/usb_gadget/g1/functions/rmnet_bam.rmnet + mkdir /config/usb_gadget/g1/functions/rndis_bam.rndis + mkdir /config/usb_gadget/g1/functions/diag.diag_mdm + mkdir /config/usb_gadget/g1/functions/diag.diag_mdm2 + mkdir /config/usb_gadget/g1/functions/cser.dun.2 + mkdir /config/usb_gadget/g1/functions/qdss.qdss_mdm + mkdir /config/usb_gadget/g1/functions/rndis.rndis + mkdir /config/usb_gadget/g1/functions/rmnet_bam.dpl + mkdir /config/usb_gadget/g1/functions/rmnet_bam.rmnet_bam_dmux + mkdir /config/usb_gadget/g1/functions/rmnet_bam.dpl_bam_dmux + mkdir /config/usb_gadget/g1/functions/ccid.ccid + mkdir /config/usb_gadget/g1/functions/uac2.0 + mkdir /config/usb_gadget/g1/configs/b.1 0770 shell shell + mkdir /config/usb_gadget/g1/configs/b.1/strings/0x409 0770 shell shell + write /config/usb_gadget/g1/os_desc/b_vendor_code 0x1 + write /config/usb_gadget/g1/os_desc/qw_sign "MSFT100" + symlink /config/usb_gadget/g1/configs/b.1 /config/usb_gadget/g1/os_desc/b.1 + mount functionfs adb /dev/usb-ffs/adb uid=2000,gid=2000 + chown system system /sys/class/android_usb/android0/secure + chmod 0660 /sys/class/android_usb/android0/secure + +# This is a good place to write these, since system props would be loaded. +on firmware_mounts_complete + 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} + +on load_persist_props_action + setprop vendor.usb.config ${sys.usb.config} + setprop persist.vendor.mot.usb.config ${persist.sys.usb.config:-" "} + setprop persist.sys.usb.config " " + setprop persist.vendor.usb.config ${persist.sys.usb.config} + +on property:ro.boot.console=ttyGS0 && property:sys.usb.configfs=1 + write /config/usb_gadget/g1/UDC "none" + mkdir /config/usb_gadget/g1/functions/acm.0 + # "f0" is used here so that we won't take anything from f1 ~ f9 + symlink /config/usb_gadget/g1/functions/acm.0 /config/usb_gadget/g1/configs/b.1/f0 + write /config/usb_gadget/g1/UDC ${sys.usb.controller} + +on property:ro.vendor.bootreason=watchdog + setprop persist.vendor.usb.config ${persist.vendor.mot.usb.config} + setprop persist.sys.usb.config ${persist.vendor.mot.usb.config} + +on property:ro.vendor.bootreason=pmic_watchdog + setprop persist.vendor.usb.config ${persist.vendor.mot.usb.config} + setprop persist.sys.usb.config ${persist.vendor.mot.usb.config} + +on property:ro.vendor.bootreason=kernel_panic + setprop persist.vendor.usb.config ${persist.vendor.mot.usb.config} + setprop persist.sys.usb.config ${persist.vendor.mot.usb.config} + +on property:sys.boot_completed=* + setprop vendor.boot_completed ${sys.boot_completed} + +on property:persist.vendor.usb.config=* + setprop persist.sys.usb.config ${persist.vendor.usb.config} + +on property:vendor.usb.config=* + setprop sys.usb.config ${vendor.usb.config} + +on property:vendor.usb.controller=* + setprop sys.usb.controller ${vendor.usb.controller} + +on property:persist.vendor.usb.qcom.config=* + setprop persist.sys.usb.qcom.config ${persist.vendor.usb.qcom.config} + setprop persist.sys.usb.qcom.func ${persist.vendor.usb.qcom.config} + +on property:persist.vendor.usb.bp-tools.config=* + setprop persist.sys.usb.bp-tools.config ${persist.vendor.usb.bp-tools.config} + setprop persist.sys.usb.bp-tools.func ${persist.vendor.usb.bp-tools.config} + +on property:persist.vendor.usb.mot-factory.config=* + setprop persist.sys.usb.mot-factory.config ${persist.vendor.usb.mot-factory.config} + setprop persist.sys.usb.mot-factory.func ${persist.vendor.usb.mot-factory.config} + +service vendor.mmi-usb-sh /vendor/bin/init.mmi.usb.sh + class late_start + user root + group system + oneshot + +on property:vendor.tcmd.ctrl_adb=1 + setprop sys.usb.config none + setprop sys.usb.config usbnet,adb + +on property:vendor.tcmd.ctrl_adb=0 + setprop sys.usb.config none + setprop sys.usb.config usbnet + +### Factory Compositions +on property:sys.usb.config=usbnet,adb && property:sys.usb.configfs=1 + start adbd + start vendor.tcmd + +on property:sys.usb.ffs.ready=1 && property:sys.usb.config=usbnet,adb && property:sys.usb.configfs=1 + write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "Motorola Test Command" + rm /config/usb_gadget/g1/configs/b.1/f1 + rm /config/usb_gadget/g1/configs/b.1/f2 + rm /config/usb_gadget/g1/configs/b.1/f3 + rm /config/usb_gadget/g1/configs/b.1/f4 + rm /config/usb_gadget/g1/configs/b.1/f5 + write /config/usb_gadget/g1/idVendor 0x22b8 + write /config/usb_gadget/g1/idProduct 0x2e2d + write /config/usb_gadget/g1/os_desc/use 1 + symlink /config/usb_gadget/g1/functions/usbnet.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 ${sys.usb.controller} + setprop sys.usb.state ${sys.usb.config} + +on property:sys.usb.config=usbnet && property:sys.usb.configfs=1 + start vendor.tcmd + write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "Motorola Test Command without ADB" + rm /config/usb_gadget/g1/configs/b.1/f1 + rm /config/usb_gadget/g1/configs/b.1/f2 + rm /config/usb_gadget/g1/configs/b.1/f3 + rm /config/usb_gadget/g1/configs/b.1/f4 + rm /config/usb_gadget/g1/configs/b.1/f5 + write /config/usb_gadget/g1/idVendor 0x22b8 + write /config/usb_gadget/g1/idProduct 0x2e2c + write /config/usb_gadget/g1/os_desc/use 0 + symlink /config/usb_gadget/g1/functions/usbnet.usb0 /config/usb_gadget/g1/configs/b.1/f1 + write /config/usb_gadget/g1/UDC ${sys.usb.controller} + setprop sys.usb.state ${sys.usb.config} + +### Charging Compositions +on property:sys.usb.config=charging && property:sys.usb.configfs=1 + write /config/usb_gadget/g1/strings/0x409/serialnumber ${ro.serialno} + write /config/usb_gadget/g1/UDC "none" + write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "Motorola Charge Only" + rm /config/usb_gadget/g1/configs/b.1/f1 + rm /config/usb_gadget/g1/configs/b.1/f2 + rm /config/usb_gadget/g1/configs/b.1/f3 + rm /config/usb_gadget/g1/configs/b.1/f4 + rm /config/usb_gadget/g1/configs/b.1/f5 + write /config/usb_gadget/g1/idVendor 0x22b8 + write /config/usb_gadget/g1/idProduct 0x2eb7 + symlink /config/usb_gadget/g1/functions/mass_storage.0 /config/usb_gadget/g1/configs/b.1/f1 + write /config/usb_gadget/g1/UDC ${sys.usb.controller} + setprop sys.usb.state ${sys.usb.config} + +### Android Compositions +on property:sys.usb.config=mtp && property:sys.usb.configfs=1 + write /config/usb_gadget/g1/functions/mtp.gs0/os_desc/interface.MTP/compatible_id "MTP" + write /config/usb_gadget/g1/idProduct 0x2e82 + write /config/usb_gadget/g1/idVendor 0x22b8 + +on property:sys.usb.config=mtp,adb && property:sys.usb.configfs=1 + start vendor.tcmd + write /config/usb_gadget/g1/functions/mtp.gs0/os_desc/interface.MTP/compatible_id "MTP" + write /config/usb_gadget/g1/idProduct 0x2e76 + write /config/usb_gadget/g1/idVendor 0x22b8 + +on property:sys.usb.config=mtp,cdrom && property:sys.usb.configfs=1 + write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "mtp, cdrom" + rm /config/usb_gadget/g1/configs/b.1/f1 + rm /config/usb_gadget/g1/configs/b.1/f2 + rm /config/usb_gadget/g1/configs/b.1/f3 + rm /config/usb_gadget/g1/configs/b.1/f4 + rm /config/usb_gadget/g1/configs/b.1/f5 + + write /config/usb_gadget/g1/functions/mass_storage.0/lun.0/file "" + write /config/usb_gadget/g1/idProduct 0x2e61 + write /config/usb_gadget/g1/idVendor 0x22b8 + write /config/usb_gadget/g1/functions/mass_storage.0/lun.0/cdrom 1 + write /config/usb_gadget/g1/functions/mass_storage.0/lun.0/file "/product/etc/cdrom" + symlink /config/usb_gadget/g1/functions/mtp.gs0 /config/usb_gadget/g1/configs/b.1/f1 + symlink /config/usb_gadget/g1/functions/mass_storage.0 /config/usb_gadget/g1/configs/b.1/f2 + write /config/usb_gadget/g1/UDC ${sys.usb.controller} + setprop sys.usb.state ${sys.usb.config} + +on property:sys.usb.config=mtp,cdrom,adb && property:sys.usb.configfs=1 + write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "mtp, cdrom" + rm /config/usb_gadget/g1/configs/b.1/f1 + rm /config/usb_gadget/g1/configs/b.1/f2 + rm /config/usb_gadget/g1/configs/b.1/f3 + rm /config/usb_gadget/g1/configs/b.1/f4 + rm /config/usb_gadget/g1/configs/b.1/f5 + + write /config/usb_gadget/g1/functions/mass_storage.0/lun.0/file "" + write /config/usb_gadget/g1/idProduct 0x2e61 + write /config/usb_gadget/g1/idVendor 0x22b8 + write /config/usb_gadget/g1/functions/mass_storage.0/lun.0/cdrom 1 + write /config/usb_gadget/g1/functions/mass_storage.0/lun.0/file "/product/etc/cdrom" + symlink /config/usb_gadget/g1/functions/mtp.gs0 /config/usb_gadget/g1/configs/b.1/f1 + symlink /config/usb_gadget/g1/functions/mass_storage.0 /config/usb_gadget/g1/configs/b.1/f2 + write /config/usb_gadget/g1/UDC ${sys.usb.controller} + setprop sys.usb.state ${sys.usb.config} + + +on property:sys.usb.config=rndis && property:sys.usb.configfs=1 + setprop sys.usb.config rndis,${persist.vendor.usb.config.extra} + +on property:sys.usb.config=rndis,none && property:sys.usb.configfs=1 + write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "rndis" + rm /config/usb_gadget/g1/configs/b.1/f1 + rm /config/usb_gadget/g1/configs/b.1/f2 + rm /config/usb_gadget/g1/configs/b.1/f3 + rm /config/usb_gadget/g1/configs/b.1/f4 + rm /config/usb_gadget/g1/configs/b.1/f5 + write /config/usb_gadget/g1/idVendor 0x22b8 + write /config/usb_gadget/g1/idProduct 0x2e24 + symlink /config/usb_gadget/g1/functions/${vendor.usb.rndis.func.name}.rndis /config/usb_gadget/g1/configs/b.1/f1 + write /config/usb_gadget/g1/configs/b.1/f1/wceis 1 + write /config/usb_gadget/g1/UDC ${sys.usb.controller} + setprop sys.usb.state rndis + + +on property:sys.usb.config=rndis,adb && property:sys.usb.configfs=1 + setprop sys.usb.config rndis,${persist.vendor.usb.config.extra},adb + +on property:sys.usb.config=rndis,none,adb && property:sys.usb.configfs=1 + start adbd + +on property:sys.usb.ffs.ready=1 && property:sys.usb.config=rndis,none,adb && property:sys.usb.configfs=1 + write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "rndis_adb" + rm /config/usb_gadget/g1/configs/b.1/f1 + rm /config/usb_gadget/g1/configs/b.1/f2 + rm /config/usb_gadget/g1/configs/b.1/f3 + rm /config/usb_gadget/g1/configs/b.1/f4 + rm /config/usb_gadget/g1/configs/b.1/f5 + write /config/usb_gadget/g1/idVendor 0x22b8 + write /config/usb_gadget/g1/idProduct 0x2e25 + symlink /config/usb_gadget/g1/functions/${vendor.usb.rndis.func.name}.rndis /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/configs/b.1/f1/wceis 1 + write /config/usb_gadget/g1/UDC ${sys.usb.controller} + setprop sys.usb.state rndis,adb + +on property:sys.usb.config=ptp && property:sys.usb.configfs=1 + write /config/usb_gadget/g1/functions/ptp.gs1/os_desc/interface.MTP/compatible_id "PTP" + write /config/usb_gadget/g1/idProduct 0x2e83 + write /config/usb_gadget/g1/idVendor 0x22b8 + +on property:sys.usb.config=ptp,adb && property:sys.usb.configfs=1 + write /config/usb_gadget/g1/functions/ptp.gs1/os_desc/interface.MTP/compatible_id "PTP" + write /config/usb_gadget/g1/idProduct 0x2e84 + write /config/usb_gadget/g1/idVendor 0x22b8 + +### Debug Compositions (BP-Tools) +on property:sys.usb.config=diag,serial,rmnet,adb && property:sys.usb.configfs=1 + start adbd + start vendor.tcmd + +on property:sys.usb.ffs.ready=1 && property:sys.usb.config=diag,serial,rmnet,adb && property:sys.usb.configfs=1 + write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "BP-tools" + rm /config/usb_gadget/g1/configs/b.1/f1 + rm /config/usb_gadget/g1/configs/b.1/f2 + rm /config/usb_gadget/g1/configs/b.1/f3 + rm /config/usb_gadget/g1/configs/b.1/f4 + rm /config/usb_gadget/g1/configs/b.1/f5 + write /config/usb_gadget/g1/idVendor 0x22b8 + write /config/usb_gadget/g1/idProduct 0x2ee6 + symlink /config/usb_gadget/g1/functions/diag.diag /config/usb_gadget/g1/configs/b.1/f1 + symlink /config/usb_gadget/g1/functions/cser.dun.0 /config/usb_gadget/g1/configs/b.1/f2 + symlink /config/usb_gadget/g1/functions/cser.nmea.1 /config/usb_gadget/g1/configs/b.1/f3 + symlink /config/usb_gadget/g1/functions/${vendor.usb.rmnet.func.name}.rmnet /config/usb_gadget/g1/configs/b.1/f4 + symlink /config/usb_gadget/g1/functions/ffs.adb /config/usb_gadget/g1/configs/b.1/f5 + write /config/usb_gadget/g1/UDC ${sys.usb.controller} + setprop sys.usb.state ${sys.usb.config} + +on property:sys.usb.config=diag,serial,rmnet && property:sys.usb.configfs=1 + write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "BP-tools without ADB" + rm /config/usb_gadget/g1/configs/b.1/f1 + rm /config/usb_gadget/g1/configs/b.1/f2 + rm /config/usb_gadget/g1/configs/b.1/f3 + rm /config/usb_gadget/g1/configs/b.1/f4 + rm /config/usb_gadget/g1/configs/b.1/f5 + write /config/usb_gadget/g1/idVendor 0x22b8 + write /config/usb_gadget/g1/idProduct 0x2ee5 + symlink /config/usb_gadget/g1/functions/diag.diag /config/usb_gadget/g1/configs/b.1/f1 + symlink /config/usb_gadget/g1/functions/cser.dun.0 /config/usb_gadget/g1/configs/b.1/f2 + symlink /config/usb_gadget/g1/functions/cser.nmea.1 /config/usb_gadget/g1/configs/b.1/f3 + symlink /config/usb_gadget/g1/functions/${vendor.usb.rmnet.func.name}.rmnet /config/usb_gadget/g1/configs/b.1/f4 + write /config/usb_gadget/g1/UDC ${sys.usb.controller} + setprop sys.usb.state ${sys.usb.config} + +on property:sys.usb.config=rndis,diag,serial,adb && property:sys.usb.configfs=1 + start adbd + +on property:sys.usb.ffs.ready=1 && property:sys.usb.config=rndis,diag,serial,adb && property:sys.usb.configfs=1 + write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "BP-tools Tethering" + rm /config/usb_gadget/g1/configs/b.1/f1 + rm /config/usb_gadget/g1/configs/b.1/f2 + rm /config/usb_gadget/g1/configs/b.1/f3 + rm /config/usb_gadget/g1/configs/b.1/f4 + rm /config/usb_gadget/g1/configs/b.1/f5 + write /config/usb_gadget/g1/idVendor 0x22b8 + write /config/usb_gadget/g1/idProduct 0x2ee8 + symlink /config/usb_gadget/g1/functions/${vendor.usb.rndis.func.name}.rndis /config/usb_gadget/g1/configs/b.1/f1 + symlink /config/usb_gadget/g1/functions/diag.diag /config/usb_gadget/g1/configs/b.1/f2 + symlink /config/usb_gadget/g1/functions/cser.dun.0 /config/usb_gadget/g1/configs/b.1/f3 + symlink /config/usb_gadget/g1/functions/cser.nmea.1 /config/usb_gadget/g1/configs/b.1/f4 + symlink /config/usb_gadget/g1/functions/ffs.adb /config/usb_gadget/g1/configs/b.1/f5 + write /config/usb_gadget/g1/configs/b.1/f1/wceis 1 + write /config/usb_gadget/g1/UDC ${sys.usb.controller} + setprop sys.usb.state ${sys.usb.config} + +on property:sys.usb.config=rndis,diag,serial && property:sys.usb.configfs=1 + write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "BP-tools Tethering without ADB" + rm /config/usb_gadget/g1/configs/b.1/f1 + rm /config/usb_gadget/g1/configs/b.1/f2 + rm /config/usb_gadget/g1/configs/b.1/f3 + rm /config/usb_gadget/g1/configs/b.1/f4 + rm /config/usb_gadget/g1/configs/b.1/f5 + write /config/usb_gadget/g1/idVendor 0x22b8 + write /config/usb_gadget/g1/idProduct 0x2ee7 + symlink /config/usb_gadget/g1/functions/${vendor.usb.rndis.func.name}.rndis /config/usb_gadget/g1/configs/b.1/f1 + symlink /config/usb_gadget/g1/functions/diag.diag /config/usb_gadget/g1/configs/b.1/f2 + symlink /config/usb_gadget/g1/functions/cser.dun.0 /config/usb_gadget/g1/configs/b.1/f3 + symlink /config/usb_gadget/g1/functions/cser.nmea.1 /config/usb_gadget/g1/configs/b.1/f4 + write /config/usb_gadget/g1/configs/b.1/f1/wceis 1 + write /config/usb_gadget/g1/UDC ${sys.usb.controller} + setprop sys.usb.state ${sys.usb.config} + +### QCOM Default Compositions +on property:sys.usb.config=diag,serial_cdev,rmnet,adb && property:sys.usb.configfs=1 + start adbd + +on boot + chown root system /sys/module/uvcvideo/parameters/quirks + chmod 0660 /sys/module/uvcvideo/parameters/quirks + setprop sys.usb.configfs 1 + +on property:sys.usb.ffs.ready=1 && property:sys.usb.config=diag,serial_cdev,rmnet,adb && property:sys.usb.configfs=1 + write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "Default composition" + rm /config/usb_gadget/g1/configs/b.1/f1 + rm /config/usb_gadget/g1/configs/b.1/f2 + rm /config/usb_gadget/g1/configs/b.1/f3 + rm /config/usb_gadget/g1/configs/b.1/f4 + rm /config/usb_gadget/g1/configs/b.1/f5 + write /config/usb_gadget/g1/idVendor 0x05C6 + write /config/usb_gadget/g1/idProduct 0x9091 + symlink /config/usb_gadget/g1/functions/diag.diag /config/usb_gadget/g1/configs/b.1/f1 + symlink /config/usb_gadget/g1/functions/cser.dun.0 /config/usb_gadget/g1/configs/b.1/f2 + symlink /config/usb_gadget/g1/functions/${vendor.usb.rmnet.func.name}.rmnet /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 ${sys.usb.controller} + setprop sys.usb.state ${sys.usb.config} + +on property:sys.usb.config=diag,serial_cdev,rmnet && property:sys.usb.configfs=1 + write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "Default comp without ADB" + rm /config/usb_gadget/g1/configs/b.1/f1 + rm /config/usb_gadget/g1/configs/b.1/f2 + rm /config/usb_gadget/g1/configs/b.1/f3 + rm /config/usb_gadget/g1/configs/b.1/f4 + rm /config/usb_gadget/g1/configs/b.1/f5 + write /config/usb_gadget/g1/idVendor 0x05C6 + write /config/usb_gadget/g1/idProduct 0x9092 + symlink /config/usb_gadget/g1/functions/diag.diag /config/usb_gadget/g1/configs/b.1/f1 + symlink /config/usb_gadget/g1/functions/cser.dun.0 /config/usb_gadget/g1/configs/b.1/f2 + symlink /config/usb_gadget/g1/functions/${vendor.usb.rmnet.func.name}.rmnet /config/usb_gadget/g1/configs/b.1/f3 + write /config/usb_gadget/g1/UDC ${sys.usb.controller} + setprop sys.usb.state ${sys.usb.config} + +on property:sys.usb.config=adb && property:sys.usb.configfs=1 + write /config/usb_gadget/g1/idVendor 0x22b8 + write /config/usb_gadget/g1/idProduct 0x2E81 + +on property:sys.usb.config=diag,diag_mdm,qdss,qdss_mdm,serial_cdev,serial_cdev_mdm,dpl,rmnet && property:sys.usb.configfs=1 + write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "diag_diag_mdm,qdss_qdss_mdm_dun_dun_mdm_dpl_rmnet" + 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 + rm /config/usb_gadget/g1/configs/b.1/f6 + rm /config/usb_gadget/g1/configs/b.1/f7 + rm /config/usb_gadget/g1/configs/b.1/f8 + rm /config/usb_gadget/g1/configs/b.1/f9 + write /config/usb_gadget/g1/idVendor 0x05C6 + write /config/usb_gadget/g1/idProduct 0x90DD + symlink /config/usb_gadget/g1/functions/diag.diag /config/usb_gadget/g1/configs/b.1/f1 + symlink /config/usb_gadget/g1/functions/diag.diag_mdm /config/usb_gadget/g1/configs/b.1/f2 + symlink /config/usb_gadget/g1/functions/qdss.qdss /config/usb_gadget/g1/configs/b.1/f3 + symlink /config/usb_gadget/g1/functions/qdss.qdss_mdm /config/usb_gadget/g1/configs/b.1/f4 + symlink /config/usb_gadget/g1/functions/cser.dun.0 /config/usb_gadget/g1/configs/b.1/f5 + symlink /config/usb_gadget/g1/functions/cser.dun.2 /config/usb_gadget/g1/configs/b.1/f6 + symlink /config/usb_gadget/g1/functions/${vendor.usb.rmnet.func.name}.${vendor.usb.dpl.inst.name} /config/usb_gadget/g1/configs/b.1/f7 + symlink /config/usb_gadget/g1/functions/${vendor.usb.rmnet.func.name}.${vendor.usb.rmnet.inst.name} /config/usb_gadget/g1/configs/b.1/f8 + write /config/usb_gadget/g1/UDC ${sys.usb.controller} + setprop sys.usb.state ${sys.usb.config} + +on property:sys.usb.config=diag,diag_mdm,qdss,qdss_mdm,serial_cdev,serial_cdev_mdm,dpl,rmnet,adb && property:sys.usb.configfs=1 + start adbd + +on property:sys.usb.ffs.ready=1 && property:sys.usb.config=diag,diag_mdm,qdss,qdss_mdm,serial_cdev,serial_cdev_mdm,dpl,rmnet,adb && property:sys.usb.configfs=1 + write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "diag_diag_mdm,qdss_qdss_mdm_dun_dun_mdm_dpl_rmnet_adb" + rm /config/usb_gadget/g1/configs/b.1/f1 + rm /config/usb_gadget/g1/configs/b.1/f2 + rm /config/usb_gadget/g1/configs/b.1/f3 + rm /config/usb_gadget/g1/configs/b.1/f4 + rm /config/usb_gadget/g1/configs/b.1/f5 + rm /config/usb_gadget/g1/configs/b.1/f6 + rm /config/usb_gadget/g1/configs/b.1/f7 + rm /config/usb_gadget/g1/configs/b.1/f8 + rm /config/usb_gadget/g1/configs/b.1/f9 + write /config/usb_gadget/g1/idVendor 0x05C6 + write /config/usb_gadget/g1/idProduct 0x90DE + symlink /config/usb_gadget/g1/functions/diag.diag /config/usb_gadget/g1/configs/b.1/f1 + symlink /config/usb_gadget/g1/functions/diag.diag_mdm /config/usb_gadget/g1/configs/b.1/f2 + symlink /config/usb_gadget/g1/functions/qdss.qdss /config/usb_gadget/g1/configs/b.1/f3 + symlink /config/usb_gadget/g1/functions/qdss.qdss_mdm /config/usb_gadget/g1/configs/b.1/f4 + symlink /config/usb_gadget/g1/functions/cser.dun.0 /config/usb_gadget/g1/configs/b.1/f5 + symlink /config/usb_gadget/g1/functions/cser.dun.2 /config/usb_gadget/g1/configs/b.1/f6 + symlink /config/usb_gadget/g1/functions/${vendor.usb.rmnet.func.name}.${vendor.usb.dpl.inst.name} /config/usb_gadget/g1/configs/b.1/f7 + symlink /config/usb_gadget/g1/functions/${vendor.usb.rmnet.func.name}.${vendor.usb.rmnet.inst.name} /config/usb_gadget/g1/configs/b.1/f8 + symlink /config/usb_gadget/g1/functions/ffs.adb /config/usb_gadget/g1/configs/b.1/f9 + write /config/usb_gadget/g1/UDC ${sys.usb.controller} + setprop sys.usb.state ${sys.usb.config} + +on property:sys.usb.config=rndis,diag,diag_mdm,qdss,qdss_mdm,serial_cdev,dpl && property:sys.usb.configfs=1 + write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "rndis_diag_diag_mdm_qdss_qdss_mdm_dun_dpl" + 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 + rm /config/usb_gadget/g1/configs/b.1/f6 + rm /config/usb_gadget/g1/configs/b.1/f7 + rm /config/usb_gadget/g1/configs/b.1/f8 + rm /config/usb_gadget/g1/configs/b.1/f9 + write /config/usb_gadget/g1/idVendor 0x05C6 + write /config/usb_gadget/g1/idProduct 0x90E6 + rmdir /config/usb_gadget/g2/functions/gsi.rndis + mkdir /config/usb_gadget/g1/functions/gsi.rndis + symlink /config/usb_gadget/g1/functions/${vendor.usb.rndis.func.name}.rndis /config/usb_gadget/g1/configs/b.1/f1 + symlink /config/usb_gadget/g1/functions/diag.diag /config/usb_gadget/g1/configs/b.1/f2 + symlink /config/usb_gadget/g1/functions/diag.diag_mdm /config/usb_gadget/g1/configs/b.1/f3 + symlink /config/usb_gadget/g1/functions/qdss.qdss /config/usb_gadget/g1/configs/b.1/f4 + symlink /config/usb_gadget/g1/functions/qdss.qdss_mdm /config/usb_gadget/g1/configs/b.1/f5 + symlink /config/usb_gadget/g1/functions/cser.dun.0 /config/usb_gadget/g1/configs/b.1/f6 + symlink /config/usb_gadget/g1/functions/${vendor.usb.rmnet.func.name}.${vendor.usb.dpl.inst.name} /config/usb_gadget/g1/configs/b.1/f7 + write /config/usb_gadget/g1/UDC ${sys.usb.controller} + setprop sys.usb.state ${sys.usb.config} + + on property:sys.usb.config=rndis,diag,diag_mdm,qdss,qdss_mdm,serial_cdev,dpl,adb && property:sys.usb.configfs=1 + start adbd + + on property:sys.usb.ffs.ready=1 && property:sys.usb.config=rndis,diag,diag_mdm,qdss,qdss_mdm,serial_cdev,dpl,adb && property:sys.usb.configfs=1 + write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "rndis_diag_diag_mdm_qdss_qdss_mdm_dun_dpl_adb" + rm /config/usb_gadget/g1/configs/b.1/f1 + rm /config/usb_gadget/g1/configs/b.1/f2 + rm /config/usb_gadget/g1/configs/b.1/f3 + rm /config/usb_gadget/g1/configs/b.1/f4 + rm /config/usb_gadget/g1/configs/b.1/f5 + rm /config/usb_gadget/g1/configs/b.1/f6 + rm /config/usb_gadget/g1/configs/b.1/f7 + rm /config/usb_gadget/g1/configs/b.1/f8 + rm /config/usb_gadget/g1/configs/b.1/f9 + write /config/usb_gadget/g1/idVendor 0x05C6 + write /config/usb_gadget/g1/idProduct 0x90E7 + rmdir /config/usb_gadget/g2/functions/gsi.rndis + mkdir /config/usb_gadget/g1/functions/gsi.rndis + symlink /config/usb_gadget/g1/functions/${vendor.usb.rndis.func.name}.rndis /config/usb_gadget/g1/configs/b.1/f1 + symlink /config/usb_gadget/g1/functions/diag.diag /config/usb_gadget/g1/configs/b.1/f2 + symlink /config/usb_gadget/g1/functions/diag.diag_mdm /config/usb_gadget/g1/configs/b.1/f3 + symlink /config/usb_gadget/g1/functions/qdss.qdss /config/usb_gadget/g1/configs/b.1/f4 + symlink /config/usb_gadget/g1/functions/qdss.qdss_mdm /config/usb_gadget/g1/configs/b.1/f5 + symlink /config/usb_gadget/g1/functions/cser.dun.0 /config/usb_gadget/g1/configs/b.1/f6 + symlink /config/usb_gadget/g1/functions/${vendor.usb.rmnet.func.name}.${vendor.usb.dpl.inst.name} /config/usb_gadget/g1/configs/b.1/f7 + symlink /config/usb_gadget/g1/functions/ffs.adb /config/usb_gadget/g1/configs/b.1/f8 + write /config/usb_gadget/g1/UDC ${sys.usb.controller} + setprop sys.usb.state ${sys.usb.config} + +on property:sys.usb.config=diag,diag_mdm,qdss,qdss_mdm,serial_cdev,serial_cdev_mdm,mass_storage && property:sys.usb.configfs=1 + write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "diag_diag_mdm,qdss_qdss_mdm_dun_dun_mdm_dpl_rmnet" + 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 + rm /config/usb_gadget/g1/configs/b.1/f6 + rm /config/usb_gadget/g1/configs/b.1/f7 + rm /config/usb_gadget/g1/configs/b.1/f8 + rm /config/usb_gadget/g1/configs/b.1/f9 + write /config/usb_gadget/g1/idVendor 0x05C6 + write /config/usb_gadget/g1/idProduct 0x90DD + symlink /config/usb_gadget/g1/functions/diag.diag /config/usb_gadget/g1/configs/b.1/f1 + symlink /config/usb_gadget/g1/functions/diag.diag_mdm /config/usb_gadget/g1/configs/b.1/f2 + symlink /config/usb_gadget/g1/functions/qdss.qdss /config/usb_gadget/g1/configs/b.1/f3 + symlink /config/usb_gadget/g1/functions/qdss.qdss_mdm /config/usb_gadget/g1/configs/b.1/f4 + symlink /config/usb_gadget/g1/functions/cser.dun.0 /config/usb_gadget/g1/configs/b.1/f5 + symlink /config/usb_gadget/g1/functions/cser.dun.2 /config/usb_gadget/g1/configs/b.1/f6 + write /config/usb_gadget/g1/functions/mass_storage.0/lun.0/cdrom 1 + write /config/usb_gadget/g1/functions/mass_storage.0/lun.0/file "/product/etc/cdrom" + symlink /config/usb_gadget/g1/functions/mass_storage.0 /config/usb_gadget/g1/configs/b.1/f7 + write /config/usb_gadget/g1/UDC ${sys.usb.controller} + setprop sys.usb.state ${sys.usb.config} + +on property:sys.usb.config=diag,diag_mdm,qdss,qdss_mdm,serial_cdev,serial_cdev_mdm,mass_storage,adb && property:sys.usb.configfs=1 + start adbd + +on property:sys.usb.ffs.ready=1 && property:sys.usb.config=diag,diag_mdm,qdss,qdss_mdm,serial_cdev,serial_cdev_mdm,mass_storage,adb && property:sys.usb.configfs=1 + write /config/usb_gadget/g1/configs/b.1/strings/0x409/configuration "diag_diag_mdm,qdss_qdss_mdm_dun_dun_mdm_dpl_rmnet_adb" + rm /config/usb_gadget/g1/configs/b.1/f1 + rm /config/usb_gadget/g1/configs/b.1/f2 + rm /config/usb_gadget/g1/configs/b.1/f3 + rm /config/usb_gadget/g1/configs/b.1/f4 + rm /config/usb_gadget/g1/configs/b.1/f5 + rm /config/usb_gadget/g1/configs/b.1/f6 + rm /config/usb_gadget/g1/configs/b.1/f7 + rm /config/usb_gadget/g1/configs/b.1/f8 + rm /config/usb_gadget/g1/configs/b.1/f9 + write /config/usb_gadget/g1/idVendor 0x05C6 + write /config/usb_gadget/g1/idProduct 0x90DE + symlink /config/usb_gadget/g1/functions/diag.diag /config/usb_gadget/g1/configs/b.1/f1 + symlink /config/usb_gadget/g1/functions/diag.diag_mdm /config/usb_gadget/g1/configs/b.1/f2 + symlink /config/usb_gadget/g1/functions/qdss.qdss /config/usb_gadget/g1/configs/b.1/f3 + symlink /config/usb_gadget/g1/functions/qdss.qdss_mdm /config/usb_gadget/g1/configs/b.1/f4 + symlink /config/usb_gadget/g1/functions/cser.dun.0 /config/usb_gadget/g1/configs/b.1/f5 + symlink /config/usb_gadget/g1/functions/cser.dun.2 /config/usb_gadget/g1/configs/b.1/f6 + write /config/usb_gadget/g1/functions/mass_storage.0/lun.0/cdrom 1 + write /config/usb_gadget/g1/functions/mass_storage.0/lun.0/file "/product/etc/cdrom" + symlink /config/usb_gadget/g1/functions/mass_storage.0 /config/usb_gadget/g1/configs/b.1/f7 + symlink /config/usb_gadget/g1/functions/ffs.adb /config/usb_gadget/g1/configs/b.1/f8 + write /config/usb_gadget/g1/UDC ${sys.usb.controller} diff --git a/rootdir/etc/init.mmi.wlan.rc b/rootdir/etc/init.mmi.wlan.rc new file mode 100644 index 0000000..c2b11ce --- /dev/null +++ b/rootdir/etc/init.mmi.wlan.rc @@ -0,0 +1,7 @@ + +service vendor.wlan-getlogs /vendor/bin/init.mmi.wlan-getlogs.sh + class late_start + user log + group log system wifi + oneshot + disabled diff --git a/rootdir/etc/init.qcom.factory.rc b/rootdir/etc/init.qcom.factory.rc new file mode 100644 index 0000000..6c490e4 --- /dev/null +++ b/rootdir/etc/init.qcom.factory.rc @@ -0,0 +1,255 @@ +# +# Copyright (c) 2009-2016, 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. +# + +# Define fastmmi +service fastmmi /system/bin/mmi + user root + group root + disabled + +service vendor.mmid /vendor/bin/mmid + user root + group root + disabled + +service mmi_diag /system/bin/mmi_diag + class main + user root + group root oem_2901 + disabled + +on property:vendor.sys.boot_mode=ffbm + write ${persist.vendor.mmi.misc_dev_path} "ffbm-01" + +on property:vendor.sys.boot_mode=qmmi + write ${persist.vendor.mmi.misc_dev_path} "ffbm-02" + +on property:vendor.sys.boot_mode=normal + write ${persist.vendor.mmi.misc_dev_path} "normal" + +# Creating a scratch storage on /data for factory testing. +on factory-fs && property:ro.bootmode=ffbm-00 + mount tmpfs tmpfs /data + +on factory-fs && property:ro.bootmode=ffbm-01 + mount tmpfs tmpfs /data + +# aligned the usb port with system standard, otherwise if only diag be added +# Then in QMMI mode, the whole Andoid be booted, but due to the ro.bootmode is +# not normal/unknow, then when it apply the default funcs, it will turn to MTP +# which cause the diag/Wwan/modem port all be lost in qmmi mode. Details: +# UsbDeviceManager.java---->getDefaultFunctions and trySetEnabledFunctions +on property:persist.vendor.usb.config=* + setprop persist.sys.usb.ffbm-02.func ${persist.vendor.usb.config} + +on mmi && property:ro.bootmode=ffbm-00 + # ======================================================== + # This is FFBM only settings. + # ======================================================== + #mkdir for factory data files. + mkdir /mnt/vendor/persist/FTM_AP 0750 system system + + start fastmmi + # start qcom-post-boot to set the misc partition path property value + start qcom-post-boot + start mmi_diag + +on mmi && property:ro.bootmode=ffbm-01 + # ======================================================== + # This is FFBM only settings. + # ======================================================== + #mkdir for factory data files. + mkdir /mnt/vendor/persist/FTM_AP 0750 system system + + start fastmmi + ## start qcom-post-boot to set the misc partition path property value + start qcom-post-boot + start mmi_diag + +on property:persist.vendor.usb.config=* && property:ro.bootmode=ffbm-00 + setprop sys.usb.config ${persist.vendor.usb.config} + +on property:persist.vendor.usb.config=* && property:ro.bootmode=ffbm-01 + setprop sys.usb.config ${persist.vendor.usb.config} + +on property:persist.vendor.usb.config=* && property:ro.bootmode=ffbm-02 + setprop sys.usb.config ${persist.vendor.usb.config} + +on ffbm + trigger early-fs + trigger factory-fs + trigger fs + trigger post-fs + + # Mount fstab in init.{$device}.rc by mount_all with '--late' parameter + # to only mount entries with 'latemount'. This is needed if '--early' is + # specified in the previous mount_all command on the fs stage. + # With /system mounted and properties form /system + /factory available, + # some services can be started. + trigger late-fs + + # Now we can mount /data. File encryption requires keymaster to decrypt + # /data, which in turn can only be loaded when system properties are present. + trigger post-fs-data + + # Now we can start zygote for devices with file based encryption + trigger zygote-start + + # Load persist properties and override properties (if enabled) from /data. + trigger load_persist_props_action + + # Remove a file to wake up anything waiting for firmware. + trigger firmware_mounts_complete + + trigger early-boot + trigger boot + trigger mmi + + +# ======================================================== +# Start for audio TC +# ======================================================== + +service vendor.audio_tc53 /vendor/bin/mm-audio-ftm -tc 53 + user audio + group audio + disabled + oneshot + + +service vendor.audio_tc51 /vendor/bin/mm-audio-ftm -tc 51 + user audio + group audio + disabled + oneshot + +service vendor.audio_tc56 /vendor/bin/mm-audio-ftm -tc 56 + user audio + group audio + disabled + oneshot + +service vendor.audio_tc222 /vendor/bin/mm-audio-ftm -tc 222 + user audio + group audio + disabled + oneshot + +service vendor.audio_tc228 /vendor/bin/mm-audio-ftm -tc 228 + user audio + group audio + disabled + oneshot + +service vendor.audio_tc229 /vendor/bin/mm-audio-ftm -tc 229 + user audio + group audio + disabled + oneshot + +service vendor.audio_tc230 /vendor/bin/mm-audio-ftm -tc 230 + user audio + group audio + disabled + oneshot + +service vendor.audio_tc225 /vendor/bin/mm-audio-ftm -tc 225 + user audio + group audio + disabled + oneshot + +service vendor.audio_tc246 /vendor/bin/mm-audio-ftm -tc 246 + user audio + group audio + disabled + oneshot + +service vendor.audio_tc247 /vendor/bin/mm-audio-ftm -tc 247 + user audio + group audio + disabled + oneshot + +service vendor.audio_tc250 /vendor/bin/mm-audio-ftm -tc 250 + user audio + group audio + disabled + oneshot + +service vendor.audio_tc251 /vendor/bin/mm-audio-ftm -tc 251 + user audio + group audio + disabled + oneshot + +service vendor.audio_tc252 /vendor/bin/mm-audio-ftm -tc 252 + user audio + group audio + disabled + oneshot + +service vendor.audio_tc253 /vendor/bin/mm-audio-ftm -tc 253 + user audio + group audio + disabled + oneshot + +service vendor.audio_tc11 /vendor/bin/mm-audio-ftm -tc 11 -file /data/vendor/audio/ftm_headset_mic_record.wav + user audio + group audio + disabled + oneshot + +service vendor.audio_tc101 /vendor/bin/mm-audio-ftm -tc 101 -file /data/vendor/audio/ftm_mic1_record.wav + user audio + group audio + disabled + oneshot + +service vendor.audio_tc102 /vendor/bin/mm-audio-ftm -tc 102 -file /data/vendor/audio/ftm_mic2_record.wav + user audio + group audio + disabled + oneshot + +service vendor.audio_tc103 /vendor/bin/mm-audio-ftm -tc 103 -file /data/vendor/audio/ftm_mic3_record.wav + user audio + group audio + disabled + oneshot + +service vendor.audio_tc104 /vendor/bin/mm-audio-ftm -tc 104 -file /data/vendor/audio/ftm_mic4_record.wav + user audio + group audio + disabled + oneshot + +# ======================================================== +# End for audio TC +# ======================================================== diff --git a/rootdir/etc/init.qcom.rc b/rootdir/etc/init.qcom.rc new file mode 100644 index 0000000..9251418 --- /dev/null +++ b/rootdir/etc/init.qcom.rc @@ -0,0 +1,1084 @@ +# Copyright (c) 2009-2012, 2014-2019, 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. +# + +#import /vendor/etc/init/hw/init.qcom.usb.rc +#import /vendor/etc/init/hw/init.msm.usb.configfs.rc +import /vendor/etc/init/hw/init.qcom.test.rc +import /vendor/etc/init/hw/init.target.rc +import /vendor/etc/init/hw/init.qcom.factory.rc + +on early-init + mount debugfs debugfs /sys/kernel/debug + chmod 0755 /sys/kernel/debug + + # create symlink for vendor mount points + symlink /vendor/firmware_mnt /firmware + symlink /vendor/bt_firmware /bt_firmware + symlink /vendor/dsp /dsp + + # Change ownership of hw_recovery related nodes + chown system graphics /sys/kernel/debug/dri/0/debug/dump + chown system graphics /sys/kernel/debug/dri/0/debug/recovery_reg + chown system graphics /sys/kernel/debug/dri/0/debug/recovery_dbgbus + chown system graphics /sys/kernel/debug/dri/0/debug/recovery_vbif_dbgbus + + # Change ownership of sw_sync node + chown system graphics /sys/kernel/debug/sync/sw_sync + chmod 0666 /sys/kernel/debug/sync/sw_sync + + chown root system /dev/kmsg + chmod 0620 /dev/kmsg + # Load WIGIG platform driver + # exec u:r:vendor_modprobe:s0 -- /vendor/bin/modprobe -a -d /vendor/lib/modules msm_11ad_proxy + +on init + + # Support legacy paths + symlink /sdcard /mnt/sdcard + symlink /sdcard /storage/sdcard0 + + # Create cgroup mount point for memory + mkdir /sys/fs/cgroup/memory/bg 0750 root system + write /sys/fs/cgroup/memory/bg/memory.swappiness 140 + write /sys/fs/cgroup/memory/bg/memory.move_charge_at_immigrate 1 + chown root system /sys/fs/cgroup/memory/bg/tasks + chmod 0660 /sys/fs/cgroup/memory/bg/tasks + +on post-fs + chmod 0755 /sys/kernel/debug/tracing + +on early-boot + # set RLIMIT_MEMLOCK to 64MB + setrlimit 8 67108864 67108864 + # Allow subsystem (modem etc) debugging + write /sys/kernel/boot_adsp/boot 1 + write /sys/kernel/boot_cdsp/boot 1 + write /sys/devices/virtual/npu/msm_npu/boot 1 + write /sys/kernel/boot_slpi/boot 1 + write /sys/devices/virtual/cvp/cvp/boot 1 + exec u:r:qti_init_shell:s0 -- /vendor/bin/init.qcom.early_boot.sh + exec u:r:qti_init_shell:s0 -- /vendor/bin/init.qti.can.sh + + # for backward compatibility + chown system system /persist/sensors + chown system system /persist/sensors/registry + chown system system /persist/sensors/registry/registry + chown system system /persist/sensors/registry/registry/sensors_registry + chown system system /persist/sensors/sensors_settings + chown system system /persist/sensors/registry/config + chmod 0664 /persist/sensors/sensors_settings + + chown system system /mnt/vendor/persist/sensors + chown system system /mnt/vendor/persist/sensors/sns.reg + chown system system /mnt/vendor/persist/sensors/sensors_list.txt + chown system system /mnt/vendor/persist/sensors/registry + chown system system /mnt/vendor/persist/sensors/registry/registry + chown system system /mnt/vendor/persist/sensors/registry/registry/sensors_registry + chown system system /mnt/vendor/persist/sensors/sensors_settings + chown system system /mnt/vendor/persist/sensors/registry/sns_reg_config + chown system system /mnt/vendor/persist/sensors/registry/sns_reg_version + chown system system /mnt/vendor/persist/sensors/registry/config + chmod 0664 /mnt/vendor/persist/sensors/sensors_settings + + chown system system /mnt/vendor/persist/data/pfm/licenses + chmod 0775 /mnt/vendor/persist/data/pfm/licenses + +on boot + chown bluetooth bluetooth /sys/module/bluetooth_power/parameters/power + chown bluetooth net_bt /sys/class/rfkill/rfkill0/type + chown bluetooth net_bt /sys/class/rfkill/rfkill0/state + chown bluetooth bluetooth /proc/bluetooth/sleep/proto + chown bluetooth bluetooth /sys/module/hci_uart/parameters/ath_lpm + chown bluetooth bluetooth /sys/module/hci_uart/parameters/ath_btwrite + chown system system /sys/module/sco/parameters/disable_esco + chown bluetooth bluetooth /sys/module/hci_smd/parameters/hcismd_set + chown system system /sys/module/msm_core/parameters/polling_interval + chown system system /sys/module/msm_core/parameters/disabled + chown system system /sys/kernel/debug/msm_core/enable + chown system system /sys/kernel/debug/msm_core/ptable + chown system system /sys/kernel/boot_slpi/ssr + chown system system /sys/module/radio_iris_transport/parameters/fmsmd_set + chmod 0660 /sys/module/bluetooth_power/parameters/power + chmod 0660 /sys/module/hci_smd/parameters/hcismd_set + chmod 0660 /sys/module/radio_iris_transport/parameters/fmsmd_set + chmod 0660 /sys/class/rfkill/rfkill0/state + chmod 0660 /proc/bluetooth/sleep/proto + chown bluetooth net_bt /dev/ttyHS0 + chmod 0660 /sys/module/hci_uart/parameters/ath_lpm + chmod 0660 /sys/module/hci_uart/parameters/ath_btwrite + chmod 0660 /dev/ttyHS0 + chown bluetooth bluetooth /sys/devices/platform/msm_serial_hs.0/clock + chmod 0660 /sys/devices/platform/msm_serial_hs.0/clock + + chmod 0660 /dev/ttyHS2 + chown bluetooth bluetooth /dev/ttyHS2 + + chown bluetooth net_bt /sys/class/rfkill/rfkill0/device/extldo + chmod 0660 /sys/class/rfkill/rfkill0/device/extldo + + # This location is used by QCRIL to host UNIX domain + # socket files used for internal IPC within QCRIL + # modules + mkdir /dev/socket/qmux_radio 0770 radio radio + chmod 2770 /dev/socket/qmux_radio + + mkdir /persist/drm 0770 system system + mkdir /persist/bluetooth 0770 bluetooth bluetooth + mkdir /persist/misc 0770 system system + mkdir /persist/alarm 0770 system system + mkdir /mnt/vendor/persist/time 0770 system system + mkdir /mnt/vendor/persist/secnvm 0770 system system + mkdir /mnt/vendor/persist/iar_db 0770 system system + mkdir /mnt/vendor/spunvm 0770 system system + + #Create WIGIG socket area + mkdir /dev/socket/wigig 0770 wifi wifi + + setprop wifi.interface wlan0 + + setprop ro.telephony.call_ring.multiple false + + #Remove SUID bit for iproute2 ip tool + chmod 0755 /system/bin/ip + + + chmod 0444 /sys/devices/platform/msm_hsusb/gadget/usb_state + + setprop net.tcp.2g_init_rwnd 10 + + # To prevent out of order acknowledgements from making + # connection tracking to treat them as not belonging to + # the connection they belong to. + # Otherwise, a weird issue happens in which some long + # connections on high-throughput links get dropped when + # an ack packet comes out of order + write /proc/sys/net/netfilter/nf_conntrack_tcp_be_liberal 1 + + # Set the console loglevel to < KERN_INFO + # Set the default message loglevel to KERN_INFO + write /proc/sys/kernel/printk "6 6 1 7" + + # Allow access for CCID command/response timeout configuration + chown system system /sys/module/ccid_bridge/parameters/bulk_msg_timeout + + # bond0 used by FST Manager + chown wifi wifi /sys/class/net/bond0/bonding/queue_id + + # Allow access to emmc rawdump block partition and dload sysfs node + chown root system /dev/block/bootdevice/by-name/rawdump + chmod 0660 /dev/block/bootdevice/by-name/rawdump + chown root system /sys/kernel/dload/emmc_dload + chmod 0660 /sys/kernel/dload/emmc_dload + chown root system /dev/block/bootdevice/by-name/ramdump + chmod 0660 /dev/block/bootdevice/by-name/ramdump + chown root system /sys/kernel/dload/dload_mode + chmod 0660 /sys/kernel/dload/dload_mode + + chown system system /sys/class/backlight/panel0-backlight/brightness + chown system system /sys/class/backlight/panel0-backlight/max_brightness + chown system system /sys/class/backlight/panel1-backlight/brightness + chown system system /sys/class/backlight/panel1-backlight/max_brightness + + # Allow access to sensors device attributes + chown system system /sys/class/sensors/MPU6050-accel/enable + chown system system /sys/class/sensors/MPU6050-accel/poll_delay + chown system system /sys/class/sensors/MPU6050-gyro/enable + chown system system /sys/class/sensors/MPU6050-gyro/poll_delay + chown system system /sys/class/sensors/apds9930-light/enable + chown system system /sys/class/sensors/apds9930-light/poll_delay + chown system system /sys/class/sensors/apds9930-proximity/enable + chown system system /sys/class/sensors/apds9930-proximity/poll_delay + + # Allow access to UFS device attributes on sysfs + chown system system /sys/devices/platform/soc/1d84000.ufshc/auto_hibern8 + chmod 0660 /sys/devices/platform/soc/1d84000.ufshc/auto_hibern8 + + # Create directory used for display + # for backward compatibility + mkdir /persist/display 0770 system graphics + mkdir /mnt/vendor/persist/display 0770 system graphics + + # Create vpp directory + mkdir /mnt/vendor/persist/vpp 0770 media media + + + # Create hvdcp_opti directory + mkdir /mnt/vendor/persist/hvdcp_opti 0770 root system + + #sensors log dir + mkdir /data/vendor/sensors + chown system system /data/vendor/sensors + +# msm specific files that need to be created on /data +on post-fs-data + mkdir /data/vendor/misc 01771 system system + + # Create directory used for dump collection + mkdir /data/vendor/ssrdump 0770 root system + + # Create directory used by display clients + mkdir /data/vendor/display 0770 system graphics + + # Change lm related dirs + mkdir /data/vendor/lm 0700 root root + + # Create directory used by media clients + mkdir /data/vendor/media 0770 mediacodec media + + # Create /data/vendor/tzstorage directory for SFS listener + mkdir /data/vendor/tzstorage 0770 system system + + # Create directory for apps access via QTEEConnector + mkdir /data/vendor/qtee 0770 system system + + #Create folder of camera + mkdir /data/vendor/camera 0770 camera camera + + + #Create directory for tftp + mkdir /data/vendor/tombstones 0771 system system + mkdir /data/vendor/tombstones/rfs 0771 system system + + mkdir /data/vendor/ramdump 0771 root system + mkdir /data/vendor/bluetooth 0770 bluetooth bluetooth + mkdir /data/vendor/ramdump/bluetooth 0770 bluetooth bluetooth + + # Create the directories used by the Wireless subsystem + mkdir /data/vendor/wifi 0770 wifi wifi + mkdir /data/vendor/wifi/sockets 0770 wifi wifi + mkdir /data/vendor/wifi/hostapd 0770 wifi wifi + mkdir /data/vendor/wifi/hostapd/ctrl 0770 wifi wifi + mkdir /data/vendor/wifi/wpa_supplicant 0770 wifi wifi + mkdir /data/vendor/wifi/wigig_hostapd 0770 wifi wifi + mkdir /data/vendor/wifi/wpa 0770 wifi wifi + mkdir /data/vendor/wifi/wpa/sockets 0770 wifi wifi + + # Create the directories used by WiGig Sensing + mkdir /data/vendor/sensing 0770 system wifi + + # Create the directories used by CnE subsystem + mkdir /data/vendor/connectivity 0771 radio radio + chown radio radio /data/vendor/connectivity + + # Create directory used by audio subsystem + mkdir /data/vendor/audio 0770 audio audio + + # Create directory for audio delta files + mkdir /data/vendor/audio/acdbdata 0770 media audio + mkdir /data/vendor/audio/acdbdata/delta 0770 media audio + + # Create directory for radio + mkdir /data/vendor/radio 0770 system radio + rm /data/vendor/radio/shmbus + + # Create directory for modem_config + mkdir /data/vendor/modem_config 0570 radio root + + # Mounting of persist is moved to 'on emmc-fs' and 'on fs' sections + # We chown/chmod /persist again so because mount is run as root + defaults + chown root system /persist + chmod 0771 /persist + chown system system /persist/WCNSS_qcom_wlan_nv.bin + chmod 0664 /sys/devices/platform/msm_sdcc.1/polling + chmod 0664 /sys/devices/platform/msm_sdcc.2/polling + chmod 0664 /sys/devices/platform/msm_sdcc.3/polling + chmod 0664 /sys/devices/platform/msm_sdcc.4/polling + + # Chown polling nodes as needed from UI running on system server + chown system system /sys/devices/platform/msm_sdcc.1/polling + chown system system /sys/devices/platform/msm_sdcc.2/polling + chown system system /sys/devices/platform/msm_sdcc.3/polling + chown system system /sys/devices/platform/msm_sdcc.4/polling + + #Create directories for Location services + mkdir /data/vendor/location 0770 gps gps + mkdir /data/vendor/location/mq 0770 gps gps + mkdir /data/vendor/location/xtwifi 0770 gps gps + mkdir /dev/socket/location 0770 gps gps + mkdir /dev/socket/location/mq 0770 gps gps + mkdir /dev/socket/location/xtra 0770 gps gps + + #Create directories for wifihal services + mkdir /dev/socket/wifihal 0770 wifi wifi + chmod 2770 /dev/socket/wifihal + + #Create directory for FOTA + mkdir /data/fota 0771 + chown system system /data/fota + + #Create directory for hostapd + mkdir /data/hostapd 0770 system wifi + + # Create /data/time folder for time-services + mkdir /data/vendor/time/ 0700 system system + + setprop vold.post_fs_data_done 1 + + #Create a folder for SRS to be able to create a usercfg file + #mkdir /data/data/media 0770 media media + + #Create FM dir for patchdownloader + mkdir /data/vendor/fm 0770 system system + chmod 0770 /data/vendor/fm + + #Create PERFD deamon related dirs + mkdir /data/vendor/perfd 0770 root system + chmod 2770 /data/vendor/perfd + rm /data/vendor/perfd/default_values + + mkdir /data/vendor/secure_element 0777 system system + + #Create IOP deamon related dirs + mkdir /data/vendor/iop 0700 root system + + # Mark the copy complete flag to not completed + write /data/vendor/radio/copy_complete 0 + chown radio radio /data/vendor/radio/copy_complete + chmod 0660 /data/vendor/radio/copy_complete + + # copy prebuilt qcril.db files always + copy /vendor/radio/qcril_database/qcril.db /data/vendor/radio/qcril_prebuilt.db + chown radio radio /data/vendor/radio/qcril_prebuilt.db + chmod 0660 /data/vendor/radio/qcril_prebuilt.db + # File flags for prebuilt ril db file + write /data/vendor/radio/prebuilt_db_support 1 + chown radio radio /data/vendor/radio/prebuilt_db_support + chmod 0400 /data/vendor/radio/prebuilt_db_support + write /data/vendor/radio/db_check_done 0 + chown radio radio /data/vendor/radio/db_check_done + chmod 0660 /data/vendor/radio/db_check_done + + # qti-logkit data + mkdir /data/vendor/qti-logkit/ 0771 system system + mkdir /data/vendor/qti-logkit/shared-privileged/ 2770 system system + mkdir /data/vendor/qti-logkit/shared-public/ 2770 system diag + mkdir /data/vendor/qti-logkit/socket-privileged/ 2770 system system + mkdir /data/vendor/qti-logkit/socket-public/ 2750 system diag + mkdir /data/vendor/qti-logkit/logdata/ 2750 system shell + + #Create SWAP related dirs + mkdir /data/vendor/swap 0770 root system + chmod 2770 /data/vendor/swap + + # set aggressive read ahead for dm-0 and dm-1 during boot up + write /sys/block/dm-0/queue/read_ahead_kb 2048 + write /sys/block/dm-1/queue/read_ahead_kb 2048 + write /sys/block/dm-2/queue/read_ahead_kb 2048 + + # Create vpp directory + mkdir /data/vendor/vpp 0770 media media + + #Create dir for TUI + mkdir /data/vendor/tui 0700 system drmrpc + + #Start move time data to /data/vendor once post-fs-data done + start vendor.move_time_data + +service nqnfcinfo /system/vendor/bin/nqnfcinfo + class late_start + group nfc + user system + oneshot + +service iop /system/vendor/bin/iop + class main + user root + group root + disabled + socket iop seqpacket 0666 root system + +on property:ro.vendor.hw.dualsim=true + setprop persist.vendor.radio.multisim.config dsds + +on property:ro.vendor.hw.dualsim=false + setprop persist.vendor.radio.multisim.config "" + +#service qcomsysd /system/vendor/bin/qcom-system-daemon +# class main +# user root +# group root diag oem_2901 +# disabled + +#on property:persist.vendor.qcomsysd.enabled=1 +# enable qcomsysd + +#on property:persist.vendor.qcomsysd.enabled=0 +# stop qcomsysd + +service vendor.ssr_setup /system/vendor/bin/ssr_setup + oneshot + disabled + +service vendor.ss_ramdump /system/vendor/bin/subsystem_ramdump + class main + user system + group log sdcard_rw sdcard_r diag + disabled + +on property:ro.vendor.iocgrp.config=1 + mkdir /dev/blkio + mount cgroup none /dev/blkio blkio + chown system system /dev/blkio + chown system system /dev/blkio/tasks + chmod 0664 /dev/blkio/tasks + mkdir /dev/blkio/bg 0755 system system + chown system system /dev/blkio/bg/tasks + chmod 0664 /dev/blkio/bg/tasks + write /dev/blkio/blkio.weight 1000 + write /dev/blkio/bg/blkio.weight 100 + +on property:persist.sys.ssr.enable_debug=* + write /sys/module/subsystem_restart/parameters/enable_debug ${persist.sys.ssr.enable_debug} + +on property:persist.sys.mba_boot_timeout=* + write /sys/module/pil_msa/parameters/pbl_mba_boot_timeout_ms ${persist.sys.mba_boot_timeout} + +on property:persist.sys.modem_auth_timeout=* + write /sys/module/pil_msa/parameters/modem_auth_timeout_ms ${persist.sys.modem_auth_timeout} + +on property:persist.sys.pil_proxy_timeout=* + write /sys/module/peripheral_loader/parameters/proxy_timeout_ms ${persist.sys.pil_proxy_timeout} + +on property:persist.vendor.ssr.restart_level=* + start vendor.ssr_setup + +on property:persist.vendor.ssr.enable_ramdumps=1 + write /sys/module/subsystem_restart/parameters/enable_ramdumps 1 + mkdir /data/vendor/ramdump_ssr 770 system system + start vendor.ss_ramdump + +on property:persist.vendor.ssr.enable_ramdumps=0 + write /sys/module/subsystem_restart/parameters/enable_ramdumps 0 + +on property:persist.vendor.sys.rawdump_copy=1 + write /sys/kernel/dload/emmc_dload 1 + +on property:persist.vendor.sys.rawdump_copy=0 + write /sys/kernel/dload/emmc_dload 0 + +on property:sys.boot_completed=1 + write /dev/kmsg "Boot completed " + #Reset read ahead for dm-0, dm-1 and dm-2 to 512kb + write /sys/block/dm-0/queue/read_ahead_kb 512 + write /sys/block/dm-1/queue/read_ahead_kb 512 + write /sys/block/dm-2/queue/read_ahead_kb 512 + #WDSP FW boot sysfs node used by STHAL + chown media audio /sys/kernel/wdsp0/boot + chown media audio /sys/kernel/wcd_cpe0/fw_name + +on property:persist.vendor.radio.atfwd.start=false + stop vendor.atfwd + +on property:vendor.radio.atfwd.start=false + stop vendor.atfwd + +# corefile limit +on property:persist.debug.trace=1 + mkdir /data/core 0777 root root + write /proc/sys/kernel/core_pattern "/data/core/%E.%p.%e" + +on property:init.svc.wpa_supplicant=stopped + stop dhcpcd + +#on property:vendor.bluetooth.dun.status=running +# start vendor.bt-dun + +#on property:vendor.bluetooth.dun.status=stopped +# stop vendor.bt-dun + +on property:ro.bluetooth.ftm_enabled=true + start ftmd + +on property:vendor.bluetooth.startbtlogger=true + start vendor.bt_logger + +on property:vendor.bluetooth.startbtlogger=false + stop vendor.bt_logger + +on property:vendor.media.target.version=* + setprop vendor.sys.media.target.version ${vendor.media.target.version} + +service qcom-c_core-sh /vendor/bin/init.qcom.class_core.sh + class core + user root + oneshot + +service qcom-c_main-sh /vendor/bin/init.class_main.sh + class main + user root + group root system + oneshot + +on property:vold.decrypt=trigger_restart_framework + start qcom-c_main-sh + start wcnss-service + +on property:persist.env.fastdorm.enabled=true + setprop persist.radio.data_no_toggle 1 + +service vendor.qrtr-ns /vendor/bin/qrtr-ns -f + class core + user vendor_qrtr + group vendor_qrtr + capabilities NET_BIND_SERVICE + +service irsc_util /vendor/bin/irsc_util "/vendor/etc/sec_config" + class core + user root + oneshot + +#service vendor.bt-dun /system/bin/dun-server /dev/smd7 /dev/rfcomm0 +# class late_start +# user bluetooth +# group bluetooth net_bt_admin inet +# disabled +# oneshot + +service vendor.bt_logger /system/bin/bt_logger + user bluetooth + group bluetooth net_bt_admin sdcard_rw sdcard_r media_rw + class late_start + disabled + oneshot + +service ftmd /system/bin/logwrapper /system/bin/ftmdaemon + class late_start + user root + group bluetooth net_bt_admin misc diag net_bt + disabled + oneshot + +service qmiproxy /system/bin/qmiproxy + class main + user radio + group radio diag + disabled + +service vendor.sensors /vendor/bin/sscrpcd sensorspd + class early_hal + user system + group system wakelock + capabilities BLOCK_SUSPEND + +service vendor.sensors.qti /vendor/bin/sensors.qti + class core + user system + group system + disabled + +# Adjust socket buffer to enlarge TCP receive window for high bandwidth +# but only if ro.data.large_tcp_window_size property is set. +on property:ro.data.large_tcp_window_size=true + write /proc/sys/net/ipv4/tcp_adv_win_scale 2 + +on property:sys.sysctl.tcp_adv_win_scale=* + write /proc/sys/net/ipv4/tcp_adv_win_scale ${sys.sysctl.tcp_adv_win_scale} + +service wpa_supplicant /vendor/bin/hw/wpa_supplicant \ + -O/data/vendor/wifi/wpa/sockets -puse_p2p_group_interface=1 -dd \ + -g@android:vendor_wpa_wlan0 +# we will start as root and wpa_supplicant will switch to user wifi +# after setting up the capabilities required for WEXT +# user wifi +# group wifi inet keystore + interface android.hardware.wifi.supplicant@1.0::ISupplicant default + interface android.hardware.wifi.supplicant@1.1::ISupplicant default + class main + socket vendor_wpa_wlan0 dgram 660 wifi wifi + disabled + oneshot + +service vendor.wigig_supplicant /vendor/bin/hw/wpa_supplicant \ + -iwigig0 -Dnl80211 -c/data/vendor/wifi/wigig_supplicant.conf \ + -m/data/vendor/wifi/wigig_p2p_supplicant.conf \ + -O/data/vendor/wifi/wigig_sockets -dd \ + -e/data/vendor/wifi/wigig_entropy.bin -g@android:wigig/wpa_wigig0 \ + -S wigigsvc + # we will start as root and wpa_supplicant will switch to user wifi + # after setting up the capabilities required for WEXT + # user wifi + # group wifi inet keystore + class main + socket wigig/wpa_wigig0 dgram 660 wifi wifi + disabled + oneshot + +# Data Migration +service vendor.move_wifi_data /system/bin/move_wifi_data.sh + class main + user wifi + group wifi + disabled + oneshot + +service wigignpt /vendor/bin/wigignpt + interface vendor.qti.hardware.wigig.netperftuner@1.0::INetPerfTuner default + class hal + socket wigig/wigignpt stream 660 system wifi + user system + group wifi + capabilities NET_ADMIN + disabled + +on property:persist.vendor.wigig.npt.enable=1 + start wigignpt + +service vendor.sensingdaemon /vendor/bin/sensingdaemon + class hal + socket wigig/sensingdaemon stream 660 system wifi + user system + group wifi + disabled + +service dhcpcd_wlan0 /system/bin/dhcpcd -ABKLG + class late_start + disabled + oneshot + +service dhcpcd_bond0 /system/bin/dhcpcd -ABKLG + class late_start + disabled + oneshot + +service dhcpcd_p2p /system/bin/dhcpcd -ABKLG + class late_start + disabled + oneshot + +service dhcpcd_wigig0 /system/bin/dhcpcd -ABKLG + class late_start + disabled + oneshot + +service iprenew_wlan0 /system/bin/dhcpcd -n + class late_start + disabled + oneshot + +service iprenew_bond0 /system/bin/dhcpcd -n + class late_start + disabled + oneshot + +service iprenew_p2p /system/bin/dhcpcd -n + class late_start + disabled + oneshot + +service iprenew_wigig0 /system/bin/dhcpcd -n + class late_start + disabled + oneshot + +service ptt_socket_app /system/vendor/bin/ptt_socket_app -d + class main + user wifi + group wifi system inet net_admin + capabilities NET_ADMIN + oneshot + +service ptt_ffbm /system/vendor/bin/ptt_socket_app -f -d + user root + group root + disabled + oneshot + +service wifi_ftmd /system/vendor/bin/wifi_ftmd + user system + group system inet net_admin + socket wififtmd_server dgram 0660 system system + disabled + oneshot + +on property:vendor.wifi.ftmd.load=true + insmod /system/lib/modules/pronto/pronto_wlan.ko con_mode=5 + +service cnss-daemon /system/vendor/bin/cnss-daemon -n -l + class late_start + user system + group system inet net_admin wifi + capabilities NET_ADMIN + +on property:sys.shutdown.requested=* + write /sys/kernel/shutdown_wlan/shutdown 1 + stop cnss-daemon + +service dhcpcd_bt-pan /system/bin/dhcpcd -BKLG + class late_start + disabled + oneshot + +service iprenew_bt-pan /system/bin/dhcpcd -n + class late_start + disabled + oneshot + +#service ssgqmigd /vendor/bin/ssgqmigd +# class late_start +# user radio +# group radio gps system +# socket ssgqmig seqpacket 0660 radio inet + +service mlid /vendor/bin/mlid + class late_start + user gps + group gps + socket mlid stream 0666 gps gps + +service loc_launcher /system/vendor/bin/loc_launcher + class late_start + user gps + group gps + +service drmdiag /system/vendor/bin/drmdiagapp + class late_start + user root + disabled + oneshot + +on property:drmdiag.load=1 + start drmdiag + +on property:drmdiag.load=0 + stop drmdiag + +service qcom-sh /vendor/bin/init.qcom.sh + class late_start + user root + group root system radio + oneshot + +service vendor-sensor-sh /vendor/bin/init.qcom.sensors.sh + class core + user root + oneshot + +service crashdata-sh /vendor/bin/init.qcom.crashdata.sh + class late_start + user root + oneshot + +service qcom-post-boot /vendor/bin/init.qcom.post_boot.sh + class late_start + user root + group root system wakelock graphics + disabled + oneshot + +service wifi-sdio-on /vendor/bin/init.qcom.sdio.sh + class late_start + group wifi inet + disabled + oneshot + +service wifi-crda /vendor/bin/init.crda.sh + class late_start + user root + disabled + oneshot + +on property:sys.boot_completed=1 + start qcom-post-boot + +on property:ro.vendor.ril.mbn_copy_completed=1 + write /data/vendor/radio/copy_complete 1 + +service qvop-daemon /vendor/bin/qvop-daemon + class late_start + user system + group system drmrpc + +service vendor.atfwd /vendor/bin/ATFWD-daemon + class late_start + user system + group system radio + +service hostapd_fst /vendor/bin/hw/hostapd -dd -g /data/vendor/wifi/hostapd/global + class main + capabilities NET_ADMIN NET_RAW + user wifi + group wifi + disabled + oneshot + +service vendor.wigig_hostapd /vendor/bin/hw/hostapd -dd -j wigighostapd /data/vendor/wifi/hostapd/wigig_hostapd.conf + class late_start + capabilities NET_ADMIN NET_RAW + user wifi + group wifi inet keystore + oneshot + disabled + +service ims_regmanager /system/vendor/bin/exe-ims-regmanagerprocessnative + class late_start + group net_bt_admin inet radio wifi + disabled + +on property:persist.ims.regmanager.mode=1 + start ims_regmanager + +on property:ro.data.large_tcp_window_size=true + # Adjust socket buffer to enlarge TCP receive window for high bandwidth (e.g. DO-RevB) + write /proc/sys/net/ipv4/tcp_adv_win_scale 2 + +service battery_monitor /system/bin/battery_monitor + user system + group system + disabled + +service vendor.ril-daemon2 /vendor/bin/hw/rild -c 2 + class main + user radio + disabled + group radio cache inet misc audio sdcard_r sdcard_rw diag oem_2901 log + capabilities BLOCK_SUSPEND NET_ADMIN NET_RAW + +service vendor.ril-daemon3 /vendor/bin/hw/rild -c 3 + class main + user radio + disabled + group radio cache inet misc audio sdcard_r sdcard_rw diag oem_2901 log + capabilities BLOCK_SUSPEND NET_ADMIN NET_RAW + +service profiler_daemon /system/bin/profiler_daemon + class late_start + user root + group root + disabled + +service vendor.ssr_diag /system/vendor/bin/ssr_diag + class late_start + user system + group system + disabled + +service hvdcp /system/bin/hvdcp + class core + user root + disabled + +on property:persist.usb.hvdcp.detect=true + start hvdcp + +on property:persist.usb.hvdcp.detect=false + stop hvdcp + +service charger_monitor /system/bin/charger_monitor + user root + group root + disabled + +service qbcharger /charger -m 1 + disabled + oneshot + +on property:sys.qbcharger.enable=true + start qbcharger + +on property:sys.qbcharger.enable=false + stop qbcharger + +#service diag_mdlog_start /system/vendor/bin/diag_mdlog +# class late_start +# user shell +# group system oem_2901 sdcard_rw sdcard_r media_rw +# disabled +# oneshot + +#service diag_mdlog_stop /system/vendor/bin/diag_mdlog -k +# class late_start +# user shell +# group system oem_2901 sdcard_rw sdcard_r media_rw +# disabled +# oneshot + +service qlogd /system/xbin/qlogd + socket qlogd stream 0662 system system + class main + disabled +on property:persist.sys.qlogd=1 + start qlogd +on property:persist.sys.qlogd=0 + stop qlogd + +service vm_bms /vendor/bin/vm_bms + user root + group root + disabled + +service vendor.msm_irqbalance /vendor/bin/msm_irqbalance -f /system/vendor/etc/msm_irqbalance.conf + class core + user root + group root + disabled + +service vendor.msm_irqbal_lb /vendor/bin/msm_irqbalance -f /system/vendor/etc/msm_irqbalance_little_big.conf + class core + user root + group root + disabled + +service vendor.msm_irqbl_sdm630 /vendor/bin/msm_irqbalance -f /system/vendor/etc/msm_irqbalance_sdm630.conf + class core + user root + group root + disabled + +# service for USERDEBUG +service vendor.LKCore-dbg /vendor/bin/LKCore + class late_start + oneshot + disabled + user root + group root system log diag net_raw + +# service for USER +service vendor.LKCore-rel /vendor/bin/LKCore + class late_start + oneshot + disabled + user system + group system log diag + +service qseeproxydaemon /system/vendor/bin/qseeproxydaemon + class late_start + user system + group system + +service esepmdaemon /system/vendor/bin/esepmdaemon + class core + user system + group nfc + +#add poweroffhandler +service poweroffhandler /system/vendor/bin/poweroffhandler + class core + user media + group graphics audio + disabled + oneshot + +on property:vendor.display.lcd_density=* + setprop ro.sf.lcd_density ${vendor.display.lcd_density} + +# Logcat dump daemon, dumps logs to logdump partition +service logdumpd /system/bin/logcat -b all -v threadtime -D -w /dev/block/bootdevice/by-name/logdump + class core + writepid /dev/cpuset/system-background/tasks + seclabel u:r:logdumpd:s0 + disabled + +# Logdumpd is enabled only for userdebug non-perf build +on property:ro.logdumpd.enabled=1 + start logdumpd + +service time_daemon /vendor/bin/time_daemon + class main + user system + group system + capabilities SYS_TIME + +# Set vendor-ril lib path based on Meta version +on property:vendor.rild.libpath=* + setprop rild.libpath ${vendor.rild.libpath} + +on property:ro.vendor.radio.noril=* + setprop ro.radio.noril ${ro.vendor.radio.noril} + +service seemp_healthd /vendor/bin/seemp_healthd + class late_start + user system + group system + +service vendor.power_off_alarm /vendor/bin/power_off_alarm + class core + group system + disabled + oneshot + +service vendor.move_time_data /system/bin/move_time_data.sh + class main + user system + group system + disabled + oneshot + +service vendor.hbtp /vendor/bin/hbtp_daemon + class main + user system + group system + capabilities SYS_NICE + disabled + +#service chre /vendor/bin/chre +# class late_start +# user system +# group system +# socket chre seqpacket 0660 root system +# shutdown critical + +on property:vendor.chre.enabled=0 + stop chre + +service bugreport /system/bin/dumpstate -d -p -B -z -o /data/user_de/0/com.android.shell/files/bugreports/bugreport + class main + disabled + oneshot + keycodes 114 115 116 + +#Set GPU Opengles version +on property:vendor.opengles.version=* + setprop ro.opengles.version ${vendor.opengles.version} + +#Set gpu available frequencies property +on property:vendor.gpu.available_frequencies=* + setprop ro.vendor.gpu.available_frequencies ${vendor.gpu.available_frequencies} + +service vendor.audio-hal-2-0 /vendor/bin/hw/android.hardware.audio@2.0-service + override + class hal + user audioserver + # media gid needed for /dev/fm (radio) and for /data/misc/media (tee) + group audio camera drmrpc inet media mediadrm net_bt net_bt_admin net_bw_acct oem_2901 wakelock + capabilities BLOCK_SUSPEND SYS_NICE + ioprio rt 4 + writepid /dev/cpuset/foreground/tasks /dev/stune/foreground/tasks + # audioflinger restarts itself when it loses connection with the hal + # and its .rc file has an "onrestart restart audio-hal" rule, thus + # an additional auto-restart from the init process isn't needed. + oneshot + interface android.hardware.audio@5.0::IDevicesFactory default + interface android.hardware.audio@4.0::IDevicesFactory default + interface android.hardware.audio@2.0::IDevicesFactory default + +service vendor.contexthub-hal-1-0 /vendor/bin/hw/android.hardware.contexthub@1.0-service + override + class hal + interface android.hardware.contexthub@1.0::IContexthub default + user system + group system + disabled diff --git a/rootdir/etc/init.target.rc b/rootdir/etc/init.target.rc new file mode 100644 index 0000000..e8229a8 --- /dev/null +++ b/rootdir/etc/init.target.rc @@ -0,0 +1,154 @@ +# Copyright (c) 2018-2020, 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. +# +# +import /vendor/etc/init/hw/init.mmi.rc + +on early-init + exec u:r:vendor_modprobe:s0 -- /vendor/bin/modprobe -a -d /vendor/lib/modules audio_q6_pdr audio_q6_notifier audio_snd_event audio_apr audio_adsp_loader audio_q6 audio_native audio_usf audio_pinctrl_lpi audio_swr audio_swr_ctrl audio_platform audio_stub audio_wcd_core audio_wcd9xxx audio_wsa881x_analog audio_bolero_cdc audio_va_macro audio_rx_macro audio_tx_macro audio_mbhc audio_wcd937x audio_wcd937x_slave audio_pm2250_spmi audio_rouleur audio_rouleur_slave audio_machine_bengal + write /proc/sys/kernel/sched_boost 1 + +on init + write /dev/stune/foreground/schedtune.sched_boost_no_override 1 + write /dev/stune/top-app/schedtune.sched_boost_no_override 1 + write /dev/stune/schedtune.colocate 0 + write /dev/stune/background/schedtune.colocate 0 + write /dev/stune/system-background/schedtune.colocate 0 + write /dev/stune/foreground/schedtune.colocate 0 + write /dev/stune/top-app/schedtune.colocate 1 + #Moving to init as this is needed for qseecomd + wait /dev/block/platform/soc/${ro.boot.bootdevice} + symlink /dev/block/platform/soc/${ro.boot.bootdevice} /dev/block/bootdevice + start vendor.qseecomd + start keymaster-4-0 + +on early-fs + start vold + +on fs + start hwservicemanager + mount_all /vendor/etc/fstab.qcom --early + chown root system /mnt/vendor/persist + chmod 0771 /mnt/vendor/persist + restorecon_recursive /mnt/vendor/persist + mkdir /mnt/vendor/persist/data 0700 system system + +on post-fs + # set RLIMIT_MEMLOCK to 64MB + setrlimit 8 67108864 67108864 + +on late-fs + wait_for_prop hwservicemanager.ready true + exec_start wait_for_keymaster + mount_all /vendor/etc/fstab.qcom --late + +on post-fs-data + mkdir /vendor/data/tombstones 0771 system system + mkdir /data/vendor/tloc 0700 system drmrpc + +on early-boot + start vendor.sensors + +on boot +#USB controller configuration + setprop vendor.usb.rndis.func.name "gsi" + setprop vendor.usb.rmnet.func.name "gsi" + setprop vendor.usb.rmnet.inst.name "rmnet" + setprop vendor.usb.dpl.inst.name "dpl" + setprop vendor.usb.qdss.inst.name "qdss" + setprop vendor.usb.controller 4e00000.dwc3 + +#Load WLAN driver + insmod /vendor/lib/modules/qca_cld3_wlan.ko + +on boot && property:persist.vendor.usb.controller.default=* + setprop vendor.usb.controller ${persist.vendor.usb.controller.default} + +on property:vendor.usb.controller=* + setprop sys.usb.controller ${vendor.usb.controller} + +on charger + start vendor.power_off_alarm + setprop vendor.usb.controller 4e00000.dwc3 + setprop sys.usb.configfs 1 + +#heap_growth_limit +on property:vendor.display.lcd_density=480 + setprop dalvik.vm.heapgrowthlimit 128m +on property:vendor.display.lcd_density=240 + setprop dalvik.vm.heapgrowthlimit 96m +on property:vendor.display.lcd_density=160 + setprop dalvik.vm.heapgrowthlimit 96m + +#pd-mapper +service vendor.pd_mapper /vendor/bin/pd-mapper + class core + user system + group system log diag + +#Peripheral manager +service vendor.per_mgr /vendor/bin/pm-service + class core + user system + group system + ioprio rt 4 + +service vendor.per_proxy /vendor/bin/pm-proxy + class core + user system + group system + disabled + +service vendor.mdm_helper /vendor/bin/mdm_helper + class core + group system wakelock + disabled + +service vendor.mdm_launcher /vendor/bin/sh /vendor/bin/init.mdm.sh + class core + oneshot + +on property:init.svc.vendor.per_mgr=running + start vendor.per_proxy + +on property:sys.shutdown.requested=* + stop vendor.per_proxy + +service vendor.tlocd /vendor/bin/tloc_daemon + class late_start + user system + group drmrpc gps net_raw + +on property:vold.decrypt=trigger_restart_framework + start vendor.wlan_logging + +service vendor.wlan_logging /system/vendor/bin/cnss_diag -q -f -t HELIUM + class main + user system + group system wifi inet sdcard_rw media_rw diag + oneshot + disabled diff --git a/rootdir/etc/ueventd.qcom.rc b/rootdir/etc/ueventd.qcom.rc new file mode 100644 index 0000000..df0e8c1 --- /dev/null +++ b/rootdir/etc/ueventd.qcom.rc @@ -0,0 +1,427 @@ +# Copyright (c) 2012-2015, 2017-2020, 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. +# + +# Firmware directory Path +# Below macro will be read by uevent and path will +# be added to search path for firmware loading +firmware_directories /vendor/firmware_mnt/image/ + +# the DIAG device node is not world writable/readable. +/dev/diag 0660 system oem_2901 +/dev/ttydiag0 0660 system oem_2901 +/dev/ttydiag1 0660 system oem_2901 +/dev/ttydiag2 0660 system oem_2901 + +/dev/genlock 0666 system system +/dev/wlan 0660 wifi wifi +/dev/kgsl 0666 system system +/dev/kgsl-3d0 0666 system system +/dev/kgsl-2d0 0666 root root +/dev/kgsl-2d1 0666 root root +/dev/ion 0664 system system +/dev/rtc0 0660 system system +/dev/smd0 0660 system system +/dev/smd4 0660 system system +/dev/smd_cxm_qmi 0640 radio radio +/dev/smd5 0660 system system +/dev/smd6 0660 system system +/dev/smd7 0660 bluetooth bluetooth +/dev/ccid_bridge 0660 system system +/dev/ipa 0660 radio radio +/dev/wwan_ioctl 0660 radio radio +/dev/ipaNatTable 0660 radio radio +/dev/rmnet_ctrl 0660 usb usb +/dev/dpl_ctrl 0660 usb usb +/dev/ipa_odl_ctl 0660 radio radio +/dev/ipa_adpl 0660 system oem_2905 +/dev/synx_device 0660 root camera +/dev/hab 0666 system system + +#permissions for CSVT +/dev/smd11 0660 radio radio + +#permsissions for BT/FM +/dev/smd2 0660 bluetooth bluetooth +/dev/smd3 0660 bluetooth bluetooth +/dev/btpower 0660 bluetooth system + +#permissions for pta +/dev/pta 0660 system system + +/dev/radio0 0640 system system +/dev/rfcomm0 0660 bluetooth bluetooth +/dev/ttyUSB0 0660 bluetooth bluetooth +/dev/smdcntl0 0640 radio radio +/dev/smdcntl1 0640 radio radio +/dev/smdcntl2 0640 radio radio +/dev/smdcntl3 0640 radio radio +/dev/smdcntl4 0640 radio radio +/dev/smdcntl5 0640 radio radio +/dev/smdcntl6 0640 radio radio +/dev/smdcntl7 0640 radio radio +/dev/smdcntl8 0640 radio radio +/dev/smdcnt_rev0 0640 radio radio +/dev/smdcnt_rev1 0640 radio radio +/dev/smdcnt_rev2 0640 radio radio +/dev/smdcnt_rev3 0640 radio radio +/dev/smdcnt_rev4 0640 radio radio +/dev/smdcnt_rev5 0640 radio radio +/dev/smdcnt_rev6 0640 radio radio +/dev/smdcnt_rev7 0640 radio radio +/dev/smdcnt_rev8 0640 radio radio +/dev/smuxctl32 0640 radio radio +/dev/sdioctl0 0640 radio radio +/dev/sdioctl1 0640 radio radio +/dev/sdioctl2 0640 radio radio +/dev/sdioctl3 0640 radio radio +/dev/sdioctl4 0640 radio radio +/dev/sdioctl5 0640 radio radio +/dev/sdioctl6 0640 radio radio +/dev/sdioctl7 0640 radio radio +/dev/sdioctl8 0640 radio radio +/dev/rmnet_mux_ctrl 0640 radio radio +/dev/hsicctl0 0640 radio radio +/dev/hsicctl1 0640 radio radio +/dev/hsicctl2 0640 radio radio +/dev/hsicctl3 0640 radio radio +/dev/hsicctl4 0640 radio radio +/dev/hsicctl5 0640 radio radio +/dev/hsicctl6 0640 radio radio +/dev/hsicctl7 0640 radio radio +/dev/hsicctl8 0640 radio radio +/dev/hsicctl9 0640 radio radio +/dev/hsicctl10 0640 radio radio +/dev/hsicctl11 0640 radio radio +/dev/hsicctl12 0640 radio radio +/dev/hsicctl13 0640 radio radio +/dev/hsicctl14 0640 radio radio +/dev/hsicctl15 0640 radio radio +/dev/hsicctl16 0640 radio radio +/dev/mhi_*_pipe_14 0640 radio radio +/dev/mhi_*_pipe_16 0640 radio radio +/dev/mhi_*_pipe_32 0640 radio radio +/dev/at_usb0 0640 radio radio +/dev/at_mdm0 0640 radio radio +/dev/video* 0660 system camera +/dev/cvp* 0660 system camera +/dev/media* 0660 system camera +/dev/v4l-subdev* 0660 system camera +/dev/qseecom 0660 system drmrpc +/dev/qce 0660 system drmrpc +/dev/smcinvoke 0660 system drmrpc +/dev/qsee_ipc_irq_spss 0660 system drmrpc +/dev/seemplog 0660 system system +/dev/pft 0660 system drmrpc +/dev/spcom 0660 system system +/dev/spss_utils 0660 system system +/dev/sp_kernel 0660 system system +/dev/sp_nvm 0660 system system +/dev/sp_ssr 0660 system system +/dev/sp_keymaster 0660 system system +/dev/sec_nvm_* 0660 system system +/dev/cryptoapp 0660 system system +/dev/spdaemon_ssr 0660 system system +/dev/spu_hal_ssr 0660 system system +/dev/iuicc* 0660 system system +/dev/gemini0 0660 system camera +/dev/jpeg0 0660 system camera +/dev/jpeg1 0660 system camera +/dev/jpeg2 0660 system camera +/dev/jpeg3 0660 system camera +/dev/adsprpc-smd 0664 system system +/dev/adsprpc-smd-secure 0644 system system +/dev/system_health_monitor 0644 radio system +/dev/mdss_rotator 0664 system system + +#QDSS +/dev/byte-cntr 0660 system oem_2902 +/dev/mhi_qdss 0660 system oem_2902 +/sys/class/qdss_bridge/mhi_qdss mode 0660 system oem_2902 + +#qg +/dev/qg 0660 system system +/dev/qg_battery 0660 system system + +#qvr +/dev/qvr_external_sensor_ioctl 0660 system system +/sys/kernel/qvr_external_sensor/fd 0660 system system + +# wlan +/dev/wcnss_wlan 0660 system system +/dev/wcnss_ctrl 0660 system system +/sys/devices/soc/a000000.qcom,wcnss-wlan/net/wlan0/queues/rx-* rps_cpus 0660 system system +/sys/devices/soc/a000000.qcom,wcnss-wlan/net/p2p0/queues/rx-* rps_cpus 0660 system system +/dev/spidev0.0 0660 system audio +/dev/i2c-7 0660 system audio +/dev/msm_camera/* 0660 system camera +/dev/gemini/ 0660 system camera +/dev/mercury0 0660 system camera +/dev/msm_vidc_reg 0660 system audio +/dev/msm_vidc_dec 0660 system audio +/dev/msm_vidc_dec_sec 0660 system audio +/dev/msm_vidc_enc 0660 system audio +/dev/msm_rotator 0660 system system +/dev/hw_random 0600 root root +/dev/sdsprpc-smd 0660 system system + +#permissions for audio +/dev/wcd_dsp0_control 0660 system audio +/dev/wcd-dsp-glink 0660 system audio +/dev/audio_slimslave 0660 system audio +/dev/msm_qcelp 0660 system audio +/dev/msm_evrc 0660 system audio +/dev/msm_wma 0660 system audio +/dev/msm_wmapro 0660 system audio +/dev/msm_alac 0660 system audio +/dev/msm_ape 0660 system audio +/dev/msm_amrnb 0660 system audio +/dev/msm_amrwb 0660 system audio +/dev/msm_amrwbplus 0660 system audio +/dev/msm_aac 0660 system audio +/dev/msm_multi_aac 0660 system audio +/dev/msm_aac_in 0660 system audio +/dev/msm_qcelp_in 0660 system audio +/dev/msm_evrc_in 0660 system audio +/dev/msm_amrnb_in 0660 system audio +/dev/msm_amrwb_in 0660 system audio +/dev/msm_a2dp_in 0660 system audio +/dev/msm_ac3 0660 system audio +/dev/msm_audio_cal 0660 system audio +/dev/msm_hweffects 0660 system audio +/dev/msm_cad 0660 system audio +/dev/msm_fm 0660 system audio +/dev/msm_mvs 0660 system audio +/dev/msm_pcm_lp_dec 0660 system audio +/dev/msm_preproc_ctl 0660 system audio +/dev/msm_rtac 0660 system audio +/dev/msm_voicememo 0660 system audio +/dev/ttyHSL1 0660 system system +/dev/ttyHS1 0660 system system +/dev/mdm 0660 system radio +/sys/devices/virtual/smdpkt/smdcntl* open_timeout 0664 radio radio +/dev/sdio_tty_ciq_00 0660 system system +/dev/tty_sdio_00 0660 system system +/dev/ttyGS0 0660 system system +/dev/i2c-5 0660 media media +/dev/avtimer 0660 system audio +/dev/spidev2.0 0660 system audio +/dev/aud_pasthru_adsp 0660 system audio +# DVB devices +/dev/dvb/adapter0/demux* 0440 media media +/dev/dvb/adapter0/dvr* 0660 media media +/dev/dvb/adapter0/video* 0660 media media + +# Broadcast devices +/dev/tsc_mux0 0660 media media +/dev/tsc_ci0 0660 media media + +# sensors +/dev/sensors 0660 system system +/sys/devices/i2c-12/12-* pollrate_ms 0664 system system +/sys/devices/f9925000.i2c/i2c-0/0-* enable 0660 input system +/sys/devices/f9925000.i2c/i2c-0/0-* poll_delay 0660 input system +/sys/devices/soc.0/78b6000.i2c/i2c-0/0-* enable 0660 input system +/sys/devices/soc.0/78b6000.i2c/i2c-0/0-* poll_delay 0660 input system +/sys/devices/soc.0/78b6000.i2c/i2c-0/0-* enable_wakeup 0660 input system +/sys/devices/soc.0/78b6000.i2c/i2c-0/0-* max_latency 0660 input system +/sys/devices/soc.0/78b6000.i2c/i2c-0/0-* flush 0660 input system +/sys/devices/soc.0/78b6000.i2c/i2c-0/0-* calibrate 0660 input system +/sys/devices/soc.0/78b5000.i2c/i2c-1/1-* enable 0660 input system +/sys/devices/soc.0/78b5000.i2c/i2c-1/1-* poll_delay 0660 input system +/sys/devices/soc.0/78b5000.i2c/i2c-1/1-* enable_wakeup 0660 input system +/sys/devices/soc.0/78b5000.i2c/i2c-1/1-* max_latency 0660 input system +/sys/devices/soc.0/78b5000.i2c/i2c-1/1-* flush 0660 input system +/sys/devices/soc.0/78b5000.i2c/i2c-1/1-* calibrate 0660 input system +/sys/devices/virtual/optical_sensors/proximity ps_adc 0660 input system +/sys/devices/virtual/optical_sensors/proximity ps_poll_delay 0660 input system +/sys/devices/virtual/optical_sensors/lightsensor ls_auto 0660 input system +/sys/devices/virtual/optical_sensors/lightsensor ls_poll_delay 0660 input system +/sys/devices/virtual/input/input* poll 0660 input system +/sys/devices/virtual/input/input* pollrate_ms 0660 input system +/sys/devices/soc/78b7000.i2c/i2c-3/3-0020/input/input* secure_touch 0440 system drmrpc +/sys/devices/soc/78b7000.i2c/i2c-3/3-0020/input/input* secure_touch_enable 0660 system drmrpc +/sys/devices/soc/78b7000.i2c/i2c-3/3-0038/input/input* secure_touch 0440 system drmrpc +/sys/devices/soc/78b7000.i2c/i2c-3/3-0038/input/input* secure_touch_enable 0660 system drmrpc +/sys/devices/soc/78b7000.i2c/i2c-3/3-004b/input/input* secure_touch 0440 system drmrpc +/sys/devices/soc/78b7000.i2c/i2c-3/3-004b/input/input* secure_touch_enable 0660 system drmrpc +/sys/devices/soc/c179000.i2c/i2c-5/5-0020/input/input* secure_touch 0440 system drmrpc +/sys/devices/soc/c179000.i2c/i2c-5/5-0020/input/input* secure_touch_enable 0660 system drmrpc +/sys/devices/platform/soc/a98000.i2c/i2c-2/2-0020/input/input* secure_touch 0440 system drmrpc +/sys/devices/platform/soc/a98000.i2c/i2c-2/2-0020/input/input* secure_touch_enable 0660 system drmrpc +/sys/devices/platform/soc/a84000.i2c/i2c-2/2-0020/input/input* secure_touch 0440 system drmrpc +/sys/devices/platform/soc/a84000.i2c/i2c-2/2-0020/input/input* secure_touch_enable 0660 system drmrpc + +# GNSS Device premissions +/dev/gnss_sirf 0660 gps gps + +# laser sensor access +/sys/devices/virtual/input/input* enable_ps_sensor 0660 system input +/sys/devices/virtual/input/input* set_delay_ms 0660 system input +/sys/devices/virtual/input/input* do_flush 0660 system input +/dev/laser 0660 system camera + +# vm_bms +/dev/vm_bms 0660 system system +/dev/battery_data 0660 system system + +# wlan +/dev/wcnss_wlan 0660 system system +/dev/wcnss_ctrl 0660 system system +/sys/devices/soc/600000.qcom,pcie/pci0000:00/0000:00:00.0/0000:01:00.0/net/wlan0/queues/rx-* rps_cpus 0660 system system +/sys/devices/soc/600000.qcom,pcie/pci0000:00/0000:00:00.0/0000:01:00.0/net/p2p0/queues/rx-* rps_cpus 0660 system system + +# wigig +/sys/bus/pci/drivers/wil6210* 0000:01:00.0/wil6210/fst_link_loss 0660 wifi wifi +/sys/bus/pci/drivers/wil6210* 0000:01:00.0/wil6210/thermal_throttling 0660 system system +/sys/bus/pci/drivers/wil6210* 0000:01:00.0/wil6210/snr_thresh 0660 wifi wifi +/sys/bus/pci/drivers/wil6210* 0000:01:00.0/net/wigig0/queues/rx-0/rps_cpus 0660 system system +/sys/bus/pci/drivers/wil6210* 0000:01:00.0/net/wigig0/gro_flush_timeout 0660 system system +/sys/devices/virtual/net/bond0 queues/rx-0/rps_cpus 0660 system system +/dev/wigig_sensing 0660 system system + +#nfc permissions +/dev/nfc-nci 0660 nfc nfc +/dev/nq-nci 0660 nfc nfc +/dev/assd 0660 nfc nfc + +# UIO devices +/dev/uio0 0660 system system +/dev/uio1 0660 system system +/dev/uio2 0660 system system + +# SSR devices +/dev/subsys_* 0640 system system + +# Ultrasound device +/dev/usf1 0660 system system + +# Ramdump devices +/dev/ramdump* 0640 system system + +# Fingerprint device +/dev/qbt* 0660 system system +/sys/class/fts/touch_aoi aoi_set 0660 root system +/sys/class/fts/touch_aoi power_set 0660 root system + +#ImproveTouch device +/dev/hbtp_input 0660 system system +/dev/hbtp_vm 0660 system system + +# Add device block for FRP +/dev/block/platform/soc/7824900.sdhci/by-name/config 0600 system system +/dev/block/platform/soc/7464900.sdhci/by-name/frp 0600 system system +/dev/block/platform/soc/624000.ufshc/by-name/frp 0600 system system +/dev/block/platform/soc/1da4000.ufshc/by-name/frp 0600 system system +/dev/block/platform/soc/c0c4000.sdhci/by-name/frp 0600 system system +/dev/block/platform/soc/1d84000.ufshc/by-name/frp 0600 system system +/dev/block/platform/soc/7c4000.sdhci/by-name/frp 0600 system system +/dev/block/platform/soc/4744000.sdhci/by-name/frp 0600 system system +/dev/block/platform/soc/4804000.ufshc/by-name/frp 0600 system system + +# This is temporary while using SD card for initial bring-up +/dev/block/platform/soc/8804000.sdhci/by-name/frp 0600 system system + +# Kmsg device +/dev/kmsg 0620 root system + +# LED class devices +/sys/class/leds/red delay_on 0640 system system +/sys/class/leds/red delay_off 0640 system system +/sys/class/leds/red breath 0640 system system +/sys/class/leds/green delay_on 0640 system system +/sys/class/leds/green delay_off 0640 system system +/sys/class/leds/green breath 0640 system system +/sys/class/leds/blue delay_on 0640 system system +/sys/class/leds/blue delay_off 0640 system system +/sys/class/leds/blue breath 0640 system system + +# LED class vibrator +/sys/class/leds/vibrator state 0660 system system +/sys/class/leds/vibrator duration 0660 system system +/sys/class/leds/vibrator activate 0660 system system +/sys/class/leds/vibrator extra 0660 system system +/sys/class/leds/vibrator seq 0660 system system + +# NPU device +/dev/msm_npu 0644 system system + +# Egistec fingerprint +/dev/esfp0 0660 system system + +# Goodix FPS +/dev/goodix_fp 0664 system system + +# Change permission for FPC fingerprint +/sys/class/fingerprint/fpc1020 nav 0440 system system +/sys/class/fingerprint/fpc1020 irq 0440 system system +/sys/class/fingerprint/fpc1020 irq_cnt 0440 system system +/sys/class/fingerprint/fpc1020 dev_enable 0220 system system +/sys/class/fingerprint/fpc1020 vendor 0444 system system + +#Memory Offline +/sys/devices/system/memory/memory* state 0660 system system + +/sys/devices/virtual/hdcp/msm_hdcp min_level_change 0664 system graphics + +# sys-fs display +/sys/class/graphics/fb* hpd 0664 system graphics +/sys/class/graphics/fb* res_info 0664 system graphics +/sys/class/graphics/fb* vendor_name 0664 system graphics +/sys/class/graphics/fb* product_description 0664 system graphics +/sys/class/graphics/fb* video_mode 0664 system graphics +/sys/class/graphics/fb* format_3d 0664 system graphics +/sys/class/graphics/fb* s3d_mode 0664 system graphics +/sys/class/graphics/fb* dynamic_fps 0664 system graphics +/sys/class/graphics/fb* msm_fb_dfps_mode 0664 system graphics +/sys/class/graphics/fb* hdr_stream 0664 system graphics +/sys/class/graphics/fb* cec/enable 0664 system graphics +/sys/class/graphics/fb* cec/logical_addr 0664 system graphics +/sys/class/graphics/fb* cec/rd_msg 0664 system graphics +/sys/class/graphics/fb* pa 0664 system graphics +/sys/class/graphics/fb* cec/wr_msg 0600 system graphics +/sys/class/graphics/fb* hdcp/tp 0664 system graphics +/sys/class/graphics/fb* hdcp2p2/min_level_change 0660 system graphics +/sys/class/graphics/fb* hdmi_audio_cb 0600 audioserver audio + +/sys/class/graphics/fb* lineptr_value 0664 system graphics +/sys/class/graphics/fb* msm_fb_persist_mode 0664 system graphics + +/sys/class/graphics/fb0 idle_time 0664 system graphics +/sys/class/graphics/fb0 dynamic_fps 0664 system graphics +/sys/class/graphics/fb0 dyn_pu 0664 system graphics +/sys/class/graphics/fb0 modes 0664 system graphics +/sys/class/graphics/fb0 mode 0664 system graphics +/sys/class/graphics/fb0 msm_cmd_autorefresh_en 0664 system graphics +/sys/class/kgsl/kgsl-3d0 pwrscale 0664 root system +/sys/class/kgsl/kgsl-3d0 devfreq/governor 0664 root system +/sys/class/kgsl/kgsl-3d0 force_rail_on 0664 root system +/sys/class/kgsl/kgsl-3d0 force_bus_on 0664 root system +/sys/class/kgsl/kgsl-3d0 force_clk_on 0664 root system +/sys/class/kgsl/kgsl-3d0 bus_split 0664 root system + +# I2C +/dev/i2c-* 0660 system system diff --git a/seccomp/configstore@1.1.policy b/seccomp/configstore@1.1.policy new file mode 100644 index 0000000..937fddd --- /dev/null +++ b/seccomp/configstore@1.1.policy @@ -0,0 +1,56 @@ +# Copyright (C) 2017 The Android Open Source Project +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +futex: 1 +# ioctl: arg1 == BINDER_WRITE_READ +ioctl: arg1 == 0xc0306201 +# prctl: arg0 == PR_SET_NAME || arg0 == PR_SET_VMA || arg0 == PR_SET_TIMERSLACK +# || arg0 == PR_GET_NO_NEW_PRIVS # used by crash_dump +# prctl: arg0 == 15 || arg0 == 0x53564d41 || arg0 == 29 || arg0 == 39 +# TODO(b/68162846) reduce scope of prctl() based on arguments +prctl: 1 +openat: 1 +mmap: 1 +mprotect: 1 +close: 1 +getuid: 1 +read: 1 +faccessat: 1 +write: 1 +fstat: 1 +clone: 1 +sched_setscheduler: 1 +munmap: 1 +lseek: 1 +sigaltstack: 1 +writev: 1 +setpriority: 1 +restart_syscall: 1 +exit: 1 +exit_group: 1 +rt_sigreturn: 1 +getrlimit: 1 +madvise: 1 +getdents64: 1 +clock_gettime: 1 +getpid: 1 + +# used during process crash by crash_dump to dump process info +rt_sigprocmask: 1 +rt_sigaction: 1 +# socket: arg0 == AF_LOCAL +socket: arg0 == 1 +connect: 1 +recvmsg: 1 +rt_tgsigqueueinfo: 1 diff --git a/seccomp/mediacodec.policy b/seccomp/mediacodec.policy new file mode 100644 index 0000000..3bf11a3 --- /dev/null +++ b/seccomp/mediacodec.policy @@ -0,0 +1,19 @@ +# device specific syscalls +# extension of services/mediacodec/minijail/seccomp_policy/mediacodec-seccomp-arm.policy +pselect6: 1 +eventfd2: 1 +sendto: 1 +recvfrom: 1 +_llseek: 1 +sysinfo: 1 +getcwd: 1 +getdents64: 1 +ARM_cacheflush: 1 +inotify_init1: 1 +inotify_add_watch: 1 +inotify_rm_watch: 1 +uname: 1 +ueventd: 1 +timer_create: 1 +timer_settime: 1 +rt_sigtimedwait: 1 diff --git a/sensors/hals.conf b/sensors/hals.conf new file mode 100644 index 0000000..cbd61a1 --- /dev/null +++ b/sensors/hals.conf @@ -0,0 +1,2 @@ +sensors.ssc.so +sensors.rp.so diff --git a/system.prop b/system.prop new file mode 100644 index 0000000..0d12046 --- /dev/null +++ b/system.prop @@ -0,0 +1,190 @@ + +# +# from device/qcom/qssi/system.prop +# +# +# system.prop for qssi +# + +rild.libpath=/vendor/lib64/libril-qc-hal-qmi.so +#rild.libargs=-d /dev/smd0 +persist.rild.nitz_plmn= +persist.rild.nitz_long_ons_0= +persist.rild.nitz_long_ons_1= +persist.rild.nitz_long_ons_2= +persist.rild.nitz_long_ons_3= +persist.rild.nitz_short_ons_0= +persist.rild.nitz_short_ons_1= +persist.rild.nitz_short_ons_2= +persist.rild.nitz_short_ons_3= +ril.subscription.types=NV,RUIM +DEVICE_PROVISIONED=1 +# Set network mode to (T/L/G/W/1X/EVDO, T/L/G/W/1X/EVDO) for 7+7 mode device on DSDS mode +ro.telephony.default_network=22,22 + +dalvik.vm.heapsize=36m +dev.pm.dyn_samplingrate=1 + +#ro.hdmi.enable=true +#persist.speaker.prot.enable=false +qcom.hw.aac.encoder=true +# +# system props for the cne module +# +persist.vendor.cne.feature=1 + +#system props for the MM modules +media.stagefright.enable-player=true +media.stagefright.enable-http=true +media.stagefright.enable-aac=true +media.stagefright.enable-qcp=true +media.stagefright.enable-fma2dp=true +media.stagefright.enable-scan=true +media.stagefright.thumbnail.prefer_hw_codecs=true +media.settings.xml=/vendor/etc/media_profiles_vendor.xml +mmp.enable.3g2=true +media.aac_51_output_enabled=true +#13631487 is decimal sum of supported codecs in AAL +#codecs:(PARSER_)AAC AC3 AMR_NB AMR_WB ASF AVI DTS FLV 3GP 3G2 MKV MP2PS MP2TS MP3 OGG QCP WAV FLAC AIFF APE DSD MOV XVID MHAS +vendor.mm.enable.qcom_parser=131071999 +persist.mm.enable.prefetch=true + +#Netflix custom property +ro.netflix.bsp_rev=Q8250-19134-1 + + +# +# system props for the data modules +# +ro.vendor.use_data_netmgrd=true +persist.vendor.data.mode=concurrent + +#system props for time-services +persist.timed.enable=true + +# +# System props for telephony +# System prop to turn on CdmaLTEPhone always +telephony.lteOnCdmaDevice=1 + +#Simulate sdcard on /data/media +# +persist.fuse_sdcard=true + +#System props for BT +ro.bluetooth.library_name=libbluetooth_qti.so +persist.vendor.btstack.aac_frm_ctl.enabled=true + +# +#snapdragon value add features +# +ro.qc.sdk.audio.ssr=false + +##fluencetype can be "fluence" or "fluencepro" or "none" +ro.qc.sdk.audio.fluencetype=none +persist.audio.fluence.voicecall=true +persist.audio.fluence.voicerec=false +persist.audio.fluence.speaker=true + + +#enable offload audio video playback by default +audio.offload.video=true +# +##enable music through deep buffer +audio.deep_buffer.media=true +# +##set AudioFlinger client heap size +ro.af.client_heap_size_kbyte=7168 +# +#system prop for RmNet Data +persist.rmnet.data.enable=true +persist.data.wda.enable=true +persist.data.df.dl_mode=5 +persist.data.df.ul_mode=5 +persist.data.df.agg.dl_pkt=10 +persist.data.df.agg.dl_size=4096 +persist.data.df.mux_count=8 +persist.data.df.iwlan_mux=9 +persist.data.df.dev_name=rmnet_usb0 + +#property to enable user to access Google WFD settings +#persist.debug.wfd.enable=1 +##property to choose between virtual/external wfd display +persist.sys.wfd.virtual=0 + + +#property to enable HWC for VDS +debug.sf.enable_hwc_vds=1 + +#property to latch unsignaled buffer +debug.sf.latch_unsignaled=1 + +# enable tunnel encoding for amrwb +tunnel.audio.encode = true + +#Buffer size in kbytes for compress offload playback +audio.offload.buffer.size.kb=32 + +#Enable offload audio video playback by default +av.offload.enable=true + +#enable voice path for PCM VoIP by default +use.voice.path.for.pcm.voip=true + +# system prop for NFC DT +ro.nfc.port=I2C + +#enable dsp gapless mode by default +audio.offload.gapless.enabled=true + +#initialize QCA1530 detection +sys.qca1530=detect + +#Enable stm events +persist.debug.coresight.config=stm-events + +#hwui properties +ro.hwui.texture_cache_size=72 +ro.hwui.layer_cache_size=48 +ro.hwui.r_buffer_cache_size=8 +ro.hwui.path_cache_size=32 +ro.hwui.gradient_cache_size=1 +ro.hwui.drop_shadow_cache_size=6 +ro.hwui.texture_cache_flushrate=0.4 +ro.hwui.text_small_cache_width=1024 +ro.hwui.text_small_cache_height=1024 +ro.hwui.text_large_cache_width=2048 +ro.hwui.text_large_cache_height=1024 + +config.disable_rtt=true + +#Bringup properties +persist.sys.force_sw_gles=1 +persist.vendor.radio.atfwd.start=true +ro.kernel.qemu.gles=0 +qemu.hw.mainkeys=0 + +#Expose aux camera for below packages +vendor.camera.aux.packagelist=org.codeaurora.snapcam + +#Whitelisting the below packages +persist.vendor.camera.privapp.list=org.codeaurora.snapcam +persist.camera.privapp.list=org.codeaurora.snapcam + +#enable IZat OptInApp overlay +persist.vendor.overlay.izat.optin=rro + +#Property to enable Mag filter +persist.vendor.sensors.enable.mag_filter=true + +#Partition source order for Product/Build properties pickup. +ro.product.property_source_order=odm,vendor,product,product_services,system + +#Property to enable Codec2 for audio and OMX for Video +debug.stagefright.ccodec=1 + +# Expose CFA Config to specific apps +ro.camera.cfa.packagelist=com.motorola.coresettingsext,com.motorola.camera3,com.motorola.actions,com.motorola.camera2 +# end of device/qcom/qssi/system.prop + +# diff --git a/vendor.qti.gnss@3.0-service.xml b/vendor.qti.gnss@3.0-service.xml new file mode 100644 index 0000000..cd9a91c --- /dev/null +++ b/vendor.qti.gnss@3.0-service.xml @@ -0,0 +1,18 @@ + + + + vendor.qti.gnss + hwbinder + @1.2::ILocHidlGnss/gnss_vendor + @2.1::ILocHidlGnss/gnss_vendor + @3.0::ILocHidlGnss/gnss_vendor + + + android.hardware.gnss + hwbinder + @1.0::IGnss/gnss_vendor + + diff --git a/vendor.qti.hardware.display.allocator-service.xml b/vendor.qti.hardware.display.allocator-service.xml new file mode 100644 index 0000000..eb33572 --- /dev/null +++ b/vendor.qti.hardware.display.allocator-service.xml @@ -0,0 +1,48 @@ + + + + android.hardware.graphics.allocator + hwbinder + 3.0 + + IAllocator + default + + + + vendor.qti.hardware.display.allocator + hwbinder + 3.0 + + IQtiAllocator + default + + + diff --git a/vendor.qti.hardware.display.composer-service.xml b/vendor.qti.hardware.display.composer-service.xml new file mode 100644 index 0000000..70eb8c6 --- /dev/null +++ b/vendor.qti.hardware.display.composer-service.xml @@ -0,0 +1,75 @@ + + + + vendor.qti.hardware.display.composer + hwbinder + 2.1 + + IQtiComposer + default + + + + android.hardware.graphics.composer + hwbinder + 2.3 + + IComposer + default + + + + vendor.display.config + hwbinder + 1.15 + + IDisplayConfig + default + + + + vendor.display.color + hwbinder + 1.5 + + IDisplayColor + default + + + + vendor.display.postproc + hwbinder + 1.0 + + IDisplayPostproc + default + + + diff --git a/vendor_prop.mk b/vendor_prop.mk new file mode 100644 index 0000000..1c9b490 --- /dev/null +++ b/vendor_prop.mk @@ -0,0 +1,164 @@ +PRODUCT_PROPERTY_OVERRIDES += \ + camera.disable_zsl_mode=1 \ + dalvik.vm.dex2oat-threads=6 \ + dalvik.vm.heapgrowthlimit=192m \ + dalvik.vm.heapmaxfree=8m \ + dalvik.vm.heapminfree=512k \ + dalvik.vm.heapsize=512m \ + dalvik.vm.heapstartsize=8m \ + dalvik.vm.heaptargetutilization=0.75 \ + debug.egl.hw=0 \ + debug.mdpcomp.logs=0 \ + debug.sf.enable_gl_backpressure=1 \ + debug.sf.force_cpuset_system_default=1 \ + debug.sf.high_fps_late_app_phase_offset_ns=1000000 \ + debug.sf.hw=0 \ + debug.sf.latch_unsignaled=1 \ + debug.stagefright.ccodec=1 \ + debug.stagefright.omx_default_rank.sw-audio=1 \ + debug.stagefright.omx_default_rank=0 \ + drm.service.enabled=true \ + import /vendor/etc/motorola/props/carrier.${ro.boot.carrier}.prop \ + import /vendor/etc/motorola/props/hardware.sku.${ro.boot.hardware.sku}.prop \ + import /vendor/etc/motorola/props/sku.${ro.boot.sku_variant}.prop \ + keyguard.no_require_sim=true \ + media.recorder.show_manufacturer_and_model=true \ + media.stagefright.thumbnail.prefer_hw_codecs=false \ + persist.demo.hdmirotationlock=false \ + persist.radio.multisim.config=dsds \ + persist.sys.sf.color_mode=7 \ + persist.sys.sf.color_saturation=1.0 \ + persist.sys.sf.force_brightness_capability=1 \ + persist.sys.sf.native_mode=1 \ + persist.vendor.audio.calfile0=/vendor/etc/acdbdata/Bluetooth_cal.acdb \ + persist.vendor.audio.calfile1=/vendor/etc/acdbdata/General_cal.acdb \ + persist.vendor.audio.calfile2=/vendor/etc/acdbdata/Global_cal.acdb \ + persist.vendor.audio.calfile3=/vendor/etc/acdbdata/Handset_cal.acdb \ + persist.vendor.audio.calfile4=/vendor/etc/acdbdata/Hdmi_cal.acdb \ + persist.vendor.audio.calfile5=/vendor/etc/acdbdata/Headset_cal.acdb \ + persist.vendor.audio.calfile6=/vendor/etc/acdbdata/Speaker_cal.acdb \ + persist.vendor.audio.dualmic.config=endfire \ + persist.vendor.audio.fluence.speaker=false \ + persist.vendor.audio.fluence.voicecall=true \ + persist.vendor.audio.fluence.voicecomm=true \ + persist.vendor.audio.fluence.voicerec=false \ + persist.vendor.camera.expose.aux=1 \ + persist.vendor.camera.physical.num=4 \ + persist.vendor.cne.feature=1 \ + persist.vendor.cne.logging.qxdm=3974 \ + persist.vendor.data.iwlan.enable=true \ + persist.vendor.dpm.feature=0 \ + persist.vendor.ims.disableDebugDataPathLogs=1 \ + persist.vendor.ims.disableDebugLogs=1 \ + persist.vendor.ims.disableIMSLogs=1 \ + persist.vendor.ims.vt.enableadb=1 \ + persist.vendor.lte.pco_supported=true \ + persist.vendor.pps.disallowed=1 \ + persist.vendor.qc.sub.rdump.max=0 \ + persist.vendor.qc.sub.rdump.on=1 \ + persist.vendor.qcom.bluetooth.a2dp_offload_cap=sbc-aptx-aptxtws-aptxhd-aac-ldac \ + persist.vendor.qcom.bluetooth.enable.splita2dp=true \ + persist.vendor.qcom.bluetooth.twsp_state.enabled=false \ + persist.vendor.qcomsysd.enabled=1 \ + persist.vendor.radio.0x9e_not_callname=1 \ + persist.vendor.radio.add_power_save=1 \ + persist.vendor.radio.aosp_usr_pref_sel=true \ + persist.vendor.radio.apm_sim_not_pwdn=1 \ + persist.vendor.radio.custom_ecc=1 \ + persist.vendor.radio.data_con_rprt=1 \ + persist.vendor.radio.data_ltd_sys_ind=1 \ + persist.vendor.radio.dfr_mode_set=1 \ + persist.vendor.radio.enable_temp_dds=true \ + persist.vendor.radio.enableadvancedscan=true \ + persist.vendor.radio.eri64_as_home=1 \ + persist.vendor.radio.fi_supported=0 \ + persist.vendor.radio.flexmap_type=none \ + persist.vendor.radio.force_get_pref=1 \ + persist.vendor.radio.hidl_dev_service=1 \ + persist.vendor.radio.is_wps_enabled=true \ + persist.vendor.radio.jbims=1 \ + persist.vendor.radio.lte_vrte_ltd=1 \ + persist.vendor.radio.msgtunnel.start=true \ + persist.vendor.radio.mt_sms_ack=30 \ + persist.vendor.radio.no_wait_for_card=1 \ + persist.vendor.radio.oem_ind_to_both=0 \ + persist.vendor.radio.procedure_bytes=SKIP \ + persist.vendor.radio.qcril_uim_vcc_feature=1 \ + persist.vendor.radio.rat_on=other \ + persist.vendor.radio.sar_sensor=1 \ + persist.vendor.radio.sib16_support=1 \ + persist.vendor.radio.snapshot_enabled=1 \ + persist.vendor.radio.snapshot_timer=22 \ + persist.vendor.radio.start_ota_daemon=1 \ + persist.vendor.radio.sw_mbn_update=0 \ + persist.vendor.sensors.debug.ssc_qmi_debug=true \ + persist.vendor.sensors.enable.bypass_worker=true \ + persist.vendor.sensors.enable.rt_task=false \ + persist.vendor.sensors.hal_trigger_ssr=false \ + persist.vendor.sensors.odl.adsp=true \ + persist.vendor.ssr.restart_level=ALL_ENABLE \ + persist.vendor.std_pd.disallowed=1 \ + persist.vendor.sys.cnd.iwlan=1 \ + persist.vendor.vt.supported=1 \ + rild.libpath=/vendor/lib64/libril-qc-hal-qmi.so \ + ro.apex.updatable=true \ + ro.bluetooth.a2dp_offload.supported=true \ + ro.carrier=unknown \ + ro.config.alarm_alert=Oxygen.ogg \ + ro.config.notification_sound=Moto.ogg \ + ro.config.ringtone=Moto.ogg \ + ro.config.ringtone_2=Moto.ogg \ + ro.config.vc_call_vol_steps=8 \ + ro.control_privapp_permissions=enforce \ + ro.crypto.volume.filenames_mode=aes-256-cts \ + ro.frp.pst=/dev/block/bootdevice/by-name/frp \ + ro.hardware.egl=adreno \ + ro.hardware.keystore_desede=true \ + ro.hardware.nfc_nci=pn54x \ + ro.hardware.sensors=guamp \ + ro.hardware.soc.manufacturer=qcom \ + ro.hardware.vulkan=adreno \ + ro.netflix.bsp_rev=Q6115-31409-1 \ + ro.sf.hwc_set_default_colormode=true \ + ro.sf.lcd_density=280 \ + ro.telephony.iwlan_operation_mode=legacy \ + ro.vendor.audio.sdk.fluencetype=fluence \ + ro.vendor.bluetooth.wipower=false \ + ro.vendor.build.vendorprefix=/vendor \ + ro.vendor.build.version.qcom=LA.UM.8.15.r1-05300-KAMORTA.0 \ + ro.vendor.extension_library=libqti-perfd-client.so \ + ro.vendor.product.display=moto g⁹ play \ + ro.vendor.radio.imei.sv=8 \ + ro.vendor.sensors.glance_approach=false \ + ro.vendor.sensors.mot_ltv=true \ + sys.vendor.shutdown.waittime=500 \ + telephony.lteOnCdmaDevice=1 \ + vendor.audio.parser.ip.buffer.size=262144 \ + vendor.audio.snd_card.open.retries=50 \ + vendor.audio.use.sw.alac.decoder=false \ + vendor.audio.use.sw.ape.decoder=false \ + vendor.audio_hal.period_size=240 \ + vendor.camera.aux.packagelist2=com.motorola.ccc,com.android.settings \ + vendor.camera.aux.packagelist=org.codeaurora.snapcam,com.motorola.camera2,com.motorola.motocit \ + vendor.display.camera_noc_efficiency_factor=0.70 \ + vendor.display.comp_mask=0 \ + vendor.display.disable_excl_rect=0 \ + vendor.display.disable_excl_rect_partial_fb=1 \ + vendor.display.disable_hw_recovery_dump=1 \ + vendor.display.disable_layer_stitch=0 \ + vendor.display.disable_rotator_ubwc=1 \ + vendor.display.disable_scaler=0 \ + vendor.display.enable_optimize_refresh=1 \ + vendor.display.enable_posted_start_dyn=1 \ + vendor.display.hwc_disable_hdr=1 \ + vendor.display.normal_noc_efficiency_factor=0.85 \ + vendor.display.secure_preview_buffer_format=420_sp \ + vendor.display.use_smooth_motion=1 \ + vendor.false_touch_quality=25 \ + vendor.gralloc.disable_ubwc=0 \ + vendor.gralloc.secure_preview_buffer_format=420_sp \ + vendor.hw.fm.init=0 \ + vendor.mm.en.sec.smoothstreaming=false \ + vendor.opengles.version=196610 \ + vendor.power.pasr.enabled=false \ + vendor.qcom.bluetooth.soc=cherokee \ diff --git a/wifi/WCNSS_qcom_cfg.ini b/wifi/WCNSS_qcom_cfg.ini new file mode 100644 index 0000000..d81ba25 --- /dev/null +++ b/wifi/WCNSS_qcom_cfg.ini @@ -0,0 +1,502 @@ +# This file allows user to override the factory +# defaults for the WLAN Driver + +# Disable channel bonding mode 24GHZ +gChannelBondingMode24GHz=0 + +# Enable user triggered SSR +gEnableForceTargetAssert=1 + +# Enable IMPS or not +gEnableImps=1 + +# Enable BMPS or not +gEnableBmps=1 + +# Phy Mode (auto, b, g, n, etc) +# Valid values are 0-9, with 0 = Auto, 4 = 11n, 9 = 11ac +# 1 = 11abg, 2 = 11b, 3 = 11g, 5 = 11g only, 6 = 11n only +# 7 = 11b only 8 = 11ac only. +gDot11Mode=0 + +# Assigned MAC Addresses - This will be used until NV items are in place +# Each byte of MAC address is represented in Hex format as XX +Intf0MacAddress=000AF58989FF +Intf1MacAddress=000AF58989FE +Intf2MacAddress=000AF58989FD +Intf3MacAddress=000AF58989FC + +# UAPSD service interval for VO,VI, BE, BK traffic +InfraUapsdVoSrvIntv=0 +InfraUapsdViSrvIntv=0 +InfraUapsdBeSrvIntv=0 +InfraUapsdBkSrvIntv=0 + +# Flag to allow STA send AddTspec even when ACM is Off +gAddTSWhenACMIsOff=1 + +# Flags to filter Mcast and Bcast RX packets. +# Value 0: No filtering, 1: Filter all Multicast. +# 2: Filter all Broadcast. 3: Filter all Mcast abd Bcast +McastBcastFilter=3 + +#Flag to enable HostARPOffload feature or not +hostArpOffload=1 + +#Flag to enable HostNSOffload feature or not +hostNSOffload=1 + +# 802.11n Protection flag +gEnableApProt=1 + +#Enable OBSS protection +gEnableApOBSSProt=1 + +#Enable/Disable UAPSD for SoftAP +gEnableApUapsd=1 + +# Fixed Rate +gFixedRate=0 + +# Maximum Tx power +# gTxPowerCap=30 + +# Fragmentation Threshold +# gFragmentationThreshold=2346 + +# RTS threshold +RTSThreshold=1048576 + +# Intra-BSS forward +gDisableIntraBssFwd=0 + +# WMM Enable/Disable +WmmIsEnabled=0 + +# 802.11d support +g11dSupportEnabled=0 + +# 802.11h support +g11hSupportEnabled=1 + +# DFS Master Capability +gEnableDFSMasterCap=0 + +# ESE Support and fast transition +EseEnabled=0 + +ImplicitQosIsEnabled=0 + +gNeighborScanTimerPeriod=200 +gNeighborLookupThreshold=76 +gNeighborScanChannelMinTime=20 +gNeighborScanChannelMaxTime=30 +gMaxNeighborReqTries=3 + +# Legacy (non-ESE, non-802.11r) Fast Roaming Support +# To enable, set FastRoamEnabled=1 +# To disable, set FastRoamEnabled=0 +FastRoamEnabled=1 + +# Check if the AP to which we are roaming is better than current AP in +# terms of RSSI. Checking is disabled if set to Zero.Otherwise it will +# use this value as to how better the RSSI of the new/roamable AP should +# be for roaming +RoamRssiDiff=5 + +# To enable, set gRoamIntraBand=1 (Roaming within band) +# To disable, set gRoamIntraBand=0 (Roaming across band) +gRoamIntraBand=0 + +#Short Guard Interval Enable/disable +gShortGI20Mhz=1 +gShortGI40Mhz=1 + +#Auto Shutdown Value in seconds. A value of 0 means Auto shutoff is disabled +gAPAutoShutOff=0 + +#Auto Shutdown wlan : Value in Seconds. 0 means disabled. Max 1 day = 86400 sec +gWlanAutoShutdown = 0 + +# Not used. +gApAutoChannelSelection=0 + +#Preferred band (both or 2.4 only or 5 only) +BandCapability=0 + +#Channel Bonding +gChannelBondingMode5GHz=1 + +#Say gGoKeepAlivePeriod(5 seconds) and gGoLinkMonitorPeriod(10 seconds). +#For every 10 seconds DUT send Qos Null frame(i.e., Keep Alive frame if link +#is idle for last 10 seconds.) For both active and power save clients. + +#Power save clients: DUT set TIM bit from 10th second onwards and till client +#honors TIM bit. If doesn't honor for 5 seconds then DUT remove client. + +#Active clients: DUT send Qos Null frame for 10th seconds onwards if it is not +#success still we try on 11th second if not tries on 12th and so on till 15th +#second. Hence before disconnection DUT will send 5 NULL frames. Hence in any +#case DUT will detect client got removed in (10+5) seconds. +#i.e., (gGoKeepAlivePeriod + gGoLinkMonitorPeriod).. + +#gGoLinkMonitorPeriod/ gApLinkMonitorPeriod is period where link is idle and +#it is period where we send NULL frame. +#gApLinkMonitorPeriod = 10 +#gGoLinkMonitorPeriod = 10 + +#gGoKeepAlivePeriod/gApKeepAlivePeriod is time to spend to check whether frame +#are succeed to send or not. Hence total effective detection time is +# (gGoLinkMonitorPeriod + gGoKeepAlivePeriod) / +# (gApLinkMonitorPeriod + gApKeepAlivePeriod) +gGoKeepAlivePeriod = 20 +gApKeepAlivePeriod = 20 + +#If set will start with active scan after driver load, otherwise will start with +#passive scan to find out the domain +gEnableBypass11d=1 + +#If set to 0, will not scan DFS channels +gEnableDFSChnlScan=1 + +# Enable DFS channel roam +# 0: DISABLE, 1: ENABLED_NORMAL, 2: ENABLED_ACTIVE +gAllowDFSChannelRoam=1 + +gVhtChannelWidth=2 + +#Data Inactivity Timeout when in powersave (in ms) +gDataInactivityTimeout=200 + +# Set txchainmask and rxchainmask +# These parameters are used only if gEnable2x2 is 0 +# Valid values are 1,2 +# Set gSetTxChainmask1x1=1 or gSetRxChainmask1x1=1 to select chain0. +# Set gSetTxChainmask1x1=2 or gSetRxChainmask1x1=2 to select chain1. +gSetTxChainmask1x1=1 +gSetRxChainmask1x1=1 + +# Scan Timing Parameters +# gPassiveMaxChannelTime=110 +# gPassiveMinChannelTime=60 +gActiveMaxChannelTime=40 +gActiveMinChannelTime=20 + +#If set to 0, MCC is not allowed. +gEnableMCCMode=1 + +# MCC to SCC Switch mode: +# 0-Disable +# 1-Enable +# 2-Force SCC if same band, with SAP restart +# 3-Force SCC if same band, without SAP restart by sending (E)CSA +# 4-Force SCC if same band (or) use SAP mandatory channel for DBS, +# without SAP restart by sending (E)CSA +gWlanMccToSccSwitchMode = 3 + +# 1=enable STBC; 0=disable STBC +gEnableRXSTBC=1 + +# 1=enable tx STBC; 0=disable +gEnableTXSTBC=1 + +# 1=enable rx LDPC; 0=disable +gEnableRXLDPC=1 + +#Enable/Disable Tx beamforming +gTxBFEnable=1 + +#Enable/Disable Tx beamformee in SAP mode +gEnableTxBFeeSAP=1 + +# Enable Tx beamforming in VHT20MHz +# Valid values are 0,1. If commented out, the default value is 0. +# 0=disable, 1=enable +gEnableTxBFin20MHz=1 + +#Enable/Disable SU Tx beamformer support. +gEnableTxSUBeamformer=1 + +gEnableFastRoamInConcurrency=1 + +#Enable/Disable PER based roaming +gper_roam_enabled=0 + +#Maxium Channel time in msec +gMaxMediumTime = 6000 + +# 802.11K support +gRrmEnable=1 + +#Enable Power Save offload +gEnablePowerSaveOffload=2 + +#Enable firmware uart print +gEnablefwprint=0 + +# Firmware log mode +# Valid values are 0,1,2 +# 0=Disable, 1=WMI, 2=DIAG +gEnablefwlog=1 + +# Maximum Receive AMPDU size (VHT only. Valid values: +# 0->8k 1->16k 2->32k 3->64k 4->128k) +gVhtAmpduLenExponent=7 + +# Maximum MPDU length (VHT only. Valid values: +# 0->3895 octets, 1->7991 octets, 2->11454 octets) +gVhtMpduLen=2 + +# Maximum number of wow filters required +#gMaxWoWFilters=22 + +# WOW Enable/Disable. +# 0 - Disable both magic pattern match and pattern byte match. +# 1 - Enable magic pattern match on all interfaces. +# 2 - Enable pattern byte match on all interfaces. +# 3 - Enable both magic pattern and pattern byte match on all interfaces. +# Default value of gEnableWoW is 3. +# gEnableWoW=0 + +# Enable or Disable MCC Adaptive Scheduler at the FW +# 1=Enable (default), 0=Disable +gEnableMCCAdaptiveScheduler=1 + +#Enable or Disable p2p device address administered +isP2pDeviceAddrAdministrated=1 + +# Set Thermal Power limit +TxPower2g=30 +TxPower5g=30 + +# Remove Overlap channel restriction +gEnableOverLapCh=0 + +#Enable VHT on 2.4Ghz +gEnableVhtFor24GHzBand=1 + +#Maximum number of offload peers supported +# gMaxOffloadPeers=2 + +# controlling the following offload patterns +# through ini parameter. Default value is 1 +# to disable set it to zero. ssdp = 0 +# Setup multicast pattern for mDNS 224.0.0.251, +# SSDP 239.255.255.250 and LLMNR 224.0.0.252 +ssdp=0 + +#Enable Memory Deep Sleep +gEnableMemDeepSleep=1 + +# Regulatory Setting; 0=STRICT; 1=CUSTOM +gRegulatoryChangeCountry=1 + +# RA filtering rate limit param, the current value would not +# help if the lifetime in RA is less than 3*60=3min. Then +# we need to change it, though it is uncommon. +# gRAFilterEnable=0 +gRArateLimitInterval=600 + +# Maximum number of concurrent connections +gMaxConcurrentActiveSessions=3 + +# Disable/Enable GreenAP +# 0 to disable, 1 to enable, default: 1 +gEnableGreenAp=1 + +gIgnorePeerErpInfo=1 + +# Radar PRI multiplier +gDFSradarMappingPriMultiplier=4 + +gPNOScanSupport=1 + +#Enable/Disable LPASS support +# 0 to disable, 1 to enable +gEnableLpassSupport=1 + +# Whether userspace country code setting shld have priority +gCountryCodePriority=1 + +# Enable(1)/Disable(0) SIFS burst +gEnableSifsBurst=1 + +# Enable or Disable Multi-user MIMO +# 1=Enable (default), 0=Disable +gEnableMuBformee=1 + +# Enable/Disable channel avoidance for SAP in SCC scenario +# 0 - disable +# 1 - enable +gSapSccChanAvoidance=0 + +# Inactivity time (in ms) to end TX Service Period while in IBSS power save mode +gIbssTxSpEndInactivityTime=10 + +# Enable support for TDLS +# 0 - disable +# 1 - enable +gEnableTDLSSupport=1 + +# Enable support for Implicit Trigger of TDLS. That is, wlan driver shall +# initiate TDLS Discovery towards a peer whenever setup criteria (throughput +# and RSSI) is met and then will initiate teardown when teardown criteria +# (idle packet count and RSSI) is met. +# 0 - disable +# 1 - enable +gEnableTDLSImplicitTrigger=1 + +# Enable TDLS External Control. That is, user space application has to +# first configure a peer MAC in wlan driver towards which TDLS is desired. +# Device will establish TDLS only towards those configured peers whenever +# TDLS criteria (throughput and RSSI threshold) is met and teardown TDLS +# when teardown criteria (idle packet count and RSSI) is met. However, +# device will accept TDLS connection if it is initiated from any other peer, +# even if that peer is not configured. +# 0 - disable +# 1 - enable +# For TDLS External Control, Implicit Trigger must also be enabled. +gTDLSExternalControl=1 + +# Enable support for TDLS off-channel operation +# 0 - disable +# 1 - enable +# TDLS off-channel operation will be invoked when there is only one +# TDLS connection. +gEnableTDLSOffChannel=0 +gEnableTDLSScan=1 +gTDLSTxStatsPeriod=500 +gTDLSTxPacketThreshold=10 +gTDLSIdlePacketThreshold=1 + +# Enable or Disable Random MAC (Spoofing) +# 1=Enable (default), 0=Disable +gEnableMacAddrSpoof=1 + +################ Datapath feature set Begin ################ +# Bus bandwidth threshold values in terms of number of packets +gBusBandwidthHighThreshold=2000 +gBusBandwidthMediumThreshold=500 +gBusBandwidthLowThreshold=150 + +# Bus bandwidth compute timeout value in ms +gBusBandwidthComputeInterval=100 + +# VHT Tx/Rx MCS values +# Valid values are 0,1,2. If commented out, the default value is 0. +# 0=MCS0-7, 1=MCS0-8, 2=MCS0-9 +gVhtRxMCS=2 +gVhtTxMCS=2 + +# VHT Tx/Rx MCS values for 2x2 +# Valid values are 0,1,2. If commented out, the default value is 0. +# 0=MCS0-7, 1=MCS0-8, 2=MCS0-9 +gEnable2x2=1 +gVhtRxMCS2x2=2 +gVhtTxMCS2x2=2 + +#IPA config is a bit mask and following are the configurations. +#bit0 IPA Enable +#bit1 IPA PRE Filter enable +#bit2 IPv6 enable +#bit3 IPA Resource Manager (RM) enable +#bit4 IPA Clock scaling enable +#bit5 IPA uC ENABLE +#bit6 IPA uC STA ENABLE +#bit8 IPA Real Time Debugging +gIPAConfig=0x7d +gIPADescSize=800 + +# Enable/Disable RX full reorder offload +gReorderOffloadSupported=1 + +# Enable CE classification +# 1 - enable(default) 0 - disable +gCEClassifyEnable=1 + +# Enable Rx handling options +# Rx_thread=1 RPS=2(default for ROME) NAPI=4(default for ihelium) +rx_mode=5 + +# Enable(Tx) fastpath for data traffic. +# 1 - enable(default) 0 - disable +gEnableFastPath=1 + +# This flag enables IP, TCP and UDP checksum offload +# 1 - enable(default) 0 - disable +gEnableIpTcpUdpChecksumOffload=1 + +# Enable TCP Segmentation Offload +# 1 - enable 0 - disable +TSOEnable=1 + +# Enable Generic Receive Offload +# 1 - enable(default) 0 - disable +GROEnable=1 + +# Enable HT MPDU Density +# 4 for 2 micro sec +ght_mpdu_density=4 + +# Enable flow steering to enable multiple CEs for Rx flows. +# Multiple Rx CEs<==>Multiple Rx IRQs<==>probably different CPUs. +# Parallel Rx paths. +# 1 - enable 0 - disable(default) +gEnableFlowSteering=1 + +# Time in microseconds after which a NAPI poll must yield +ce_service_max_yield_time=500 + +#Maximum number of HTT messages to be processed per NAPI poll +ce_service_max_rx_ind_flush=1 + +# Maximum number of MSDUs the firmware will pack in one HTT_T2H_MSG_TYPE_RX_IN_ORD_PADDR_IND +maxMSDUsPerRxInd=8 + +# Enable NUD tracking feature +# 1 - enable 0 - disable(default) +gEnableNUDTracking=1 + +# Enable PEER UNMAP CONF SUPPORT +# 1 - enable 0 - disable(default) +gEnablePeerUnmapConfSupport=1 + +################ Datapath feature set End ################ + +################ NAN feature set start ################### + +# Enable NAN discovery (NAN 1.0) +# 1 - enable 0 - disable(default) +gEnableNanSupport=0 +# Enable NAN Datapath +genable_nan_datapath=0 + +################ NAN feature set end ##################### + +adaptive_dwell_mode_enabled=1 + +hostscan_adaptive_dwell_mode=1 + +adapt_dwell_lpf_weight=80 + +adapt_dwell_wifi_act_threshold=10 + +MAWCEnabled=0 + +drop_bcn_on_chan_mismatch=1 + +# Enable/Disable rtt sta mac randomization +enable_rtt_mac_randomization=1 + +#Enable/Disable SNR monitoring +gEnableSNRMonitoring=1 + +# Packet Log buffer size +PktlogBufSize=1 + +# Enable SRD channel +etsi13_srd_chan_in_master_mode=1 +END + +# Note: Configuration parser would not read anything past the END marker + diff --git a/wifi/aoa_cldb_falcon.bin b/wifi/aoa_cldb_falcon.bin new file mode 100644 index 0000000000000000000000000000000000000000..f9d7551dc797dd1ddbe59d652c21d271b7e71cca GIT binary patch literal 839856 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 I9m@kir-FLy{r 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
    w4i zN4WqddJrBMgMAI*Sl5mG(7REKN&ln%S7zJl$lgKBE1ka-Z(N#*iv3SA-$c;X&jhV)7axEAE@zIad~aCQ@gFxSoH%RPUHDjwy6_t zOF4tJw);WjHYXEHA#=6{eJYOEXb$0jjksb@)6y$s$&GBNs_ac>vC< z244?l_G`vxz-wht>%w&e5mHA(u6Q8;?(}L@#;KC2sjTfQkB^n!fhbIyV;c+wFe_HX` zX1h^#gDnOHcpvc>8xVornLq60sSKSzau>w6ukUtyP~A(9TLh4gs|6oZlvcf>Or!r=jFg~NCvfhP~TN=6d13*Ka(po5-o zqM%=!NaPDl7wFFqJwJgR@ND}P=+9N?!8(GO-H509Q2J1@gth+E@rqf0bjA|?GKTi2 zGX@p(C5aS|R&uWcw55-c#`;b)F5=N5vm8{(I#5 zi2t=G?NaYetRZipy9dEYi=_XNH~VF@Os8?#7L|Wo`<$S(gx@0kHMbdDmd{w|1e5`a z<9ELIK-x^Qr?3Hhfe)bYf3IT+o=nD#4?@qk_s)USh;<3(LtDi?MP#u1X}_Ybje?^U z@lZaOS1<;n`J}w>%5&e-=MB9AZ5lLt(+3@x6`hd}an!XfIWJH8@+ZeE0*Sf=)nirY zx3N3XME7C^Oo1C!sv*RThg!veUZVx z3jLG3UWENq&bz7bc{D%D*A|N(&k^Q$EV_?_?BDUef_}bT3jK!oqRSgoE_0L}mxw4$`QRaqgiT`*tIyf>OqXC(~&hQLt zjJzSoxrOFC?>HKtpxny&Gsc~_i`l1Ccb`JP)Gb4H6RE(*U)>D-8;}x;!RUb;XwM0> zh))&rs~6*v2Hj@V@H*-t?T~WkF0(_uYoPxeyE!3(j{5k+ciHER=5+nyCHwOt=>JLP z?{!!u5}=>J+B?w*W4J8QFE#R(F$-35&njl1{BT!! z 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�j8T8 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 qYtZ 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 z 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 z

    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%0D=Yv6260 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

    elzAp0aCUTyje&+ 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%0AC8u6#=*z;<|(a0S#f7;{p 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 literal 0 HcmV?d00001 diff --git a/wifi/aoa_cldb_swl14.bin b/wifi/aoa_cldb_swl14.bin new file mode 100644 index 0000000000000000000000000000000000000000..21fcb9f23ebfae6577cdb112a3a349561a13c25a GIT binary patch literal 839856 zcmZ6U1$b4*^Y?dWC=MY65(p&31%gZPC<(zGf=h6Bch>?HT3YJv?(SadM%|!TDbkkO z`*JUW#RaJEkw{AFhS(;kx^olIF8C z$<=o4xh2WPy56pQMxJs^@YwQ}iWiHyis2968 z!C&LPblY{T+~{(_|3l`2|Ec`uw}tT&WVnoTC-hyd=JR~6>j8ec&jvrnWe13Hu7LN~ zbD3PlyUO6ya-H0OF#bsJC%HT~)>Q>R*JZ(-#q{=eea^iO{(5)RT?PJ1*A@JWbdrDD zzb9w?#xQ=OESDwjSN&eANq^tL_4l(S!}rl-m+IPrk>CP zLj7#$p6nF-Y}cIoXG8x!{ldKl{ucL#dqPLaP}dp!dOFd+@85v_wHNUB%T9Mx&+AK4 z>hs(rzerO3cZ@tec=De{*?k}cV+JBLO**jcI)&{_Z0L$?CSbY{76Z3 z8Q{nHiTb@iBv1M)!uT!ZW4XuurtRG+8SQUz_xTM{-7nWhZUS#{U?oCLkxO?~xT?>e zn*6U$z#Hqrd^g2ycYWMKepA^+F)k^tHPW&~EBm1!_VU^Oj2|!cU0V=a`ZE2^N9$hy zOc=kr{3S2J{|W9-8ROq_?}1;*Z_x(ORfG3ef+mx|#=O(H4$vPOgH!{jEoA(6K>sp0 zVzM~`{wLDUX&US6g8zx%>LX}P2u8R9PUy+e1j<;8Ue&x5(;pdmS;cgfB>*0K5xHS&^D5Pe9w)IiqpYnhD ziLwa%X5e@7gEdwzb9eaKd}eKhG||7{{~lLe7x@T(+%J`5ez(>|!~64jU1+He{jFUo zR|}AZn&8xM&Fo>?N;k;uf&W|3y(;{SMPBM6EoWtguLs6C-$q{671F?Eg5M7O7`X}h zO&hIkluSnIv|i#8b(Fu6z3?C)w)U9itY!T3!uUHSMSpjvb&1QXhYg52q%jZ+*WliL=)Fse^Tz8ASCf&d|Dy5R_ zE|uyojqz{eTWCj_=I-=e!uXq{p`HSNQ84~rg1<)Q%PeghywM?jjgYHh>Tn z@SrR}chFnlR)9YNKGj4z`*VLB_%F#jG75~^I$5&aKE}Z0zm0FE-DS9Y%C`;UFPA!c z+?~_~E(`vj_rF2^QW>vJd1EUuvKWCjjBhJ9o~!lX*G2~G2D)Kg7~=BX669kXs1aC) zUi@1R{(pg8T?j^k&XZp52C3|tf}aikK&IQd6@!vC1za&(~Yq$iQTO)@}}@hHsWXomf11zIyS+qre{xOQOY z%k5`3e3Q9+J_^o6U>S?KzZSpyTE3IJz-X_VnEM}P{M&=y)wj~w(#f6lW*e*xmoxIC zJEJq*a2?}&=?TA2E|Z>`fcB^Hc^2Gkg)I!>uLnO0{MyWMp_U(L<{ z>FY86!>~bPxY`iLkA%{Lb!uIW1p;k*C*UZ{I)%^8@;O=~^jv zjRV_cZx|#;+L>%sq|Fn$MgAsfraY{9#u!LN|EqPo>_s1KZm`xy{*YI}&trV1`zO%<`y^Qhfj=sYZ`8~Uw9ND` z5|k>8ak>9r1pWlA)j@{H*CP~hGW;~f?uRxfqzWuxS`+|;S(+&&We~BhhXc_&xj{y<8r3zXx-Zy`hPCeGvaA%Z=6X{w6u+uatZpgZzyO z%YP)c-{?2|l>wK{2PpSH@JNroXXVq&K1eDQ=gJ^#|m%-z9@}tTsgF%>FcnV#Dte#*Ya24>zszv^?l9MH&ZV z`x`-jE4ZJ;oKRZ|^z1}KcxLI26e>KMbU%~jtyO(sNzfO+( zO)?$&6Tvt88^WIh{#>qBGRijoP-EbOur0sdIc*Y{j3 z^h^MMu)j+mlt0~lS`wzeg;dqu_}`7(3pyOx`-%B?osPr*8jbFm{@M7?#>yK0Dy*#G z#{}M};pg#*d8z}T-|$-^n<;2zq>R(2!Jn=}^jp_jn?SR3!~Aosv(o+dIwXwWRch*X z_cM6=b+ms4o4Hml(K2lTzRiD4p|#Tm{MATV1N5&!;2Ro#0iO;AeGucHz}UB@Z)xBs z;={ZE{xY4Xr(JLDTO7t8DG9n6``-yp&GtXYd;Su+MQ3Tg8yl>#jGu*IcVd<|{jUmkH7K>& z$XX8&OTiz7W+WmlIrJ}`S*W{QuOESbKyTLSexVL_SAstaPyZXa)^~NA!uV6s_ATJ& zF#j#}N9A4g?=D?}Jsbxwu}_S5F|ywgFDHcG2ud4W!0&~0i~xTua*~Af71FnK{vIt4 zgXG-Z`h>>#9Xj6K0RBS%pB|P+{Rp=!j6X+mz(1y4nSa*!lk$PTM()?O%m?Ga#$#fv zdw`$qmU3nMPh_TzM>;~S7k7;We>}E78BOhhznX?r%$8U5IQY-%K~478>U4K2_$z!3 zcSc_GE8V^@{zB;s|9{qwZj^5Er{rVi|0i^#4&#mOfam}}do%v6-10DfGMsJ*W;uS# zFn%O*-=2A~F+Iq4YvfD)6a0hvgJ$`=@o(+`f2)td7Jcq7cejS|m&s`G4K&d78>wAv9*!49%x92{s=y4k0v$^?9VPasRH6x z`lq(@PwFIhCs%uXeOE(&@priU!}v>OrV^vU{;tv8{zv%)`hU`OI)?eaGw;skKh7*v=R7Pnq8q)~=UoC%WO%P9NMVIGaWjycUYQK+m4fVW# z&^-~xUm$CAt@}lju|Jpk&*A^|QVp#g!>n#A?mWi26c4M>1^f&&+`NNOE1^H5z@La# zrXmZa$Y4D3caN}A1My!xx&Hn`ZRH;1>Lwpa9H1s1!SiAKIdY}0c0XwXcIIk-Fc|-K zZZ`O3yoLE2(Oh2;?gcd|M4#Gx{fizmVUhpnucC_&-Qj z*BQhvaAcov;QrH3xO&}ZyM;PV+PXtw{N?fw`v032B4bbbC*^zps%!v%x*LmJ+50o0 z-XePIxmpfNGe)EyeG0WAP^Y6I%aO`dtkj$Uzkq1cVAl)80sQ7(-gn*UB6pwjd)>o$K%HC_Y?HN{rMJ5h`#01*=sqVhT0wr5r9=-GvXZqKuMhN0 zq9?Jz_)o(cXTkqYZmc~_>q>77e+8UL!x}9GKN|ejdKFsi+)j75JK{}l>T-8QdCx?#p z@T0)*9pKl2{{?yvac|~7_oDmN?*KoU2cqPl`$F%Mi7qva|BS4JLnpyM=f3vuOKmv| zN3PZdjO;3&7|1L*25CzPu1cZZ=(qVc)H*RTA^h6l_eTy}!|QIu|DJGHfPb(1*!}MJ zGdr0#6(<&JxKEbj_lBN-UaqH)zkna>zw_^ce_D!(o-ag)*K^BIbZRuxmKEUlN87WQ z0Y_h$f4jg}TmP@b(xl=EuEGXJpfzLkS$7-wueu-IU;cK+uPtv&k&C={53>Sk9mand zZ}@unKZ>>S&)~<%DH-JM*Tvv(;)#*i^fBPK3G81nd}s5KME;n zgC*?gW)lB5i}w}r_X_ejK0z)IG$AHf-#smNxGrJ*cjX(R;>WRfBm6J^BS}R5wjiU+ z!QaLc09|3pr?hZvI?ZYi<1FQp0eSCJ=m4KlQYC(4+G%CLV0pqMw9i9TeY zi_^HWX6x;h;2C}j_iYdG`{C`q?!E)RI#Jkk`5A2<%iV3Ij~_s6;1f4EjQ@lDi-exk zW$qFp#fK#u`JX4R6OYad@GZAehW+avXrqn3;csIELamsQT}?D%EnZ0y_v}ReszU32 zecSy7eyVTmJB#>P!TKdbCi=O=W{$h5Vf^2T_J2tHZHv3jUxe%x$T_)LKE)^L;w}ba zGL(-;!h2!`9lUM^ekPyTYS>x{`nN8?k3cS$@=0rY(id;z9sYH$BayxVlIV8^_Tx{# z%I{(|dJ$3f;Bi+?8~LA+|J`IBYRG@mSAHjQ^@DCh?)GxaWaMBZmY^q+;E?Q=*uxAy z`M>zfpQrh*)$2jf4UciGy**7-L6t?>6!_@q4kn~VIf z;+|RH*XQqT@IMuu`BL{Y8#p)9uk(FmsXyr+;A$AzuOsd+8GxnXlGaP__3_YuHQCR4 z(v;}nY1yh3ko~kU{oQz@SwmZmHQ@i|U+=mw|L20bf=_4QnML#4EqLt~F+YL?*@!Ln zdwpx!;{SE`b2StjbDm7kcsyM$X+!iI-xB(-aWUYx)5VPcZCVXI&LFR0@$Djz7eRk2 zR|()Z2{=>kf8^4q70h=t@ysmxz8N396|#F?R|P)WMt_r!mg}(sck%p4@1&})rt|&Z zVf^u0TT1*gO6EI>98~1khuB$9miEF?{0$rZNET&4pP6=<#Jt% zd1n|})*iTBLz=zgwKbcRG@e<~8#82ZNrYcqa}>niyaPsW~X-W=&H z!@YUzFB4(9%x}c$->xtC?a6;VAme14-@x5J5?#KZHuH?pZ)?mnq^v4e*6M&=2zOed|B=W+ zUwUWK_pcMb0Q>>6P>#qdVjhokcWrr!=))s=k<8#TYxVVe$&h3EuFog-cT6hi0e#Gs z_^tTdrhiM}Z%_QHR)PLCg5GTOe;H_@RvkIbW2~Ceqe!HrI~+=LKWKJo8zcVl^r2>XxJT3Bx0 z+GzBBEU|(ld0J`^3r*LrG}SNn+t4wa{}%AJ2}pMu^NeGLPh@nHpx1WQB2BYcK-@k5eDeL03Y5k|b$eVxdj+ zXENtIz@N{$D1<*9uBKw=9g?36z46TU@uA0|KOK(rglfx-c3~uHb62Ws0{)|5TrE#B zpS~qO`!9K7AoSOkbKsA-fZts&BjS;Y-qj!$+L(AzM@DWZHsA2)gE*5BP7Nq-!Bt~8 zu>sUjs}5Ro@FVd}qTxgy|7P;j82&#E#;x)K*_`i)>%7PV{pCYxD8G?|9u~$QBqpI>5Ttlkh=-+xPG8 zccU2f5PoNuz;(@_;wOZk0?p~z>gxPH627-ZBU&MUoxryk%k%Py^wzF=xo^h<{jfH< z@-)(Bw$a)wzgi3QxL)So(Ie2Gskz#hI)Kg0JZ66eFxrC|eT#XKKV}^2VCmNet0{Xv z70eW7pjzNZz^A5+M00vn?9=@bFy1B)JWvPdHg6i+UCv8SxsMu%6=D3P$lYxHMK`$* z^at!;8?B>*{r7&o8ync)-cZ#Kp4a337L9Gdb#+!;eGQzJ23jiX?%HAe#^ivTf?wj( zm`|MhNPZxnvqU$011!e7?kCqW{_Df|>-;X=phtCudrv>|VQX4qRholeFF>iu z|A%m8Z8YOF1^YOOaZxZW|2L1`s=L-b0{%Aqu>G1#4ZvXVf04~H%ta9aUULC|l}x4n z>l1YHZHaeni9cuf;S#}nTJwIJag(5`T7Vyk^j(DfH@P5xld%q#otzbLCKm~56s$$6 zxPt-yZubkdm>r}GYagnisBIVy{}W_s7(Y&~ly%@A*D_|{c&bFNh5uv4;>Naqj6=e! z<73qf_+JGoD{`HRT!h+es9%BAUx;QXoa*Ef;7C=p^l(uBcQx^sM}4-48xH>4%tyni zNy(?eDD-^1+%K0f{ufcBqe_(p9%2j?YqgPl^YNm=uLOP+l5Mkn1oo{Oa$u`LYxAId z6TMlA%@J%-9vth*9VsqUfA}JP=#RdWe4*pOuSJA)G?gaHrM&(%U0#zL!B2G$l6Na~ zo5BCjO#y#I;PKRe`!=uO(SQ~W@2l|k`fw-I7GS5hG3zgb^FkkbaerIxD8K{DVEjk; zM5=o7k2_|tlKPU`!+ ziGi+^j=rN-h5sgFG0bbV(1dnD{9z1SF#Lwh`JuKLig)6nZ=r7&(boykZ(159tGr1QbO(j;moYnC%;(#fC2AlklNo=@fDa~;DPSD+9l;(Ym4a+gJL(_qV{V^8 zoptC1S1{w(W&L#>^-+=jaes~+#4$fx)8MJaSdx*c3|4!6@Q2KrRz@nL7?p)#{8jX1 zFTLA=MW)6NJxFv3^k+J`dd+k3EZl{x*JrKIIR%8<-zLFSv=7Pz>v@>!{R- zr8fHy@(=M?hYrm87UN1r_OqGahA`(iW~3^-KbrAh7sg-DCwm#2ZQ$2ul-5Fj2LAX^ zxiO$WiHP1sZn9Jk=x^qW^%Xq9dzha?FSv!6LrvDdml3f}_U|!g9g;k(V?KD3xh0V~ zw=3@+0cBSIXu0QTc(5sqzZv=4gVt?~VcMKZ<=@BwjAVA`hL1fez|Us>F?{3rHpV!fQLe|l5^9@~ zi``gb^T=YDd6&??X2{}Hxl646_73Q0z6Rg;pXw8+uv+2HUckQ^@61#Gxy6mt4)`7C z{F}0v`qu&|u{k~s-7n;SrC52xuZiqOA_1$z`0JSccG15LjJerL^OrNQfXn2;pvLDz zBAQXG!YT&Yz)aszE6RN8pbNwF?+5=s?Egmc-(BJU-{9|&U7Cx$6@k$VD_p?)2M5xy z1zj-zGvb2$Ek@(F^XVG69?fW#F*Zra!%kMZox%87Mo667BUOU>&*sE_;)Q&U&kf^W zE_wPl`oGT2p#HO(h`cU$g5L!l=>&dTBrpg1`vws|tN*Hp{?)t?|DJ;WZ$<}}VEgLA zn-R!nLpVm2jo6HPS|(#xuSWh`1oGcNv!&Esb)o+AQdVbwLH}B}O8fgPsmy%vI`|zK z*H+-SgC1Memta{;{~{RWs^FK`KMZHA*P;6}1G$Kyr{*c;vhMj%=7WEpYR-ISy(rfS z{LVgJ`${kJpyl>wkF*B=q^@y$S$7PQ2-ZvAG5!|GF^|XUAF{#k=Eich8e15R4%WQj zfAr&%72r<dyRDWN(^~lvdKP8CrCH4ujTl=iFy7J;NPet zseP#<@5|q^LEFLCOb}Z^O*`J77f>9+xBBmL|F?wES%Q5S4Q>>6u_vPtg*|?nIO;>- zN9h4s=pI7`dV^o=o9hB8bU*u!d}eJs9{=y~f0cVk$KrcMvqGz{E42+WWi!6Tvf9Db zTo5e(YxGyb3iPyxY26qd^G1h*TLxB=2qbdAdu6x&kTZ|8i-hzcT+W!%Le@{ZXv^CMB#F zEanx$uglv?;s00=Esq%kekE{1Egub;9^glVULVVAz32dbZLK4YneKJD*?lf#Yy^+{{+2L<@CSRS*&=CMCYUH?GvbMzOg zElx^Xa@wrF{an3;?B6jd2-81``TuM1r@N=AKYD@az!@2(J2jOzn*Z5?(d>$~DGuz9 z;m0xuS7WvbwL&yx68J-*yCEZH@vkIg;uiK*Sp8$M{!9JgAJl*^1b-;2-Mi#f7op|z z&j95AWAdM4sXtjvR-_sAz~l5%O$I*;h?YomSFB5S?4gZ+B=*hrdGrgxL%-Er4CJQ{ z7AOO4wEC}()StFT^Bq;CG5RQub9=WK{E_Tzxlg{QGNRo7=!yQnivKx?N};9xA!#i? z$z;7!6S1V`|F;0K3$scwf2d!AeycyLjz)%B0r+D8up`I0@vOEV!M|RmJ;VGjkY;>-SbLJKTm*g>^nVWcR)1~lAH(ki{YCt-`iqGF z4?mZ?tp2M9JxhT8_Kd&nl^H92pcF*yt}ozwbYT_h+$4XQJ|{{3EiI4#<>G(c#rPMq zVx5ov=U}&22lNj^vrPXZ;ig5yjsHurd<~#K;sX6S;19+A74y3U#=kB4(h@1?AtUrL z@Mr5NGLc#4Pk=w&U!(7^&#WTr99~E3hMZhS{c8{RyDmWgJIZ^^K38Z87T#i9&Ecz6 zc;^TBOW=G1=AZx7-y6Qw9~KAnTLn@bepBf3*~9QG_^WlXeu?d8mkjvx{GIxRZ1B{S zgz@_@{`;^${gJ^X{zGXh9}pk7BGCW#0e+pp6U__LUk(1-`e(3po|ez}4+{7n3H|8- zejBu~n{3pV!QZ8O^*FVs!`!vtFY!<4VYwdGT}AzMJp8{+ufqNg zVJuDlqp^J!0X6ws3hl(Uk@WKXOE>U`fZrQEO<-M|&HZhme}G&~rKO|V<#zmwxjHeZ zKU=}bpCJ}K$!!bMKS8=u|9MhJ6aUyu{b2<759syG|3k5&Hvh%&wplKhcz6guj@dT> z?F_Z(BAn-;1d~tjzd7u6ME$EoI!z|EZ7e&qbo=bF~ECTl_KU0)9_Cv{LkMFmxwEz13g0 zWmM+NOL`3amx(OY^EZ%LXv+F8G9D| z%X}5;|03iiYNA5V&y_{2{eEQpU)HPOzYw8+M;}r1xUK%KBl2$bhuOjUXE9@+h=ivg zbLIGr!}wPJ)fqdH&WPl@z4D7z1Mz1iD&Suxzxo1K*Li$*Z74sm11I$SY}tbEbrkvk zQLpvikpp>6zS9SEs2jywtbVK^SToQ=TYoJAKM79%55FfiCq#cOJkUW@Z%Z*zPO@-!OzV_Du1ei|c^3eEq+xBABs=$~a` z27;am{clM9V8>HKm+Qv)^LiWl<=}b}`waTC!}Y^3ei@OOm4W>qO0M>KbmO4pxJ%H- zF@cY1@tiXFUq4uXF2eq1Fux}S-k|lM2iN1#zwrTA%u_P@^V~Pm9N!23htC%I+U{}p zF;}nn7WhHaseiD&G1jKY@46cO8v@F+ti8{${v1I4R~h4PHm-oNo`U?6Fy{sUn^J**c-Z`8FLw_xxu=#2h=vh0(3<7*0Q2BiMhaSMY!Fv+H6=YnQ9Dt8W*&#FxJ%HV3B0ui5kAYt$0GZdjVPD@JjP=-S~m-s$UypM zVtpDg{=M}9su;<*yXW0Eei!kHIG&Hg_xprw;1-t^#=lAC6F)ivydWoYktGGnAlMGU={nU*7O;7DfstO|96;(kJ%|! z^Xzpyp>NB@?EB%8c8hEV|7Y<3aL4>7z0NCz` zP%Gei4tLEB@JBIASp8EGe$Q*ny;lEsnEJ;%@C(eFv`Vnb?mao+I)?FYC+fH-z_0C3 z;D4maKa$H_H3!aH#(o&9ztKoSbTIzC(R{0c$PHxEde9xMv--zH^eht{Udiki1+|Oy zZFZSh{on7@x<1DIVY7J&F~$V~;p}_L zabL;P&UOV`dx+h62bg~r6C3@5`oj#?Kbzf?tOvUX`JXaq9S3!x`uC23bxVPIlTB;= z`OPZuRt5MA(B*9W(*e|;eojUU`%fJ}9r+qMY{r-=g?@}XEC-1X29LWZS)JXE{;j1- z{U4&!&A|VRxq1z>?&KD$e;W&RP4GR;8*Rq_Qs|FG!>kQN|JLJuSw=h)8QH-cp#1i7 z{ec;k{Ekni{_uCkWh!^CA@91%{mT41IgJ0JJjNLTCy9TJhEJ@$u|KcNtHh&ngZ$eR z*!l zuVM$rd3FGXo`09Ic>(*kgOd?z60_(8eieO}{&WoLzosIGgNggtD${mDw*@~Dt76u` z+Cc2X<^VqyNmz?6b-+jM$8LkOtW#~rXOZvDisOM`G%uH({O_#PWS3R&IQh9l?j3Y; zJC%BMiM-^n{%orsa@~fwszsc8A@v5f9Z~*yZwX0ao@XoN{igpFsq^)E{-%arJ_KmpYI$Xu)k^{9mMp{}ulSi|iW_ zc`A{gWj&{XTnt@?Z*yxV_#N>rt=c6U`jbI1YhbMh+F;{vmHBZ<Cnxu|3AZ>nD&4C9|=m-fH#f2T|H3B)3Lfq#V_p&m6o7_m91l)`S-|DaST)?;e5u3nVg#TI( zJG~QqX&30=LF@+cJ%0dSa}QatE4eD-EQ~tjpq6q54VSbi@&Q@wPq~iVM51)iamfF( z`Y-rR0{X4C-1I7!akgxb%_EthST@315&c@vc+cUpy3EvD!S5W*0q+Jg=Jozz>Ok)D zEzo<5zop~*HD{;OuVMT&J&lI`s`t~kIC2qlq>_H1wb9mQpqR(i14&$p4m9Gb0l&3+ zll8%Bj9<{NX7r^i{%16LHv~N_0>1^l{W6gF$Ei4d*uUjF_*=MpFxi+=^4xcN!8TcI zr|Cic3UUlqd7g&t?1<-K_!;mem2sXBJZMqy9PW`NaR_ui{jXR{l<|3jAOy52om=7wRwDllPrV{^^ig<*Q0I(ZO8m zABQlWq58*3$epb~Y*z)Nh3u!JUu9@Ts97~)85D<3-{^`5(uNVS-Ad8^Ft?mT`k$e) zv&3J+RZl-duA~0&Gha7Me|r!&!~fs#l1}?Ly&db*(A@;ZmeaKPrx_z_R<T229!__8!mp#+C@+jZ z8*lV>@?WujD5vsNre>i`d$1Q|8oV?en+~$=c5WWVk4G9BG8bfq@vC#)9qLoTuYu&- z2}tIF{_LWH97}U@ua}Zhy2C%q6YrBaDlBq-#7Rw|4 zXCCNGZT(mN4*knpG|k#6e69pJPJK{yJ;(fiOm>rttAU?Bnpuwc75MG&H`+7z82{~5 zqy|WNO?#N8$a*L2uhqZRrk6R)j#fEP0gbm9%V=4PM(-pR{{we-l}DiRG3rlV2%ffz z_@AhVIiZjHeBu&6<9*z#Pr4-Pf5rs!{|uz5J5peAEvvszj^^AQ!@PeD_;chEcKF^*)!`@H-H{rLNO^(!hoiyMeC{ji3hFQKBQk4yPb%m; z#Dj~$9~I31(~zbiXm_h%Hnlx2O_8p(jBuz`gV)(u+DJGO$^UFWP&4E(&3C4X%sif( z*kSv${KpK8w;r|W2L||4!5_!!x+Sz* z{XrU%7lUM^1y5W3T_)pWRZ8~Lj`42@{WMVf>IiC1!s{gODe$5t&a2 zbgCcK8U9=tm^B zA|L5!jy-M({_|j5BhOLO_bcnlX*^I$h35bwQ|+Zq7{5Q(@EbX-H;{v^OYWnNeyolC zF6vK1_*2oR=~%Po0sV>KCxf&JDGap+fqeF1?Cso%mRN#%{9VXw(m9B6+)6yNg;r9L zY#ta$wZU-amt4sY;}7)1^)L8;mH&r(e!>IzTyy-5tk^>Mrs*@FDl5>x6tt@mvbG7C z3$;ejZ2Y%9u{Gh6?FVYd9DvtJHk10!l$|H?VfAl~bR_Y;LSn$7=Lh;h8mZ(z z*(3Qq`d0_vuZO>z8iB#V_)mb}X8kh)iBCiS8-TTe5e~IPIAQ10)Z+JcDpNkaGi#hn zhV=_Do+F#sSd*!^O5lO+M0+Q)|{Ajr4xi@IixS@pU&re2ej&q=18+@Z3Z)Y> z>{B{O=7jM_`!emUC#X4%a?cTasirRzn}3h`=RN`cC^T&hJV-&Vt=c>;kh8Vegitek zWalGQ1HU>_(iu+V@-xT}A(wCUZ>OMtf_gFj7g}yjp3%|^^?#%MBJDwpGTFy7I~e|h zI@td}gtkX8{}1K8R#TH4Xna$+5QUtrz{?1=4934b_*N4`j+wEqi8nwThUO|L-CXeAZh%&310Fd~$!NPIC6V zorYuc{Gto=HwMw7ewE-)4e;CWcPH>C_%Y17)PHckSu^6WRb@E{ zn|Pu(<86DKtnSvbK~@b^gW0(pzXjvp1uj*lkA`m*QWgcDN({@+|5$^rOwq1#m7fIS zV(RaH)ve^<*N5lddekN*;(s5|pUF*8?c?vnHkOF(@i&j#&OdAm-z}$S{%3vYkKpgI zTv;2*+%OA{&%#dBW2B0a)iRzbV+WYwZzQfYOFL3iG#&gg)K>hZd!XM=gRoX#W=l)f zA9v{A_$8cf;qRvYu9sMz)9{nwtJPRGLbA=;+xS}!e3U&*8wb*C`ZgEch+!N`uoM&N zdw*nh7x+7gYc0jzU*@eEAziMOiqs=c6w5|ht0x24qbYT00GQE~+{!wF^`%UGS(cz-jy^@^n)bX&wI9)8vazjlCM5&S5)Q0v0@&qfwj zK>uoNWE5J_4_=Lg_BQStw;%kQ-FH+yrb>=q3w}LLm`Qc_QgJ>bj9-Uy+EzjTNu5B| z(?8SzT`#qu-%g!s0)909rui6^kty?k>LY>1fpY(I9^Usx#(zCFHxlbVfL`}v)H2xt zauxU=xnEr__z|pxIL(iBUk;g;N@V4D9W9pg7k7eR-EELNwH8sB>)8?718pgWi+28B zGJmq*yh%e{exji>3P}$&!`}++>#zZwF~zLWlHOPZwhpI0lK*3M8AVj>C+b_VpG4Rv zu>(2@c@I6`Sl*E9$o;i+H%KFRy%G=gGdDzRFINq2sRGBX#y&RCzceVX%?uN|vNu@$ z=jH%^2=}+eQ)xjD5{aobrUIJyn{URx*2c{6CXIdlDNg(PfL$Kt@>5LA=VkP75ETpK z;NPwOav~y2q#Al<9=~}tw(85`Z_CD5?m3G0n>S=_2BW|VdQUy`%-Sl;=abt&_Agjsm`0)@VQkx zRfD3=!Bq+4U?;$(A?2Yq6FzN3{{K1oe>+dCIeI;qtHID;o1cUW`L6}w zZ-wtWumn-?XfAzg0)I}!_2WG8k#8bRsj~h>D}!I;i&%Tlpi(k7jK7!JDH{C!E>X|1 z2lsFPz09IYk9rwsu^lhw^Vk_L7Jr)xeiGvnkG_Z6Dk9Ol;LR?yJ|51m##6AG^a|3Q zk+u^LS_u6?{yg}0{@Et#|9bJi(DOHve{JMXa0XHV=RiKroEeLxPFAaGS;Q?_ysM4N z#mcSX%JP3^XB!7=6MMr}_`Vm5zlS@Lxo;~nkcF+N$S&ru`24JIj(u;!DHCTI|K_Ya zxBBbobGtD9?d(oy$olhIH-Y-gr~JP}2hRIdn$NspG&V-IaJENmW{V!=H&)6Qe4fgV?)t2|KGPH6r};mq%DTpl#Xq&DE&e`& z`p?sPrCY9v_+9@}``T1?Y6&qW<9K6e>W*&D4)9kp_I4s$GxRIeE=T__1G*f43A$E9ABG_rz2TX8=$w})TjeabY?Zcn9@Ef& z%Lb>C;eVP)%p!84q35q>-&0lMPkWh_x>A2xL;6!OcD?pvgv~~@MYk-wJwJ%%ti<-% z`7?>gd#LRp`f@q)bZIc-^=6!s@C5qf>0Kh#z_?!Wg&p$L;8sWeGQt1cU&5@I6UM&* z{3@(HE^#;GgPvfo>`?t$?$Q2m(tJFN=X+6y%}4J`4Rz zgE=Ob@$7@P&k5qsO9S1roo=f`1?a+7={7JqnAHb^J95bcV=&mrzrAXBkE{lfT< zG85PEXUNaLuH${abd_N`Oh47$;930E>WT8;z!-3>+P@CAy&_h4au~l1ncE8LROahg z^s)!@V?&<0ik+P1<9Z>CG-lSeIB*9j_WBqYC)s~D zoocu&XQ!bIVTbE7$tNQ`B#i$Y)lRj*znvV!9BSWLndwGqHhS{rbl%^F_jLf@D(uSf zE8vmX++eLQy<5fj4CL;5^tc-wGW^F_NgM)0^^k1jBb!;z^{wlIY7p(D;Y7oRo|BEa~|37(lGsx!T$*AzaK!W*7{q)U&RXOpca9j34SZ^ zt^T%Oknx<0H(>ir1d9`D-I$x_f!{O0&kXPruo>^L>TiI>NmSAM$aocV?vB-e73;%d zr%8?qk~M7k6S_#b{Vq+(!z zUyu2(ko#?q?uXKaCZ<^ zpB?bI&};s0Yu=ZKw1v*^SOk6?_?6MgQ0qo7XM*3Gc|VrkTK%I%q&{KS;SlgUYpTA? zDr^w;4f&z|@jW@h_)QMu@3oZ(_zxjdmr?&XMb@wuIjnYWlIee2_+Nlkv-$|DKZ;~@ zE8r3J4C5Ce_cQ2SFYvAIvK#tp@vl!fLv=p*CEAHhaD)yE>aP~C#`#3zd<8c(jK2|n zpCSKwH&k5#{vw&L*O7m)Qyp!^)edD04K>5J`d8bbYx^FG;6ht; zg1Yy>;~cF0z>n5ZWaQY*?f0S&U430fBJ}(s*{VN+e;YD&Io|Om=EMDZPA%VNKEC1S zVPl7YV*W=Y_OKGN`oH?mEIfb#^f8&4$Lfz_v4pwqEg7OWK|iOe>KiUeCj{B(HPruo z&$+;OH(~r~)E|9ESDC4{k|GQD(1D4aD$M}y$ zI=euqvS;9SAk zSNo`by@u70MLoN5i|xGXjJ53>c!LX&Qak^T(^Nx`gVhA-><@B0^jrKphJJT<_i_H= zazD zc4b@=;8q^@7vVYVl$)uua7g{*_|?nFZ+-~=0e?TSK$RQdMCb)m;FF!dbOZgqgZjHw z%zw}7Pnrcn0k_zBl3mfTl7Rj>jD0*K()fb^Ux>}M^DhfPZv_ACoQ5K1p`Dx|^f~y? zFqdCMw&6jP>8GaP|RzMrL6*USs^*f?)VhyAX;>gI7ALqnfzsAPm1xqit&If8)Nm4u~^3P`OoU#hH=#k z^hCIC^=gIm;7UAR58`3g^l|=0atgn2^$@>m$qC$N-AiHm=TPmrDbT+N&ICLq!&!fP z#+}9Bn~m)NS}(8*1OIPYAb$-(4Avhvj_Waav5Q4fE@l0sfml&E;|4LKFXW7{82_k=4KL<;mxW zKX)es@E7*CA6jKJc4599!noTRytdk|?h^RvdV&8|S5zACKbD^4!Lv{m`(ABFh3S~(b4EbF&GLp{ z4gMxUXLBKPvovf`vHMKwJKOPN`&deS9WrVsx%$et#3HZd^nt@+ z{8IT(t^RU5R{UM+-&#nFCR4RKjOPr)&X*g<*f$M4-s#Y9C$JRI+feI?EZX^prSLt2 z-&?lYPD42+t=aov^#N0;wPwv0?7#lWccu>gDm-J0OBP zdSNUYW*)DdZ&St^qiL`jo`UVO{dIYPH)7BCWQLdq{y6MVCgVN~+mH<(JS&(&@W-$| zTI=&!dHl!KX+O|iLB?~VS8Ri|Y0?1vqk1X#9b*1#E-Bg^Uw9IuKaS6Hp|%X{ron1> zBJ*DoIGvasL(R^AoelmZa2qoYc4}^GxE7;$g&;0qb$FE@$$FZh@t;*ldTn#nDxAPAt(yJzn znVmn`6t1&(g#Kh+h;qXn+9WJZzzG=v*4BGX`1l)B;+9j`RuI^y9MB1Lv_z{ zWV7b_B<@a;m)ti*qHbhIvOP_GqKty`$FR?Db1MBIDaLQEfz_G{zOAvWzF{P?krG^S zN+0uNG6?1LoBwS!GULI|foCNBlQ2mCBW@8W`rhrys*EIt*Ugjz`c?E4SW!JmXI zwB&Q1#p~J&{wwadJLqqBJH16yi^ZXfXJwMl3FB`-B33as?BKMbvs8t2mFn8ay{|Kn z>@_^mkFg#G|6>CAAApv}L4Wdv^j9i_#gA$kNthbK`mlB zl+&kL)-t_lnNOZ_#a3*^@lyEKb(gp+sYH>g$`jPA_9D?c1(o&7J)Vzekq?Xr(X;CT{G@kkJoJ9 z*t7|+>oM?ur~dFTx#v`$$K6Y)Jf2Gh{`am=7~f9AUy1&0Am@G>{6^%NDgMW6xfv&HC-wTnGX5447SUdl2yB?vUpA$Ddt9!oJrnuoJ-N_RZ;X^U`{>d@Die^e@u|CIG^Sz^r1_Tf1L_#?LdnSX2T5r zZ}>|Y=TIBUZ!G>|alfYE?*Kc3K0ME^@_)eZ;d}Z9M6{h>#{*Bx{Z@yeZT#{u{yuq+ zGfIEaIp8-WSD7rI%Y%5p+u`eOp0KlZn}TLK< zRhzya)CRsLpO5gv$V0aG6}&z1p1esNif8xT#xVXha?U-&{I>*7B~zV{A)m>9vSD_n zz#g8kbI4M_x1EJ{{zqFhFfJHpE@=aih#l}~33sKT{T2s|K?lC3q9~Eir}!ykQ+xPY zWV9_C{GC5dZT=9yJB)v;G@v5#7(P%3pGN&-Q~6YO>kHH$b`D~!bCC5o@a;Q&tp3Gn zyBZ-6o4K;qKfvz={bm)Hfp6ac(}5AK@7wbE62FxE#~9y;s3Y~8`n#{p9_)$!x-kAj zXykX`Z+3a$$7);nzn2xj9`G;aiMfos?RK{+Agi{q^9K`=hjRY+3Gln4|H+KbBJl03 zt`7LU^}NN1w(p>@X6ZuzKp6jdPMi6I*w=15F^AKKx=YSqV-WcQ-<6$gJW~ab-d0k$I!kZ{F#FfNH&bhhkf8b%1K9|=Qol6 z@8b`1{^V<%S9M+nQ-f>KMSG{k*k{7uOl-fc!|mJX%*(5XRmu%L&i^x+qwHIV?EJru zXkTmimBg--=HBujm834U2aRN$CgZBK9SICo`yl z&7x+&_TMb$^V#6XGYhl@iSq-&w|c}`&=_iVBJM!E)ON^56mn;kkZrIQhd4>8iD&+i z_C);qk#(}!^j*DFKJ-iV7}a*6=S$=%YB7%MbMCl&!TH;l$w(b!IeR>Lo8#v}PeXds zi5bwc;hDU>9wTnOu~wVW=?eWBL`9;(?+EqT^yUoTH8m3aj;v_6a{}Zo{z2}3R_~M_ z{UusaY;LyJM!t{=)StcOTIo^$qTDMhbb&ht?^Z|#JA&r_B}wMRvmfhfWL2bNrs=x{gwr3LG`88 zAI^|G2r(Z!zu!}f@ig@x--e&R32S&G_@~|V+MN2wALLE;BX{&0@uFhBByn?~4fcx4a3_}^t4pvkO&FXV%hvZz96%KlUFI7dc0@(oc-VXlAS7SUvN9nls1RDX@lL5j3j-+6uoz&2sLA z&~Me(k&KO<7TX%x8N}(2Z-H@%JS0)%-ip|B#c9~Shi;IMsKLq%<0q2qJqi8S`#*K4 zIIW>)^*H&N?btE1Sa$yD7`)(;fa2=GDkGYn*=ojGU4GL&_|(p&%Z683&_9}a|3OZE zwe#iQCBxnXs?B4sLv`;>M21#kg@ecO&z2G=I?DN*waAk4Jw5t6`GCF57Da*oH5&Pw zLSJlFHTmOYM=&>HheE9Z*FCX&_N_zUQ445J@C_c69_3y^{hgQ?FizkLL(lem8 zfN{3{Keqae0KXMi)(pQ0TUm$xRpqyX=t&>0r%`=c4SXU0Q(brJA{olvsd5?Liu0FV zA=iiT6Z|-;QBH97VhSV*OJ?-sZXSV7X$loyDI~l865J+4GdS>50WBY+Z&Gy0- z!+)zxu7c$C!wU969_F#r#9|x`v?@OjaN?Lnb2`XvXj`Pa8b3Jnd;_ZSQ=z|#v?V(G z75L9_{vzK(gvBxa8;rLxjy@F72dl=Y#|TtqJ}$?%wO|kEtqOmv@~tP*(Hm)9=0EkB z;I|!8zgApws4K4u-?_ zO=uQZv}y#4e^kNyDCd6~)~**6SLCy5*dLpRO&%9>`ejS-^R*TykDX&*gT>Dm$Q$~B zGXJPz*sD(*F=1zdW$-gC)s8#ICig7hkW%K_K_&pf<3+aQce`1)8Dl`AL;mTSj z$D?Rc5g56TiWa3A%DbHnrBQ6fSAfWL-wz{ivKIm%g84cR4Op1%3-R!xwO4YD%` z?X+V%U8g3pHX)2}-~6(IKCEEovok|V_}k9J|IW<`&Oe!jchFzkfu90?MP{SjNNna?H@xQn7&4-*tu0Oe@lE`-;+xM&(zInAN$XMHe<5v4q2mEAwo=_V~%x5{a zVui~^Gl#>AR7N9_eV^;8w6+;<9pC)cOm#z~)ziZHd z{?y(dcB|PfH&^W2q-=~EA@7aoORIq6Hp|+#{FzLK+Gsq!73j)pG$aALHyAzbi>}=2 zKEvkOiD5SpaZcsbYpXao#J;zO^aiZapfLU)eu;Df|8dQv^5YHt&8?GYerMJECgWyr z>S5!}@1R-}>h1eiou`|EqhQTzq|LG0+~v|Ks3Cs7+$7+W`MJG9vZiiq-$w9>JZO z!pK_v*$cd_uIzGl8r5X*tGPGvN9^0^tR=}avK_xH8BgH{em9Ws|9hG05j#QAJkF}% znb%i`KGZdTi~nZR*M3lPgj-JfQNAD5?+w{$YxR$FWhHC#HrkTjSnJM?n-9Pr z=w1=4BfpiE@y}#$$k4k4K92`UkY`&3nEkV}zf2x8xw2;X%Ng+q}R{ynzsN{p>M}P31^SA40JYL6Oo^J_F_KjkekD-1aJKF$@*o1Xa zsLjVhTm9{BJoN8W*rxddi6sl80&tFXaVLj@f z{vTQI0iIRSy#JrwrT5-TNJ38`^pZdtC4>MW1QJ3CC6v&6lNNdvQ1G>PtSGkEiVaaw zK}7Mjp<+SlMa6>3|8t-7B){)<{Wllo$#eG1mf6|anR{lpdY#-)-d^(W#ehHW=VFjt z6M3W)eThe=P4w-5nec=n5!(BEgWj+lKH0>+x09YXr{^otM|5Ms5q7`5e1DWveQhEO zj<`>u-^*;q_jD8W!$S0LBi^kE_`jXx2diS9Fvbpc+t3NS^H!Z0b(U5Rgjv4*Us*mB z0}zC*Ye>a4`=ld3iJl13koY)(BLD5YdJ86&TN5hSa zX>S|G;Ue*L`*|eN)jXc8z(T(QF=~{{Z-l7Mwrt1)tL2yiR=PR(H}o z@6vf|0rhp8!zeG26PQk;qv5?6`rp^L&8P)8^UckCzl-^AM_Z;bw!%)A;oSEL-w(Fo zwmAswL&zM>|4nFq-!PWN>+fNrZCld+hd7�Dstn^ItkLI+M2wan+L+OhBtx%8yPX zitcIvhsidhaue;^4ZR)AkTmsiXlCWu0h-t)_9EX;vz;v-By|42eEPS8e>|rhBh>%B zNZm;I?+Ne$6U`-%|1Y6|eCvk7(fz5f{7Mth@0K$IqA$rSM1sx+DmOAOyV-F!Vv~sD z&v2fv#Qd=1TWK5%?I7EZ`^SGn3swK`1ONCBnys*bDo=y8Y-X;o_P%$sv6ScA54kb% zSCP|X*&O4q@j^b0fqrXvu!CoFe#?7dbP&lMnw zx_CF+(q0(!`yt(~nOejmXNBm$#BGydtpAtT0~VXw;D5fr`dS%^fsUKP+Sg6!OPG6k zLll9gm^haBji_to7ujl4y@xC)66j}uaEY+p%zt$g zieC=eC+PoW_ZFFYR+t#O34izj*8=*AeAN6mq)(Y}_fS5KVD6hCksBi&f-;ZRZRh)m zNUIjKqZjg`C2MAlJ%O#A8~=!S90nQ>jRpESc-RKo`R20{{MSd^Q`wC5|B+|BwI+jX z%qQJDt_Re{`!ZhEjuiCkLSN$MGPX^w3CO25(7%iPhx?)b z2KLnH-a&NU#n7KX-1BVvsc~4PgZ6(#wx>uRA5hubVy4)8?04?4>qBow(+|lXaoYe| zGmuX??7K}pW#G;asx#t=$e=;2kW?=W$rsP~$RhGAk#^Ftzagi<7VPfbJ>?&pVM>8N zY>N%J7=QJHJ>pt3|CgBAo#dZ<)c!~WpwNGc`U>!O(&|Suwi^FBP;uNPtWzcc%yOK7Cn?KD9~8^Mu8{ zhazm%3f1k0>TZ8RB6>5`sv*_1{rw96)t+XxaqovToQbY80|L1)ApTsCN z;>kqDM-gFXu_NX|KhEX3U%duy7MKR4C8zDPc7Pr1tqIXTZvSBX&m#kRgTHyz?zhhS z+odtDg}(mZ9{MSa##s14`G1tgV zaf|Ws${Vm4Ioup>*c_sN(3bKdvHwS!Uf^#I+IQ^VSYXiJ*!`q&cVfl&f%-(oL)K_n zU=@WlAVhxvBcvP!X^gotkEg*kx-sjjEpVHlKZMx7zlri+f!61de{47B(SJ=pV(o$# zJY%^x#9SigwTo=^_G5bq{!>Oh<-7~>uk~SHo9yq#%JSZl*>75+f9d|&xjfyU*6N<1 zOk^W>iF?0u!n+6h6FBYt1LkKP`3>cbc*@n_o`a!aO#}M(*(#oc|6)uB?!P=_zd;NC z)G6Pt5EudeNx2UvvcJk2E&3JVfk8oap3&{hihI+&G(%W7I)4rK{Iq`7XDUHSb4!9aLI#$jwcM9ubG5&5n zJJSj953Nmia2mR;;Y;LSFZNySdZOQenVrTb*$?oYv;WBEEorEd#Q2Y;r65kAoaW`z zK4tFuhb)S(L;pVazN=(zaC_id?C<6)@NfT`J;)lry0@ChfcL>agqbArfBne#f9;OB zj;y9UU*ZUV){VK(^CkXlBwqv)p=-(bCqZ{4-i?1dp39xQnB)eG6F=&|d-l{q(=KN%TI)EAtuq?-#B;d_Te;f8p=CG48{C{+o{E zlb@}Z|DE2DjI`JN<0;S&hkmY4KgatK{NLx$KMt0#iP^{gD*w?p=4&^|^&lUSY||<$ zZ7EOZugWGK{EbI;%tL5DUFl&ST1~+J@$Bx|v_b2?EUQd(#2YGo*d>KOlN=Q8M7wYf z^5S#G@jUd;x-!_f-*LxS9lHPY4>uZH*I&$pU!C!{)dq#Pp=&_u>e&hGb2H(LeBm;8{SO-2*7TOl*uIG?Z!^qS1 z8~&G7XnzTeXAVEYpEZKoLgqsB3*dicz{n~Y{|vNF(a)rRE%~kNFN5L#6V`Zs#0z86 z*>G!t(fAuXz?(+Cg`^Vv*%aFfZB+R`3hDnD^pE)U41iPfpeWp(q(Tn-ASrMfxze2e%OjX%8h`@{OypwLEl1)1of_M861j8lpk2Ao3lcSR{&EUNO{%`~>?CaAX=Z}9EzR6c*%0MK5 ze3g@#hbZVOQ$}AtS9D{%MCdQ`{zKHk5N=+G;OPiEjyRvgb_afVzq&Whh9OnYf>Gbd z{J)KEG~7Ap=d;G9@JLVQHHZGo!!P|y`G>nQGUJ2l^jPTR!M?T-MeipvI*EJ^L+g}{ zZM*khY&tWrJji0w7BAFAECG8==MeolR{0YzF#ZqF|Br~q&UAlr{+Iy$=|26|tS4n- z6aC?69=hc~w}S^I6Z*WJ{_Bp6iJZVByN7t)(K@B^-%T!=?RfJhniwjyCl_=z_NHe{ z?-2b(Hjz3P+$Y{atfODr>BQgZ&T{GX+HsV3X%KT0;GeUR{kj8l6!e0U1$|*;B*EX0lH|juyAD^G*!3Uz4$?VG#80N;UZ$R~PYzBMg1@H%F zJaWX?L_7f3iGR}V=gaxNKYX1^zqy&?TGA)eZw+m@+TSje_JM2e1od5y2%RJ#dW^|eu zLu~tvXu}Va6Hm1@B3&}6+Zg;yBkx5wo_?*-_q;a&`mv0%(5`_$prb!G zs;~IBxjZ#7M1KM8RsPi??wL`<(>cY#n>WDrci`!X_!jn|jV?FICH?P6>#u@$D`S*@ zvlCnriK46;!E3^Xs0@WO7x9MCJk^et%;$L_&~J0s{fL_?+`{v)IRyq)+VoP;H$UMI z$uyZE`a|ttc=&=VAoIf|@~@P(hip&AeHDeIe}45SU{_CMwKEaH>OQ0VFY zhcP@AM@ts-d?aJ>peseJ2NKt`FwdH+%MZFyYW2L9 z=nT5(fGKNE8QE_h!}|7**VBzPBSZ8@*mcOPv(S$)r9euE{uJ+Vw-T-pVr4wz(4KxZ zpgpoiC=)>)sA_IhhCzQV{h#Rfe<|(i1Bb+cpe;wN3HpIaG{;N>bKDg0^g+;8&UAN^ z%!CmAQT9ICulvVaVKKf)o}xo`zIPYrrNO@cS#mgTXMBlNKoZ?8p-OioDX@Lz9sZZE2^lXhLayj#XP4{{oXw z-_y+oBmMPX{GJU#e9Xqu!bi#sd!9@kKf~``$v;<$J0sr5L$^h{r|smN2@sOd|b^=6J)fwgD8ku-1M{xs2MxVr&M zOYnjvL<7FW_|L#L+>qFhCeWYic4Ck3@ArQ!@2*P!wd*Mxggjw&S?!X|Dyhu1a`h-Rf2z9XN$}U>9fDEGY5Fq$TkGSfBn-+M*2T9cXhaqdnp%SdMo58D_*k&y(LX z2W!ARCF8%8tbe7kzl`;!6O*O<_eb$nJkR`(@%ewgm*`6v;cn!Ojp5Dp8GlJ*741$- z=>HgIzX|`&L;kcy77T*_cJuvdvS9TE1DS7RO?#iS=L|AVJz^dSjsH}3+&b7l$D<{@ zh5g|=I@o9Kf3Ap`-%O3gyuT~sudM3IKPz;XvWyhlpY*NvpOJhQ2Ct51KZxaLExx?h zs8QN_+(T3r|8pXrPLTV2yV*qk$0tMdXON$;4fgNx-X~;#c*~X}2d#nHLPmZSHI}lU zE2~FGpT2J2?M(l5D|b*j^8Hl!e*{ub`6r|=bVL%oDi4E^|EGz47j18sk^Xkd?XoYL z`?&+_wGjQqMBEOf|HHjq_A~B3iLg1)l4JlvF;fXtcRZ|Bj;`wi_`W3qW0}H|5Ce@~wG~`#l^c*(CdmZeQ=t=+tG! zPo@9Eh-hEQsrs~$|7be-04fP>hnDA8=Vq?6HW~cmC@h6tu>LHvThImmf&LPo{tVvN znNRW15&uOq-pa*ZEvU|@>%Nt)j6qde*o)E9ebs~TFKr_0Di$;B{V#FHU`w(9U=8P7 z)XV+}8tR2m{oTmCJF$5$@opzG+coh+e-_o#>kN^Sw4vh3#&xPt+ z=qu{9C$gzA?NIJV-JLPqyb1yg|0MX6G*}JH*#0&uY_ZvQd^P&1LaZ3CYMA);m z{3)LM65rb$_(|46Sr&(pyfK~ePlJxE8ImoP*=1{l>Q{#Ed(yfnuN2?5XST#4dEoAU z_wT>G7yRLM+rupffgt@ zin4BJ(*jvVmH#ar3Dpy6bORAi1|B5oT%KrU=Z1r{Bn%!WR?@> zA2 zW?UM346!YL*f+_!`o9qUw>hPk#p3q03G*`XmHlo%0-Lc1{9}Tzf9lN(Sp8FwD#|~o zn?K7#UmAu=IN#+%KhBe1suT2EK%Lx;CLTW*_G8dx<-xQ*>?4kQ!0Fd)b?<-dIzjyx zxf`b({lCoqbb#~cW$d4wLGBjg?=u+Lxy(T!bd(LL4*Xpj`o;3E8M8ee`qA)*;~DKk zV~~csIpKDPehxQ^S8@%!C+t1cA7ZP(WzXW3tIT&Qk9eaQ|4X2+QaPg^w-?9`*qM7E zH>39pf0)UbPiI9>_35`^mZPDsQ)W<_vGx?Bq>NalsguJz2$OP`X>Ze@G1GOyIR`(0_Gbev-dr5rhaww zC^FH3f6TMF-Xe1ZX}k|?iaZ3FzK)#-&yV-{PZXn}-J9~QToZok!GF5bO5CnIlhvU$ zI;alqIm}ZkdUroYY9gc7%$LEvO(wdeGR7YP{oDq;_f6EO%3k<25zduue2D&T#_3z= zPvQ3KMj-PZ0l87#6-CI{ODf!j{b;;{r~6}vQMq2ZEN6{mb7LlyI@CJki;n` z68aIG?VG!1Se)i-BnsZ7T=w9ZqkiZTIAga4I(xij?BTs!D@W}5xhBL^a68~ z=ALz*gHiqnU91vRC1c7m0<~Fl+F6B$E5&%|n_~W#XKWQ?Q^d*(W2NS?KH4&N6FG6n z#yQ#c^ByMqa69gy@W7$%19>@(C?gZ<|7VCv(>JaqPSUciB-FVuDUP=F{4*e?3M>~ESlo80hInY}J?<@bzSY}@u@OsAo z9FJ5`Jcm7OW_ij+6hTbFm+m<{bH(uot?iri_nb??HuJA5i{`Tr`E;7`FQB&`t66!? zm1VaKpXxII++++dXl_)7vhH;|*?KrJlBb0NN~Q%zIQ8%2`yWBvKE};!P zIE6GI$FN`B>kt0%82q14q(T(hz^&Ne94L{R$arZylJ+&|St_$2G;kTDuY6klg6haR z#mOgQ_m~6y^6V2a$e=jyBry#4@yy%co4)|vPzR4RyD`}y+nDm`e8u>yapc=LOaB+5 zsf@=;`?PWRE9c#AVo7tr!Spl=4pU0nX zz>@9ak*7^_=$|LT_-E*MGH;qV6GvovyHNkr37kowAf+ zNV=(tZpK{UkNr||IX;QJ#WDt`mn_dIbIWHTYgFag~T8*YgHEp`+5 zyVLl`*P?^(#V@!E{Qq4}(T7>o?*Z>i2U^V978*_X3*Csfl}{?dUg-Y!^|Vm=2d2>0 zL|XEfN%ZlT*LY(^Z;yExy<7ONC~^DWU2n8c z`B)Q?G`fRm8Crn6UCMFRfORh2RAm)2pqSq^{z-8@pSn^bnq6ePzvH(gzOfnj%NLyZ zZwx!@t;E}o^%6t$-$Elz2Y>Z75yP{vfRBJ%!b}_9xPy^Z{)s3rpH?hKw#pjafU#}B zzs3Du1IOP)yOwfZ>;@;~Anz3=-NLT0*Qn9Yrq~X|y?o(&gA1{H9v~y^e9mWlN%@G( zjG5R!e)ayvDrPy2|H4>gGUkfFm3>Y6Paobc`trZDVf-^o=odl%X6P5vf_OM#0KB36 zd)@2~@)&b|vy&`nDo`~MtpB-4*ONr#uVH@>b@DTS|H;BXUEb6Lol_sQTzOho$QzYa zRP-YltpUt`0iOmTla&c}UdeY;&MCSDdIr*A3O(=2xbeL` zj?Dx6r~TAU1C7_+8w>qS=3cBJJI!O>vJibT-ouMmz+7|wHd(}fwMFjUM*kV9@??{CBS=K;e>mzWq$#UCyA+F?Y+w$zYhA` zeq?j8fxqRg4AH-2Bd}Fma(xY$LE>KOyI7?B!;I({pT6$h=tXO$umpsy2`qIy9QKrtEK7k%+WPzKWDm5hH!JQ4B>#xpju{~Ra(Ul=R? z95}pV-YGl6zkhKT2#d#!wH<)y?L*0o5xIJ%whTa7DPi1@UiY_pU zx!3sDW&A7ACUJvGI@DzUR7NUA-Xt&!Js6X-__5{Vt>mU6{r`XmzNP;Um^#Ei4dMpg z;`4tsHv;}U&E20Py+c?9n>(-q&>zPd)EQU)CS}#jWeg;L<^8M-2dXtHX^gh=pLC@q z5zrS7swa}`8aRRi=(iyMT)3(3R^j6l{;Rz^Y4hwSCHSuzZaQa`Gj5NWhL7wOW~(=S zd4knGn>Pg~{$$>l%iL=H)uL5Z(SQ^Aq$1qiJm~l2yKq*a@Y1QYr5q=k<o+M z>P{1$e#Z>_U<>+bV!O&eszw_CX+90XN)3R~Mj_Pg>RwnF^oGkjI zQ#|O;=4taP_K0|!k6skiKW=A$PrBm%W5zK4@00yWH?8dAT(y$7O8;pNefhOl@~IHo zl1Op>cY1>|ZwY@piJr$ocQ!Lo2uIX%H~9EJ@&KW0&H|00^UH7MM`CZ<+UcIMp{pFU z6S*nq5+0f1>7B# zIqkNK7)MFG7Vy(DMnLozGWQ+eq~0a;(~uOiX~h&~q&=%f;TY&P>i_E+z4rGos6xf6-rx z>~H7uxmKf!B!jT&6Zu~(ZPCpfWOroU?|1J*|6|Y;LqMH=>&uV2cBD6kljd8*=LGei z;5Xl+e=jv-3D*6MSmD~7MkjHOo8{&6NHWw?cB~z7DyIzWj)=Q@IB|5&8dRi2g%1AB4_%H__yyvpH;mL`pf` zzB(H!q94wiSHllQd|JTiqb(z#8`py(tnCEW-(;WuDArgwq-h zn8a=ql)=n>0rYi8O$;2fha<&C&G-j3t`*QrF9R^>aD+mHqS z<@`IuaD%P&h|)TVwQ?HcFCNhRhB2e-m|to9vpJQ^0zH-QgQAy*vFQ6aj zuk=5izK;vhSL|sg#-`Z*B;9BNV=#?mk9+rnKOD?mbE*xZ((0u1GiS~s za>kzo|G9?@1j;^3j#j=`Uf&^{Zt__JI_*?J_Q&&oX~QbQDJnSRvbTGm zxjlAjN&ko1X4LbRN6Amp$26qc79&=qMsoy(cDH1V)SX!?G2FVBXtnoql{oOk|! z{#L9|U?-q2yNWa(#S^ZjPx3|;F#n1^Tj{q=Zx~MB)qllc#=?cm8HY4Dw>60OPSD>g z4~LnJjwky0_96CxllJBk{MA_7lDWP>|G5{G{bvLD*gtTU8Sg+-vVy%u~X@t%U!Qp`S=b)nw?uq>!9o}*i!P^EP`5*V{gTE}6KkaNiw28Ce z^S=e7#i_ymVLv7Vu5$W_eh)^!4Re;^?_bKUTo($nS>Zt$3O9^ptd#etEx(<~x1H(H zV)r(lHT-|z4@;YS(6_^=kZ#M76)D!ek5wwDA7ypBi1P2AB2VG}$bWhYd(mNs2N`aX z{v}*-0iz*pED7C9(Z>aT+w=xSKFHsbM@!ovmvsu%EqE(I)XstaNqpJmu>?MBn(=g+ zt;=nz>F#qA9irbBji@>6?^fFRx%mSB|7UnZj<|tdqEEjE^C|3K8gnddOgAvKVlLD+ zl>yLI|Fe+4ZIBAWL3gDE>$$~mHT2Izy}Egw*q#=88as3yGr@gnI+oCvL^%iE>mOpJ zPjEVa*OtO(k;%#z4M|n)_x+dweQE&xNT?N`f72PE@$^3f`pU#E99~!cY=fh3g8ntH zifL><@;);Zd@93K zKRzkOtpPjG5Y~H8L|^&G)BW|Q_*2DBv?uTNx86O_uLl0Gllc~Gbrcl}>`aqt7P+Iu zxd!!H*k+vR&$Hf3nG@z4`-geX_VC_tqgmIYkq-49yfq1a)M{u(Ya2mtSy0^{|LHz` z<>{J^9uyD#D9{8y`1r@xCKBw;Z(cduks7P*jo{%H(*L9o{Z_UsCzG=-hgI?e`A@EZ z3>xb_g$AgYSM9G|p*oH>$m7tB-B=!(!L0M3=)^l8-pKG0;glJ0U{6M@x%YrO=eT+&t{H`sFBUQ_JH3z z(l1#<0{Z>^-B>Lc0KFTaK9KgcgZctKD?<7iG`>GXf4Pd|ZY z<}hc90BwM^p$1k=;s3I*Y4D1v{G@@P|t9j~(ql z(Bb|;@=sR4X65YjcuafM3v(4zy(;KhbDvQy76B zo~8ffgTaam{@=_s&CO=B&}#on!6#Wjbo~d|AywP+Vr?rtqZeFXd;_J?f3KTIZ67>z zTbUJU{JHQ`UEbRmsVDzq3+Pv+zY|oMBCTgGt0WVttW44JOjqDJa-~wFL)uH}(Av4~- z5dCxT|4&#b=eu;YrwQoA%5ReB%k|p+_-p=^|2~az35rggv!Ff{{!sp#IcSH%2#^Ka zX|MldgNjH1kvt~tzev*CA?1%sRfq(r5-_w_5#@y&extp1D+4yHb zzY{Yo+(W>By8kq-BOhU-AM3< zucQAg4AJjzkC={BOf{ax)_-|A{is$*!%u2f_F&|5~68@C&F3b*|fC z@;EkA1%Qj4@Tn3|J4tF<#FskADF%N zS+@y)&?28cc}d}@B4$+d8^Hygpf7$4NXN1^efV|`Qg8~tZOEd&d~11NNvnMMn4r$doPq{=XRc63Y(Lj&&ygXIuJK8$CGLukCq>P|cwg z^I3Iq{635I-<=int~bKRKPK8p`-@pXzAO3f`(ls&z+87Ni8BgbFxS??BS!uyVROL# z{$wh|X)AqE#I5eWo6O(pe{kDyP1dHQiAq;Ey(4RGDW2I_sQ2MhFJ|cvJRHig zGTJ8D{^%5yZB?HB8857I(F`HZ%dZa7prhT#j3g2p9FMP{6c*S{Xl*k%x61x8p8mz4 zVRWYFXcN3y_^WBq3W~BVG^90)Ji`;xf?}BgVsVMOkdJ2>ez5<5sv2m^Q=u#N-$ZN3 zF*PPcf3Gbd=1chhZ1$wHwuSBI24In!Lyu&!$YE5K;l3OECHzAx-jA=IoggUEN0o1P z3gaKntVGj_-aL)X1=O{N=Vc=qemIT!`|m0&ksFxb-RQYN{W(PGes52^jabBABl{S6 z^02-PGK(4cu{@%ik9)z*iO|vhr!42C;P}cxb+0UA(u6V3pcQIII8P+=?_@NN*P#D0 z_|jjo#qYB^zrJiXyCX!n?X~aool3gb2mH@@cbM_7>gw{%3}S&M8)aCP{79q!vasaP zckTbp>3=C!Sw&T*=r%&#y4sChss`N9f+rGb!Ag?@(pC50egUd)AvaL##B|j>$2MA~`cpLd#8Af*nIfAf8AELhE)YmZg*hjJ{<_Q$_Hv#lIJ)9H0kbR)fd z0CDVi!py|;xi|XYO=cyi2cE(2S>D}6*1z?9r~$^I40fqcg75gvYT_aPf&OaqB6->> zfCb%wFLEL$#=zpy6MD1IkXHHfw+phhCpLh|{%oiPLMG(U?@o+L6~0p(tg;n6U~U0* z0)D{N!w&VHJ7{m?>1JSGE8~GUZ7+uUzZhLh{eRoM$-jSc`gja~cmXHIVOSk>|3+7I zszg>pS3W5kIvM%}>@`7Y1I=;1jIPM{mcbpTRthXXU(THgK1N@NX&PckDzw?mJY-vne1VTapp765pwe31XcT`wzXM4@ub0!i*T2Ma?`oFUNJ7EX7hn4t_o#5KSi#r+1tvoW2 zo-TssMtDHhMBRo}0sc!4sw12F`=7cqBV}2I1+-As%L8T{elF}U?By-pV()kRFEyTo z3!>cu6Xkk`=rQ4{q zhvp1g(-FQa1NV(!6%_LKTVUR^q4B&caIr-5kXe)&{{q}~N0$x0Lv2%O%}MPyPP|3v zr>%*9dJzv`40({YGq0kb&wF*h*>a?S&OeR#qv+J){a29&#LmF~?Vz8{lU3o45#+s! zusP6p1^-`Xyk8D|oYOEU$c`?B{%3{gH}h^~{x2aP^FSw`1}$C5#e)Cb#=L6$C&14- z3oSwt>ipRlO0rH37=IWPhT~2>~gsL z2$7zCbr2E9&3~~tX5s-mZWl09&zfsqeX9uMBp#`UL~F{P+R5*6jOQ4E>hMG{{YC7& zo6!bt@DkwwMS?b@Mn7zh-Q7>nU*smU{;SxR7!~<{ZpOlQ-X1sKh3HQtI_njDB*Wd) zoPL+ORd`1J0X@4(24TO7NM@PAoBb#|h8KK*5^5#j$b87)~Tud~knfqopi9Jv6@1zM=_|J6Rl zDeEU9je{2~#S`%f`Cn&pCjHZHCJ*{4^EGyo(u}^=cx5DhUHaSJ=Xha^MPK_}P!=Ga z*F$e9-^-Fa#DBgIb5a^iu{i#I_cS`DY+&kt5BCnz?>A1lLH$i2f_`THH{h+WL9UWV zu|hxNjj?5*DUDh8jp@GA4rmoZqltc1xGp8A&f1WtGL>-{;OU$)gcE{f)F|&oG%F98 z@;tl!CG!98rN$-B-k+1>)Dn>qykMt)OZf%27jJz>_lSGZ3&%S=o%wI#YrHj?{f7Kc zRuFkp#D7(h$P_JH9?U?1|EmxEZb*foj7Ngc zfc|WH-h@?w6rq(#aOEDO7~^61GZxry%yI8^Ds%^3ehLZG!4}*9-^LP@#QEbdvgPas zCttx7fDhketN44JPCUvu73&F8B{ZmVPl3KFCg0BE{1*XI<&ZnzI+$(j6eny&-Yku=Ir@zv zTzWI^#82>36`oM6ZBWwSJ)KeKASso3N_iM$flD)YnAdsanrTMF!z{CeF_ty;d3+#? z;X&nwRH;jR%3kOX0x?n%Z*87=*_Hw&Q5n9j$@d_+SOdbK)#g)a=Dz~_d?$Z5RQ+Ve zLNQnK-~-(ZE9_l5-1;0*w-56DG0yXMfi6lVA1v`F_=27?+>PPJhUoVp-t9Q{?^$F_ zLBiUFNQQbQ-Zg})n^V6t`+7a*UZX4hy9_ic(U0QuxAJXIh5mf#hwsIZf|(4r zck;}8$hYGz9uN4h(C>h>&qTMVPF!^Gf>-QME)D$8Ump3_$(UXm{9Q#81>GWl{F9(J z5Pn<9n>8DC_*{uSSAA1ao`f~5j*7zwmXf zZL}eqS?J72=mx$N_@D(6?mXW&B?_de_r5vd;-Ehgzwa~V6IwVaME{a)&K`KlCyRb#s3kKRIt>nh8+8Z$a9^763(kFGuu}~7ci^6!5_AJ;Pg)Xh zZ^zfb`J8*Wa8617sj@DYHF?hc&twuSJJ7au{k;1)f9odi2;QGSj|V|_sXzaTA^Jm0=3h9q zjeIAcTr#bcEg+H6n2lUf{NHl>l^w@^){{(JiiR$*jqCtUclU?-U)@ciRbU0oSTGr5 zxqW&RBYzf(i&#lI@zmvQ{gE%yc!fr6LH`H+AN%_#=0^GVbV^!+BuZj+4kXjSN&k#{ zCmG!rdpFq;-i^?I9J^OnI}eNJ6CwHy-6Cw%zqx95D$-{G==^EuRF~nuLO5M3t~UKj zhqDv;)EWB9KcB{)8bDCuXlzF&+@VTi8b{X zA{)1WD$@OvuiCrFvGF-Gq1xO(LcyiyM!g@}=olrix>qwG~V;{;G?^BaZ#6Irnh=js174o6lI6GSko~ zB>!7@VT@@iZY$BzGYv`;hoZ7gujyquyary zSu=w1*S(9%e3j=vo6BsqrT>pWe~x>ZY!9Q{SF{TKmF&LNxM$-KxcuM+aokQl2mY%9 z{mS-RP5?`I<9Dp&BIZ>5--`EVv8RgT2Qc@t!9@6N(;H-cm<9jK^BKi1sGEu>@tf9e zhGPwqhvro`%Slbh55E#r-w_%z42KPVe_dQhEF zT|rwjkk&I*%xgWwNmnN{vXpMFP+t=6?b)_f77f7&kM4wMV-MN@#z_O|Wj+Ty?3$vZYNvYPSE z{JWLUJNdMM-B9-ZYS^RDlor2qfH8?XJd8@p|~ zYeb(BI?i}*v33mnFM1QhlLBxh*jVQK%o?tFYLH|xOnbrBdZRQ#g zjkJ)StYIV-aUfLF*3kHGM*hUJ0%rSfQwxSN`tzZ`5&lnL=h{iFRcHha!M(l*{VT3M z@ddAg!RGy5Dx*E0xWIRaPf=~pJ8Y-1+g)%Q%oMW2T}B(Pigr4iJ_&Ou`Z27>EwtuF zKB1*Uy&D`+-2dV5CK=}VW+c*KAx}+b+%|*1J>=sb%d;x_nvc;b3#mVtY&)Cb|5L1W zK2lz@lf5tTi!6YCeftX*@av#oX0rPS7%TY|hx5MGKL2fC?^VW!Wqxl|e>7u0o0Y2j zf_m`(E%5(Do-fZ^euPG2R!VR4gR5m^&Cavi!QW+Z!jf%NWuG1Iy+i*en(0WVi+Bpo z6MGz6n-{Nz&_^&4Y>BtBdpFhSj=8``fk>@ODdru$o zD>u{pVpq7^d(w>o{}>UXf43dxJ&XS@+svo`KiThyl=;*NK_|2kG}+sWKJq+hG;@FjtV2~Q{?@zRNO-CM zn!(vNrIO(AQx8A*ka z_K5dCH_!G!(+}!%-!?tHK>p9!?7y$sJBbG)cM_vIDn!2{ZwJ4{7->QSm&rjoy!dKPtIYteqb1z6Z}zTRciSKTNP6AYImx1E<*jG00YdU(SNo zn9o`1Ijn^=FBD-3I>dS-X}U`XR8h`MgJSoCWyc6 zHI{yFp&f~EWFHU|^`L(cboDt}*u}_VIp2OtKR&Z_hz{f+|ks+Ih~rZVPP= z@wp#4WgpcV?}xOj3bj068Wynsg|jEFM;-=6Ov^rHtF! z8&vwzra{ox_gE6((>DCC8yVD&`4MkrOck>XeeMn;`(-LCzZ01ej&aX~UmeW(ug

    D>Z@PK{dzH++LFrPFsO*pO z+3j*ieEefMQ;%rB!`K5G^K=i(Z7|&U^@V8>qF)`~+a-4npYN|^r#WMraUaeF#y^QS zs{hKTlZX@=4jn}U>Fm)O`o;a1e>Q{pPlal0_(V9EM1Hr!y#oeQ_`k;HP3#FrO-<@2 zlLu;onL`Hf$PoRq?6*H+|KGs)AHoAsmK~rf_`_6sCH~XBQ+@qCEtXI6f9dw`x&GeB zFW|n;P?v>9nV=^#P96AN6uBo4;aMX;hY2@l$U*tDsln4D>^3vo+<>;_5slRlw?qXO!AOe;n=6U5UHhPu`2rA8HazZxBdLZ42IZ zHx0sV-b(+BXVyEye}$}*u2{_9 zBJ24D=&v)Q%?>k}e3RX&@FVzA*#cur@E^Y#-5gAe5;)xpcmU6_2R)CDx`v);{~1F6 zyEFdEtF3GR;n)Kj!43LOr7x|U3$MuL){*{CL1M;Yq5TpouHpOJq5Y6qYYJ^AJ~>w( zB+h9vZA}XG|2%%FPRQRZuL7R1kLmxD_H8mpZ-SRK{#pJC%!LQS`P7=W)@61T?-P{1 z%>OLt_u@zK2eQJnfc{l1s?~Yq3Gj~3n!C(W^eoQ{2Y-i@aecTIC8&SSJk89VgMLN) zCCBV3!;O``y=G#Feyp#7Dh?*dzf_a+VLE&sl)gwO=^woqffz3znb83WS(TrzMl}xL z%YP9J+E$-_B6)6J!P=2q(tmPZv%1iK!72X*{gdVn`yTmmw$c;fKe8FkNcx*d&y{T_ z3~rGRUe;(8;lGrBxECCt_^VOOg6?Q*jn*lS`yA}!)6DrTR{PILyiB*7Kiyxblk+l{U2AG?jUBpxGjgPsqims&r{aae;H=*XG~N`Km?{KJVnp_9@` zpZgl}X}IajBWKMn?w|g~+-}w4ImG^KHdTm&7#*Tt#in2lJ>v#>waFNEm`oWvZE3W( z?ewaM8l#~V?rVXv1~y^+34z{{83>B~uuxJ1u&VfHB>Nor>(WHyYc=2ImfH2EJNMuzHgX&xuOR#`&}6Q$*joc zw22JRMmkb?@NU_r5qhPx>BqQvb*&i!{rC|5mi7tr0rTG#{I~2Mk1$jF-8ks$E_-R5 zop|pg-l_4g!M|-81!1CsGJt*;G8@C;5A6igIV~th<8-o)Z{v}A_IooGPv`(EY5t(w z1$~eRHZDZJtv$#JIP2Km%q6ggcbkXV|EHn7ZuE7``9A&0@PPQQDt~Ja7V0A?X?(A2 zjN=%Y9`N5Z=nFBp3HlH5NC$h3+sB83YfItNH20d_4PP{||1bXJg!vKq*OolV#_nf- zdYS$IR;<#>Xd?fLkQHNCeUg8={UMG~&^?nu5&n^EPskwM`aX<3TmFv-G_IxQZ5|m+ z?xFY0I@`e3=2JZoCa)W8O2nWC^||lc{KfhwzYBZRTX4%!_`fEzzn(q`|J#xA%x3gk z^U1LOHomSom#x{&k(mtX+2cN|Sk3@5)H% zzh>9at0eajqY4@YOW;OZfz_BAqJIY&-}lhAwM0nWgZ<+?IY_~fnAu3*ENZ0s>uL<| zt;44%=(oiOJj!p4nxGpQ7y` zaCjtx7U`xOMPDiZ&LVs{PeH$;`-=RB8{IK0jrB|JKe>*N@5_?)SKZqOLhustZ!eje zt}4iYx?n(vQGo-dQ==Q}Z8UG6%dRVLY<<>Sb>zLYX%*dt)0ti;F$#4Ut$5lpn162p zM}83cJ&35S1)lhSb`MWGOTJ8UFcEMYv0_@B^-HQ}`ej7N+r zQzGF{=}0}HUxV+*A|Xe^4ey}G>5h**u7`_s+;D2Y=IJ~;hp5CUwy!I`enNn{N+q`s7dS> zpO8yW_?!31J{Rp)dWISHy!-Kq_jaAhv8uMI#1g4f2KtRGmQ-$Lc!9MN0Y*XI|E+wl z_=+O_Y=DB!U)A|dT`2ZfWl9vZbCHMX%uEHwW*)7Zj_&dqXL$d zXx{~q`6pQz!bAMu6#54IRaZL^tmGN`-vIn!k=e?~%HlT={#(u}SjU(L{+~p&8%0M3 zB?_sZ!?-ImepxtS8XP){{(prnsV_8s!VaIn>9z}~LeNy$!MPcM6HsydRWD?-3Iq(MegwIC99YN7)FPHX_(FhLc&o_0UKZdjX zBAW~SGpxNtZkI?0^`~qcm%ZigUbE5l5B0wm2*pywiZ8LNh?V^v``e#b=Uy`#;B1Y5 zKGIi`a4E7~ry=1FYarqB1M`*d%il{?{%b`(Z1e{(M%Iw9Q8FV>MRz zxDfp)`ku?YD-XAWei|!e8e=uUG;ohV@oUgtpW0*Q2I_f47{5e3z#Ue3h=LdNAUbKQ z`vo2ukB;0IZ}?hc(8L-b<5PJ=_schd$K+Mi`MWeNsKGiY_P@-B+c(gjX~@QKxFU^j zTQffC>~!*Re`@QHZS)BJ=|=s(Srv8cy>@8{{RFgQMO-J~rQ2l(;r-re%AyI^W`>if zQ3v|MT=s;w#Q$a3TSZ@cqsm;gzx7BR(GO#e`q6)+KhY00+zZe@Xd}sZ`wlmNr111L zBHY^8hdG5W3iUtP>?b?KMdoNV5;ND$0y$mXl(E8CXpJl1WFyvJFQ2}$v8n$ZkZ?hn zgT}XkwNc0#Y)YMej96pFpKRhp`G7yNo!o8qO|yqF!W&Kgn;vIghb!{DPK@$5H)PzCeEPcktPwrzb!gbhxK~#*jhtS1zVmxPB zxv*5ePde{6rT;qT>Qj0C)Z#mFqslBK z?n?Tv_}|8?#QwCeBJ|sMbBSeA#AP9QfQ}G>D*gW|nP^s^kD!x>=ub31fxN$fl&E6= zw%f6qI=h6m>*#$nHAG!Ge$##asl~fRKgCPrJC!N4U=j5582?7_e?MxJM{2$V#_?O| zPr;tt4tmFZi)9oXwhk}D7mRRFe?DvN81$bbE~G7)5nu9}+GMhzm7$N#c_b40&Dr~e za8UeGaQ>wP)&@1NZ?TDsMpp++qFa(U!UBff79ePx^&PXDBBsQ=aAOtnU(HxhRMp9Vr( z@gE7S*XE4fU*uCA290XAk!x?)m|Of7uLXOVWy`Pw7vmqF!xB7=^GAK}4sc?l@WV`l zJ~^Y2qSAQUL9Yh%bq?h;h5S*T)$cP`65nNKYk$>n z4v)8hLK?FZltkKBNZT4SM@<;{1o}UX74kFDw3VQ-$F#Kv$S`@xb%%Z`mWXNO`47W7 z64d|2rVwrOtGmzC^SB$vJZ{oG142=VL(%UGO?g(hNI?R(1+c zWzy2AXe&|3qDaoNu~z)|fr;iOzG3E&>ka+kpdojd`wTJbA^K(9a89b1-9?iMRwzxTZ#*h;F!)VtUMqPKJ#USGv@{I0)55vM02aT&l zT9;)OesVd`&o|BN%en!lB>!DqHLi(!nPhCb{G0xiY zlKCY1nI-3*J$=vU)X!Hp-$xbl~O7c(TfDGHm z_%8vWb`cHiefJ;l5n{oUn9tgf=mf_p+pO}-$o?$)6`)`2f6(c4D*ac^FX3PMF%!eQ zeD4Wc5lo|QJj&y2y$*ES_t1aZEaCKh6So^kH&B@i{_P3yhfD1J*a{!ANAVlpPAq&M z^a`y%NfqtBiy2+ne`~Y;D?wkoxk?NtzVUpX%@axd5l$@!o$zzp&OhUP1fuVhx0kn9 z;^|{%hh1ggz~WepKU#yI=3(Z4p?%D=_GRcliR6nmgLrF8YRKad!#fu+3&r%Szzf<< zRdnZG4&y(QS%^m$kUv!SCHzesrEE-p5mgX|U3b5~f1EITIN{>sDapUJ)}6pNcfrlJ z`@BkIW&QyA8$IQy9ml&RahkB2(|Nmg{MLT|tHEQrB2H-w^?~%ikQQ}D$I9W^p-7Q1_J>ASC-lsEm z8}^a}cuz5Iybaw)e|ph^ptNGO>GqL{%!80Z(!eumdo1UkCD0#EOv5Zwi*r{Y6;6}k zEOlDN{TeIH{gu*zVqOh0Bzp7hbg3^L> zN;2|rGXKi{FAZFGhxdT~qtIXGj&ZMfPw+pBsSsgna@xK3*Pj!yF?2%4$SM<*I96gVbG`zei(}3fLA{W+$DmOQ|F?w^U1X-v|9MmxhHbm9 zOXU{CV*E)Se$wsmUksVCBC(F%>m*Howv8{y|a+{uW};>Mvr7!#}s_8Y80aomMaG1UKF;2&>*enp~wsuHWa z+Kp$;eZm^t;&Tjn37C(Sv}POimm!V%($Ahy3`$=Re>d=H2klGdxt)Ak#otxkKx~e} zAHL@b82=v`7iq)4yM}llHxr2z)NhXFGm8BWdjYx7-$7a>VbObvoWk3E87E}Zni-F?l<|^Y@S7GMWT%hLAV{ekNiKWyicEY@#!XHl5j@D80Dbk@%s(5 z=@#e@6`lVeaxu`F4BUBbA zzbD9lTg&^DHr+^HMSmFegnirY_kSnrL783(O62c2+O(dY?`Hgki&1N~@$5O9@6+E8 zmY_Sgj({AvTJP_%@@y}L7jC2l zx-Fw6`+EY?c0o`b&fLa)r_u`Y-1#kCO}lTz(ly)NPX9mRY#DCWxS#$0x3*zqBrR`m z0&5h!;1k=`yMX>b!(V}6cjEC@-&1jEqWLX%ZuhaJu z=--G&o=8iCl$*(F_zEQZ{m}oxIXr7vIDGjPW653U8i0Z;mVd9J9es@cpJURQllO^# zKI3k4-J!nHr!V}aZdeHDZ$cXPKpWKUP(hhRpLIL%jja9d{9m2}MKBzPYEG(P+@!#x) zF&?tWEf3M3&3c;${cT7--2$)$IW(B|9tG+A82v9R4UUXAfBW;_%`O5N5^GOj2?<`X z!!{*X#YHgkgW-uc>=S4}yIlnDU*`8e8)~CV=x;^#$se+u)&*q-{nZ_5TaeJgWo}^y zPGd!WV4wEazkJnU=4H+{l31Nt`P?tU4Jf~a=+C!RpmWYuGegk7p67myTZq;#2ZhBx z{gFtcT*fo#|5mi0DCGPqMmi`{nH}X^*~+LZ3&d9T!oJWyj3#j({cp|g5og}xe(QKD zbOL3*AMg8Ru>L{)G4R_ctb|u-=NINNd^Pjjz1U-gYSoT40ZE??^#K38h22Q^Vyt6C zf-({MGg*IIkVw5)mBRn&=G3o<^cVm28kFzr)j|HPYV7c8Jzy4|34ASFpJ*wG}8Z85P7o4 zJBF3R@|{Xed&0G)|3^4=T_rkau*?4sRtqC_MB49qBRD}N%{!Mvzgc>eHIz@95cmQio zIP@dTH4wkI5o09!57|8PH@R_dF*QTzJ?o&l}*9Xi36%zrK9?_sByBXLX|Kiyen zX;9T^NOysBU}eZRu0q}{b~fF3)Qgds$&)SFAG&yZ$$uz|M+Z~M{C`ZH2Ygn=(#Fs3 zf&$Vzp#=f~5<)K_B#=hvArK%CS_mPb2Bi1iI~G)~1?++Xiil!EuOf<~Ud4(H5tSmS zpx6HWpL5Qa7;Wa!K99K{|ug6|c7ydV6f z@QCHUjYWE;B*-j*Cx-e=}}@;{ye|8dO4v!+Bpj`>uM z=b?^j&P`!XJL&j?n)Byi4cH_WW-&99@@BjadJx@1uOs!IeU9 zyTX@!;E!g^{vhT*g;Bem9*u>5C!!sNEj(hPcp%$8YKqKA@Q)Qk^nWt{AwuX|tN?G3 zv*Jr@iJNppjl}aNo$=a1e+Vml43-zTiN9MwVQGo}k-}Jahkj3fnjtH@Emia``PGhuIn4~fjjIjfWJKMJq7;jf;niLV2h(>g|9IS zUogzegRkmvcT<1-W1$~D|0gr=fyJdacz*zGU5yv}0qBn~ec-?pQ_4p3z#=kVJYx2_hMa+e=U-qSdY%1t zo%as5+N1VE=#OAMOkpm^b4w5C4}*R&r#^9GJ$e}f_5bz1Ki>--+z(C|1)nHdv8H#Y zyNG8`7N3!z4~wz8wd48Q$!~ZJZJ-0Fi-7)qQxo}c!7bv3;u(1#1DH&HsP=r`oGo@LVR6dL%!J7pMgGvJ`pFsCW(DbRPNdQmpI;FIdia z=5tP<^3CenYg$s3^hYG*C)h*|LH~eVimiMVvPAT==(DOi75nqA+~>-HI0vmGxYFqD zcxFA7G3d(b9|6DiLhJj0DEiCLKWNsP`>6VpXLbJh4*5owMKU7fgybD|KgvPNPtM%FvH)Q)PfA8LlN}5ac3gE&xK#puu%R& zL`fOG|H$mb4{{dET0WmDxn+3eo%f(E2+?OfFj^O}0{)Cnb_Acz6IjBkxJ~r9h$n_J z-aUACK6W7Se?#U$7Ux_(>FUL|ia+cE4|auq4*b#;3ne~!6Uq0#n+MES;Lq-{;+SZ6 zCupEZd<{h*`u{e2>EUJYUY_|A58T&Si0<|h**&NECuY%CJyRi|WPev?!zRp!MpIWm zW_}!hYt^a$!V3u@)B*fi7rw7)A1AL{6u1JNUz?(n<6rX5fC|#nstEcqbN2)EO5yc< zh1lHN>?&}ITNz`?IOWw-wY5CjA#Y$^_@F86N!7z#LO$lvns`P+na6crYKES z1kuQ%uLz)I`Wjq=82J%=FVt}|>t8ET5!$&RaK>^=tbN8jW5(K#$$%sJ2SIof>1-oI z^v{_nGX?sK$QV}+``;muibznm9r~KFTy}tH#x@t(qx^fS#uv>ThwUHPzI>DxknYpZ zrX9^0qe2k>(qH4q=(hu_=XadBH2;V2N`h}D3Z0K!KbU@IF(`>*@XzJQesr(7--2gi z{1w+J{W*^J^<%`f|J8#7s`I}l@OW?ybzc1_Jn!W36KoJA!TYVfz=Dna!+mopHzT{y4@rm31fj4dHB6 zy6zP`&NqtB8ptfD2Cnw0evD2NG}K*YBljeMXkH7Z_9wh`7uCu|I)zI%-bfm8~7>e*;Mz{Ey^q!s~p@-p2lC*gX_sHi0K{ zcz;LMSTn|5_{X~RO%?h21mr!%8l=JX$^)y+_XYk~MR~it=gn^JnPF?-?f#f7D_MLh z0~YI?`J3zv(INWn$$0uE^oM{AOhfm101Ise@c*meKk;uLMzalXj)u1KztmwJR%V97 z^i^%TJu@)Kr=RP~0#%86hMoOsp19MtA;V;Z+sHWsZ@Edr`q1AbfJ)>`uDQGh@7u}lC|+Rp zU$Y7P;eWvxM}_)7niJ<3Y%be~QoRHG-|OH%)4cnjK9e^Ian_t34rZT`|DXXqi-BGe zqYzw88LP^SPcHM&igsqhi^4#~gRvY3{aRRIOSx6<6YOCgJaLjtcu8<$=@9*5^#7CW zh);Qw82O6s8W!?G^u=k6zbuwrpr65eN8$UH{!f}YVal?ea;|D(YQdjwctGCxhfhB zyM&Bf^X(Ag5Q67laMy88`;i(wH-Qap;Rb_(c$HI=s-Nh@)Sgi-rq5HL9MJCwJyrM$ zu8PP5)q781RBFMM!ixzn`Gkpbr=j?)i+1f@3|7}#d>Vw8qYr+G^)7t=sz_x*)n5i9 zY+k`OU5wrE3R?Rt=282P@{TS-;!J`IWzDI|j40<}*!~_N@wf4aTGtVXzp?F`p|m=SprWn)rQ&l<*bBJ(Q!S6JJotTUaB zbtxjDJL5hC&J;FuHYda>(EkOSUl(XJAOqeY=Dyg^xYWbNn_aF2C%o|f-_Co78T#Jk z*kkZnO}8KXX-l(`Jy98$6yK-lLDgSQ;Zt{d8P8})&kZis=S@If4CY_qQl`NN#jM6Z zK=sJ~73pok^WBs)M;`spas9wPl(#3r1O?Ccz#bRL`Kti^faq%XD0sDabB~$Le6Qw~ zVT`usVhXEJ+Mcjib>Z;5;Bo%1?05s<|0YPN&iuX>n!7yChg>c+8gmlJrMlcsyddo6 zE{AM)f10x;`40=w)SEzmGMNz%GCz+{FFeH@G?VD%VrU50KL?#+qQBz`-PaBZR1pf% z7yk)yoQ`ZzUampR|0HBUDeRy5&~FaDb(BlS0z4o3quprp4yV7LLE!{1SVBB@Ec*9M z`z(>7m6`u?ti_{d41A^aHyEj+oW=z{{S5eDmCjXRE4U({mw?n$^xX}tR^h)UFkV&g zd5(eNZ2a%vVQ=Z_Me@KeXo3eoW=H$E+4P1^=3%oK{_BL7V7P6^zIO(T#ZM*@&XfLF zg%PX^FDR;2>;F35Um1QJ#wT6l7@>vizj?@jNO+_>qY#G_s0{sl=ufAn%NKSI)@`ld zKZwJ6%8--TbPn~u1Ng@U$e&J(`UrS$IaatDL_*YO47J8(Z;9ZINk08HXx7UA9S4U6 z*Enb`g8mrjH>BUnju}Jis<1qtnlIY9rG$rIImn}blE>c47yi@s{C23G<9Q*O*r(60{{B(Xa;WjCnIZZZ}6 zh3x51+XAD?h(cqn29=kF{WCe#|MpabU5NbY>c*HNu!0M*LM4EMsY##GctYBqvOcHs zW}UyvLca?05T;+qT37xH*~#nC;zU~45c;LD<<0i#U$#3zVl41SGlHyCXNkS(1`h=7 z?_iGL9lA)w&ulXT+v8k31EaAHSB0m9II81C`t%jmA^BSl`c;v);qfm*+OB}U^z;b0 zuPfh1AdN0^##;vciNasl`NYDAW1E9-{u@3U$QT6lJDPu+rILT{CQxr9+zijMZ~kd2 z!1)Q>B8^uSKNQui^Plp+Rb$2H1dp>W$0MKn)8jb4Q8kJhw0961#3E`vDB`&~(QY@P z3r^;VG^%UVwS^!s5<>Jl8*<@;zszzkuwzelGeH3y=Ok7J`W<;f(S~&y+X4P;G=jTS zk2+Bxrr=flP${OG6Yco6W@b|bEg8`&MEJGQ3adFmdSyU{^D zbYsyFOS{g*iVZazY)xiW^tQ4g*9PD>T&M9Lfot8-D?)v8;C8hN=&iv zmw%b(nT_(^-J$-kVs9?OQnc3@a8Sjz6VYPrk&dnKdAEW_Kj_D@zimXblKg9oo-ah! zsu2AKj8H1{+k*o`MEqJPz{V`tTWC3DYMjC5O%-e)gb~!z05dA^!Iqxy@ z|2T{u?{wx384eSj|_@t{Fb1@Tnn}-}~kH%h? zktkx+GKsj{1r0++=Vqr|=HozvVvrPYNAo{8~Apc_#Qm_NRjbgUOa_~1=&w85o zB=pyUzpIPwb7RT+9|do|%KX0!Laa8J$yDzJ?~*r*@gI*o5&i1SerM#5`} z-xB{*G$TJ6E>*Ui&RC4vAd5yZ9viSFFz}2+U2Iv^?F1r`$OdB;+C-a6bo1+>@t^6w z1@|cW$G}YAZ{y&&IgwApI>`TzZIfaaA8{pGAW)#(_-+$ak7d3zn0N)RJnq!obDr`$ZFKd_IuK9VO`jpV!mU)?*ou}JJpT=+ z%|DU92keJlBQ(Vuybs~P5k_?z8*z(HyYasK)%Z*Iia`g;DjEN1_W!|rUgy(S&MIZU zo9kKP&L%?tGkZUIRrlHV{S(7qcz6!c|6RzMfc}plGb|aX_t-DMpM7bs_dfR?rCQ!F zWQq14Dp|0`B>!b`s?FMufiDI!!od~epEd^2e^uaH$SNG^({JR+u-&FV)QT zU?3g^lQ9}y?KkSSJxayG8PIRREwcU!VK|F*F8b2$Yp@oio9b#p|2xpag-8J9-J-izu@_U$e(wRf78f`*`GD@8u-Tr*aGJxVS*D^3)Wr+R3`F3cj&kE zBKfTEbhUyr$Z!VdtNyxTag>8&o>zlt&fUxX)*S}J6;(Ch(^--O;K6v#I=%FThsLiZ$| zsIKm7pJU_gH$+?hPDUK%M%9(-W+Lr=aA%nDAI&RNOHafaeh)aF&Gbh4Pbw5Ppnq)V z(-u}^CL=(00X@uB;8PTRRRP$`+#c|6F`zsUg!=@wtyPw=<-*ndGQs~cwZ`Ts{ zb^}>X6#x8|`w}$p0dQADW13&6$MU6_1=c{Vmw(_55a&O#KI@?!-)R@ww_Jw%)TzSi za=uqY{Zi;}<_9!0yO`{MBN(6HQl3WP@3yh(JJM!liW|l_EGN=yB=iq+wm(hH??app zJZ8N%KA3ZOhF%QOUu#bgpYW5jCK8X$Zd+^*V2k*`Ekyok#b?5C%BZQC75=LgR3ecB zvJL8*PdlfwKW#%s2n)Rh-c;`B6*kGYznySp+0h1~gIvem=S^4QkH0nlVkh<=M?ZPn z&1S`2Le4*F?j zmP%rc;H}Dkxzg|d7Ve5+&zVv}e+pxv>|~o*m&*0HiLr>M?`AZ zc>D{XFa2*Fcj+v=k#@9a93CL+{3z(xVg}>Ly6`8@k-vl7HlMib(Y20+`k!JScg^uX zKL?*5;oRBA#<+{%HOi^V5;mgvWmr_YH;iYR0`It=&j#TJq!x za7{Cy-;I7uFmHmt@5J-boNtWRn25XgLi9V^eXc3~|CgERH_TS@GBk7fZl9Y7*5*PCjimQ;n>R8;r~x&%4I*y>bgQhkh@AHLT-&6-A%sl&t@u z@O=*Smq9;{C)U!Bn#@6*OYrfRw|n=aeREUJ4nLaj2SL9H)KXdH=+Dq^f}ByzZ*VF8E0?>ZpS5JfR=10g3*Cb*l{xIs6RN-4h5ky%qkc2%DGG^DK#PK_FXN*axRLy={CkQ5tjkCo zb-TQZ4*lKyL&f_Y8g)L(hB^+he%0}$mBt+zk5N1b*KM2 z@v8nX)--f0X?!X4EgA|%J~!z3zKl-_^oOxe>MSw_ZdHz$}M*1$>&ArEZM3=&Sy6I{j6hOPxj{(EeJY zYliWMy%=w0pirEG=nscKTOgy4v*SiVKb!nozajl^GVk#Glb{chO$&D?b|5}-{bNqK za^OFn@lJ6{|J1g^UVZ`ucmniw;^_$ezO1Vt|5-F+8^h24&wtp7J96L^(VxJ-%1{&w zf^Q!=$XRiwx@qqH2OAIL>)nlQccAI$4q_b=b>Tmbx^wt{_HgR_0$X7Fmzs~GJ zBfHEQ;b*S~__I&YK?;%c%HuwXTXLYQ>Pt%*b>W{?Z&Ukm``~f<+8h4UE<6UhLIS4n zZ#CxO79))-2Y=&7yz{KB1O21+7rTxe@O4Y@7q^-t*mJ*kUwM~_)7VGN(w%k`^Sqt) zFBvQPiR^!iSy!@l)TIsWSq<_{=*p&b8Sp?iaw@(Ld}%WEX8gy!hs?#SYz==M^&Wvmg`re0G4z6t0XF4>Mqp>$_7XGO}7Sg*p z>+ax|@kpAF%s;jtRzR#-?q|Ero**hREdP$<8#GdkZ{xA$yMSFVU;3h0saKUJJgLCa~zrx@th@|0ml-b`IxX{9Agdq8 zo1*c542gfrjKmry#8s|S<<9{`e}wH%-=T>L?>>{Xwg_;Z^d7PgcK`r3^cXQ;gs&)W|brSTgjn zrQ3$V3>Xj>{_+pk8JJ{4pg;@m+*ZQ*`#_wqnCTrHpT{3&P{^;>#hZv5!zA@ z`j-&>RGY>*?GpRnT&(m>+*xzMj$?mO{ey8(RPYd8oq(B=Jd?B2prl zrIFkd4abgQEaoys{msvIDKuugt2Q1Ra9t>OAKu(=9< z@HqCibZ5!DCXG8El-po8iwvjX{QE22JaPqG0rT~kxeLonyzS_o^nOJ4jAqY~|3~%x zRPkK9X&J`8IkVr=UmI#dW!h33dI_{ozW4&ZEks^C1ghk1C|+?LTz{hbhPa#g^b!8$ z`ECgw>2UtZQe@j`Lj1{#c#E%r)EaJ=k`bc1nFRfnykBU)Wl$lCl~0wR70a4T?H6`IlR4siMMc=o*CH6@~s+ z(+)CZ6(c|H?bvGCn_^~kHQ&qszYYomXovD|)uQh@5ryg3#3Rrg4(S8^#fLD9j_-6pfxo%d!NmvHsgA6Eh zm=d8+l^1@md>yUup^aj#fuFLs;dA_+-_+xQFWK#IK)uC9(gf zaB6RC8-Y%$$8Mtiw*vgsn5TvFkpJsCX1N^i(%z_RIRBf9tqeRpSjno6xxp&MMXlP>1lY@fd5U{xe`E>Yi;$@0SZvHL$^ zKZk?5^FTTKyIBtYe!SgM^Ulu|?!{wWF@Q3s9LXIO}dKLO0`-h@!szYBVd`Uy$ zAH`?mg2!3wxcEYHMQvw>DzM_T$En__@?DPbTaym&DdVv!Jp|WOTCmn1tEP;Mq7|hd zsw(DiTZ8_WL*MU(zgcGlt%j~>_+ObX;mhFpismUZ*vDV~3;lbv%jLv)lxWeitYVFr z?9J8KTSxh`krV!2${%#D~*VpD}FKqw)7OzJq@SkJd z7v>ERc+)`!90&hfo_|0_7;`Oq(56{F37{i%RO;2rD|{^Ou+$Ttf9atmH556koQL?+*58d=rciRG4N zjA(7%u6PX2FZ5pdM_ZNH-}*qm2l{CuvsDdgRGG0FK>H5h<;{b}8P1+R5ry5Gm7~>| z3jJkf1sT}_`Zt4wJ52n^bM9mFUt5PfB!8IstVAM+8ByUcT0uVpole@A>c6TYwQ}MH zR{||*!tZ-CzSZe}BmOO5txqA(TQM|_n!7;TR5wlWaY+6(1b>)kdX)G-2YO?P1;31j z`Y;;n8Fbcn%ouQZ%6Qxw63TYch#oEXJWZbLEa_*&_Fz(DMX2VLyp3Z=Cl#&KxaJZUtN$rn~-wK2GJb) z^^m!;rs+z7FZ%OS3LHswDrjrac+GZw68@Phr&{Q&wA?koIM8_Co554Fnf zFpbcRNe`>@j(K%3l$nTcXto;P#xwFb{WiueB$;@>LMj&yrF$gE#M%if7iWQ4ErO514))yeDt zvPP)>aTWR(_W#7P6AVTEEup=gX=N((XVBJ-wvT-U8kdnOIiSrFIMaGqID2AwzGAkN z_}`y!Wy!^Q&Q)+f;1_(vuJW!ye-HG<>);3JtuUA4efiyu)B$=U5;lfrHi}U`8S4KrR|mBJc~_os7(o2#0(hkk zI#EOD$>Y$HRV}@GEHf?ryB72-(6(Ye>8gT;mjeA|K7C~(lC?13JB8eBYmu1b(|E@# zV^_j~sz!b@me(x%B-Wwec}^&%0_V?iAaru@e@*lLB3H{(MyI|i+@jSk%u}%Zd9j=4EP#3ucb6yX?pEl7>vcWJx_F7T$@tqCDu4_m*6N2){|AvB zYJj~+e57ZFVSj1C{J%*?xLoMV;+n|cvgxhy+g}a(9hjG_lK!`0%%vM`rSGXo<&|gz z(~v+l@S@BAe%2nu692fp&fLb^cG%wTH2ilAyAL0^dXOD!2>ah#)?yX<+13I5`=U3^ zOr{T#Kl1+PLvJ&Jr~#La<&&K;|vDy3?|3FB$%r$N0}-{AVE%7kHn7dmaXj&iGP0k$>`M z|M_gPl3lfBiM0#If3G6qq&yi@XR8J{Mz$9H2E z#`wE|S|G_&gv{H-_dPu2e_O=qV>uXuKWsPXC!pCiBJ27GtV=%G$J|Bxt-0MR73%*O zSL|&7|N9U4%*yt-o#KYEzMo_s7x_B2qMDTpW38`otU%XM#CxGX8=^mjkzWMmEsQ`P z?%7Ohhr@q&QGdQAG!nrwIP<4{4!-3y!)o{%ALCN*YKZ^ST|C%?%kHR|fOhsceu7q5 ze`oN9wY*pBue-mt1N_%!#zVP=$1&@{wGf)pH-y6L&7G=u#q)(f{_if|THaJj- zgHiN4xK?xD2KfJGp2*<;Ygs8%nT6qa+LU7_*)0P5coy8zc_(dP57iLvHW?-QXBl#R z)usOfO=Ir?v(oOeKeKXvAp_%9`XY_LCvQ_m!<+cDo!Re+1XM-Z;1Vuu9r9@hbDqqd z8__z~J?>WUu2qmweWhi*PY6u)Kam+|NSng_ zUrg^+|M+HjLh%>3ur@|93tjC2?EY9>dDlanhBo{9*X>y48oGa(Hq@sH+P}`O2Z4K; zYJFwARp6g`*+<-;>=_GK%geY$+%}&+Zu04GqmS)bgF^iV*L?0${KYm_WNX&`EsRAr zEl(!ni1=?l`0oeVjqb!FO#Le~%`|r#^Dl3Zu36Au&DrEK`oTJLJ5ehu992l%jf|sq zEM;|5{q5ECUHsRP6;O*&3DZ~hLB(5ahA(508QbB-3?x`@^bgVB;eKHJo4F^zxOgDk zYLX4@4ue%JM1Q>9?8pY{zGk<-&D;n6YKZ$Ce?<}Fs57Rju@C3%Ao}>Um9?*Uw0{2D z;1_8BqmV2E8SykUvpmKrl^L6kF4c;fGEj6CIAiv7r+ob9N%YYB+yiDloS>(%AK49V z5T}z<^lKlvf7&7e8iIexLyF19tN7=>@Zu!D$D8P5Q}n_A<^PuMEg$e=Rz?%%UYvcyZ+vzE{9nc{lV~iTVz@gakP}NZ@`R<^Vf#nFqm&L7^(5he+xK&4pLZg z;Hqgg6Z*nU9>nIo!02tA?AP3%U|X87{-22aiDCVH0&o4qS*a+HfQqK|a3;E_weI{aU~ss#7+b@vjP(#JDK$Cg|_>_F?s^NW7mk=0WIT zONosdgikzpzP&vLhbaHzBc4TOb_D-+%-i5bgvMWiO}&9OyUZ?W6fkaAnfp zY+9NR?Ks*z8$PPc42^Y}WV!J`)xG5{v>m~rZ03P!L|*UncG(G>xq|0gkpC}^z2PhG zIqwEyV|tLQOR$6JX)4;;ub}@u z`GG&A|F0tdySZBUN&C{rbiPkvRy!b1y3i8s2KAZS#(Xzf4|A#hVGsH*uYWA#KNK#E zV3s}r!65u)Kk$dQVpV_1{KDPG@cky3vTkk3`2R!xyEgRygh%!Rbe7K4CM$)XSno{c zi6q{tylTR^NgHa&=*#*Ywmi=c)iUT1|-Iv$F-@MD&+_=BNza}xJ-Jq!W-)^);)lGF8Z|L`bEPGyX zX?{9Dzdsxr!(Na9^*DB@*RbSU2V&OLGBetJT}na`OonaR%UN{ zl(@q`slRyx8W^=tobZ3L|8|6)a;qu3qs~8?f5j&1G@`2;^jrG8s{Dh)n6IX+n9ANB zVptkLe>r&1KCFT_O=Bp&MeNyP&=6mitiQL=h|mkcKR!?XwPW^Y^S-T3)@tc^X}rH9 z?^C|(G-g%)fBF7n82xbnyV8648x$j^T=dDzPdDh_3jQ#iH~$O#-)hddXUq-I-(p+X zo!I;TGU4;*)8=uk@87dWKTmY@zwJ45+(xo%CLvKWpx6m|Nz8wLPJQx52!9!ehAC;J zOCFb2e*gQ@u58-b9KNj%{de$o3jdY`;&>2I)uo}I$=T;=v(90a361}5^9&lwMaKU* zyi+e>HGR%Tc~7}soGP^b2D<_4 z*9&CZ59i;RZQkL8B>cfk-Z}QaQ|3k6l^BJw?1$>VGGF!fwH%FqK))^8#{c@C>eKH7 zzjR`^QU%6r=Kq9i!_4A;H@i&%IR+-+Uz9cC2t7Z`X;;2sT?N>_Rx$r?u|_VLJ@#$z zPyMhJPiH6T$M-_jW-{M}aK7jZ|EY?6VfyjNoi?lwVe}H=1IeRYPUv4zb>SW8*Rn^< zO;|nGS;!{HrDE;Nce$#-yiz@*j1*( zSF-=qk-uMpfm9~n)$mw0H)Q(ruY9-d_!I$Wb!42^GTXtG3`OO= z>dW4k!TvOmZ^zQ+nrOJcKtBhh%Om7dIEoKQ*)V=314qoy+pswg<;x~A22Ugr#eivNIc-4}-dcq^h*xMU^Ea1L4PW7d^ zr3k#~eZ-)DLRCM|xM-K_u(8&1Jwx<68ft6O|G&L6=qU%u&T1 zs>TM+g8$18ta$inR_q5x>t_r6_9~dRrg(NZ4cLM11Ul#(XG8Qyn#rE>Z=_HyswuwW z2grXp(z}myOo4y?Q8ww}{BITSmi@gVloe+t+mtS4-A<+FNu0fu6-v>sa~ZRBc-Us} z{ar*-uZA(`Ho^l=<+s75`rPU8KpYy$AXc8Dk7vL$51`F#<(B*GL_9$qh^e?2`sLln z)cE*`oLi+r^f#E3-u>=JcH~%-i~e;t__Oi&i?$%)bpA?2stma!J)^%hK=u^nWyRsEAd1 zjLJtlc>biFMgP|k(ILcDj!VYV(8Kfq>&%y2kC2~sBl3SH`S;dxX5ImAE7$uE*1GY` zyZjHz_dXO^Fo;j1+1aWx1Fd{%py!3iXid*6LAM_*R{sl`rISPx-^BOVaSAc^ad!-a zhfd@3vHvbK6UaHBr@?38jb9J_d@q^k&)2Yx{AR&iQw3=hqp20I@gBe!==_om|5rp4 zsm3Y~uAa!s0QE76bvl7HJC^Y;5B_h4y_;LQlJPYQtLA&IKlJZ%&$y-V_;hn3ME|h) z!7Bey5t`yI>NMYG{zCq5!zM76-pc+ce|9GFW+Px}1>L~^f~y@(r<|K3dUe#ZWL2l)q&Q>pln`PB{v|2U6X%;$M!yy%2X6RKF+ zNEI}I+Me_GW`4nGG=e+2`t#n2XQnYnOX1G?=9-PCkJH_6ph|uPStt5`5EW!xtgTpL zfA4Ikq9#qy%&xCHSFaKiU|9Y$dWuyr%)uOKgH|Ejr z7I6M#+DeW=FUfQ!?p_t&Ymon~GBH>}+*3OXv_X~y!OACH&s)%v$iFX$KJAH=DuWMv zHE)>AyL84?Rk;F2ygy^_F|Wd3H-IZO8@j3>dCKx<03*_XJ!=Xro`XafZx%b{xOt!I zzj^q!=KK7Y#>(F2rrS;+F@ooBLr=bovw9qPsP=(Wi{J@ojh)3&_rKyE8sBM zhIKV2?r10euYZ{r%t$!53w^x(LnREKJp1}NcBS*22<}G{ zDRlYR-_GL$%4Z}uaZ68nyOBO7^Iqv+ji3_CK9e6j&S+HNPhVQpgzwUk0F9VAvaNtP zlmBxJ5%@FRM)P0vArDPwy7}8Jx5K>n5dB-Rtvyc++%>bBmDn3>;zH+{YDO9M)<8qJ zmW}X}@(=~*uf|Xs3BLzdlxG>C{(K(^XUI<|yjmBy=^gT3$^Np%&E>pViU>Se0~edx z-i;PrIYfU467nfD(qBLYOu+z|by za9=cc_2swn&E@m`1ls!$Hx1FJ5{`Wo{PQ)FX|}OH zPRIVy2>Ka}ylniUzX;kx-~i!28qnK1(3dpSrM$GwkPSWgZAEs1G4#KXvD$5(a>AHT zhyEOQGuYN;(BDo=S_uVHfS))=e{KVE#vD- z4Ut977%{5(@ck4skgUSf$Z@Xt`}aXUMG=uS0wjX}I7r)jh=)7x+JJiOZM$M8F1C@J zRvR$Zl5vuEO_1#IzQphCss6F>hk3!{jDvC?4rBy`(~E%vs&V%)X5k7}PVB>IHLuv& zUMYTLe|4ZcZa2fQH3lze&G{&w^G|y;zzl3Jd&rpAh=`qfaFpmP-&z!X@9N9nJ|X(b zx)WUT&C2$s2n3yt+roviRh0pAp#D!Z1w_>@V03hTyNnee#%wX!c!GlGW6ZrIP39|tCo3)dK8yjH!#8(wt&57uuU&gD9c+V=lJ&1-G&Ait0&j6GCr{xiyz-}oUxUdoNjEwLSSPLAP@406R zsEQl#zSZ{6Z_e%}{&p(TCEWk>SZG?Y{|+Q0T_3R5Ly*i{n3KxvWPNx(g1(lA_k(Qw z1<;Q`;>7xABQ;?fKgz$D%qpo$D`X#UNz19^Ww!Hu0jPqt?<*2mEo68NTXZrfABS+e?dRa?B~0heEJEy<9zUEIoNuF=l9}u`-T0#*u8=EV~z8vG?hWKt)#Nb&OXpxNsh)zWsbZ zk@3IG9$&^^|L2H9-ABgxTznk?eKI?kcgcCO60giRHr;I|GWj9?L_#5&TeRP3_n*cr z%l=)N6(J1v!r*acdMRsRpf9bevl7L9BjNTDMACi3Ju~6I=Qz*(>SPW01gz0XI53M` z3&9J>*u;sKj5kDUd`kRdItTrC!JfWLMU*rztbgYaA&!lJj01RBwdwa#1fm}Svd{Cy4fca4Uw?%pzF|3Gw}0bV4Od-7=^vvGrcjXZ{m ze;#h96I*)P3IFv5z5BOmVY+(%4)wn?8etdkFB@Gh=bzKICRqzdnOK{`tV&`j`+0lb zy1>^)rugeYd9GLZ)P>KJWg?3`dLZ}DWaW3`&cW@V7H{V>2SHU;fd@qEg6G;thwOoLd#VD zb2T!z6{D07{q@MC&&*My9lr?qTj+g-h5Z%i{|99Ci>8O^Q1 z+BdvZG=a~Je95x0v|v^{^E1U?e+BeEmX*}s*NxPIcB~WS|KEVT(wvQDG}a)Mel)LQ zcN6|{J>&m7>*56TKQlkVf8*f)aQ>BYoCwN8pU5M2%7f%-YXg6rG|}*qG_GiNl~(Y; zIC>_uujHZfjE4EY87reV{I`L*k4GwuV)t3b@7iMN-wpkTIn{0S`kJPky@Y?Q1paWH znNos3jRk*H10PVLs}BC_S^JRJ0{U;6hO8|0U(sgrxQ_Hs9NCP0bL3nvW;(d))6PV+ zv-ONmC$zm>KFvp3&IjlFH1yv$@6o3xka!oMf5jw#KRjesmf#gFeN50X>(liO{7OATz0sQ%;L z1tK73qkkrXz*tFi@^*X$UEn{(6xHPx`BH?r9Y%XJ8jAm_O#h35$3rq_DD-E*e{-4t zG`Md%ku0CurO?mB58laKXW#T!(%)uVLZBcl#vtXWCovJ;#9f zk~Z-p)`h$5RN@gXh5BC#y?-bAe|zHPciP|Va`1@l&8J4S1SNmEF!!naJ&}1uf1&?v z;J>~l;~xXJrLg|iu_C%66{f-`MaYC|u8eyE`rGV7&>uuBgye@I4)aMYa#u_6M_TW< zG5<};PkZB%+hO=yJquO0is5G24x{uTaa5qi@U zp0(te6aMcmyPNFi6YUMy89ncFH0-D0fHNiiUkm4&x3D>2Ul|gE5P&aLBn{9%Jg3lmk_)F-!psl zC0g}2d4ayPzqm7Gq8MY8)j644;@M9Zu@=_xS*Kyumv7+7+7euujMH=|Z{^=K+N^4* zvl)fAt>=_u;V3z!qgi!-`ltEXXxMMy1N@H{w*UU=j-qi<|I2>kjivteaWb*oIFxHm_YC$GEKb}!q&zz_8f8AHe|M!FCQ;g9OI}T6O{ZyZk z#@dJcdPk8z2TJ;X*lorZ`4hRqjuVr36x7HzIH@f2KZdtT{R(7e}5XyY*WekZ>}4O2Koc> zsC&R+K2DXAVpi&V%x|H8##XeYYR?B1PiM0lyCH=pGXudj1^P3gyp}sM*rS)jeLeUy z3tz%H=pTpTMeiwepvFAli12yRK5k}~=wE|fGjv4w&#VQLcpv!KzO3@?yi*y-guhp; zMIrOQj!$bC4@E?%=4o)Pq_4`nw*mS+kb`p`fBb$vq>1n%?lM85EGYwSq zUNgBw|LKbDJq!Bxn=$zRcG!xpskhfD-|8w~<4|@VVXK4udz%@J9?;L@``{AZaWnE@ z8}!8mOOSoymQHxww8wmFhmrg41-lH4o5!xV(7k3KG=(MmZ$tE=cu-;U(TPrx|Lb*Y zu$fk&Pn+qj?0?<({|fMRI!$b$HS(}3-&k-dH{&Mg-vXB;vi@W_?9I20?Lu&t;6Lmb zuxGE@MIZvme_~c+kGI+IMbnc(^T#5=#i+(erga7wok zHSstI)r0Ov_(~F|CvR2u6JZd=e?sFZCUAN1IJC7Eq<< z*Q>p2_73lD#(#}@*~Po%&{u4ZuFZB4_STD3hv`iIori5Ic)ZuaL@E1(_+O|dMf5MA zXT;Ca`&OK@n$n)&nu45A{n4dJ%P8osVa7TlC*tfqR%hJ7?h`Va-rx>;pF#g-yv_Mo zA_se$LiFcCe z{>K=QCCdL=l?UE7eVK;`%zf;z!ShA%-$eRf!7L$G@igP#hRns!xfHmlC$}iBwG(SP z*I)6A(7u{7|N2dEjiyCCpr6O63l}JDv>aox7$mh~Y%gL__{Ez?_7mY}&Y8v7Yd6ls;cml!Y%UuD&I`5-(#JLm4jb(Zh|Y17NxNZ zWFsk>uq%#$eii2EZsO==W3A7#&B*v9n~UlHJq5^OWbMDP@H*he{HA*qnT~l`&0)o8tOxl*!8_g5C$*1ROk;vj*KxU z-EQWW(>#^0$AGf^k!Ve|7{py<)RYeN!I;_ z?7_nM1=ny|mrCpUGh5BLYbc`?gM_g7)W$-8H5ngvo2ytCmh(U==i9a9IUddlCwP9a z{n#b>^bcW^eiPj&k+mY*j}Sew_^JNcR7SRdPZQ}`Blh1RCG?eVN%+T1eqvY)x$u8G zwB+`#hPMFvPkOJy*L8?-yMyO*@ku>~7k(KhoPd5$&i)<2A2l~e8UNR82KMjgdAlmw z>co-B`#Zqhs;s8f)`{wI9;1K6)#W)+Q~PvU=}-P<5nh9K7!ZQYnrj)Yd2 zzN(a{Qmrt6ZIQv_q2C+{vC3sq0fqc_#FK5ad00MA^87X`U;Ku}{lOCaRef8L@w&k2 z=Rb`9Yj!yK2Oej4$%SGvPh{|I3+VRuHNG65zGBmE>eGpCm zda=jK8z6g79aVwKdsZ6QjhbCBv-(m-O3;Ib|oNI$HuR(l`@Hfwxbn*}G zE$P3Z+F@JzU&efiPwX9VF=O0R#&{sKIzUm{R#SSYH~{&7HUG6(@p*jG)rarJe`#=m z=D!!Kr8(9%{0*EzS)ZnZDFEFUVOv1|HFUCRrV07~&hkmuHFTfm@c$L>OF#Z3lltTR zyuVnJS-eU5hbSuFwoW6R*<)0Lx0gQ~dOn@sbc0vB(h}7oNTTg=XmFQ^q<F~18e(hwDn$P*nJFUZ{}3k*y^W{DumR!ICr^({`=;2 zSC-a(2>vqGp5$yE?NkFH9v)Z!yP)mMuP5BSvYBW!8bCcvzbpN116|bsYe~C=mq1zqs?ruj_G9QK|cyF^sCt0t7C-;+W)e7*Zqb6<0IB-b38TW$k5)O^&Sr| z$^N7I7Y*S4MBXcD-jLaiVx5K0KMAx;@gUvc5#jIR`975$=%jna>jeE%)ZcxEGj0#N z5sHn8i8_l8+SZ2gulvo{M8BVB{Lf&kc+FmCYq(6tvODrdBQB4h;`!5{s`Gy&y;L-) zuo1e1e{2u`DFaX&{wO-BC+qJWcLB7AEY8cZ!xm#(lQ+7CV)8iSWcg8&#At{?s|MORH1AXbQDq3{n`|k8# z`hFk&)%jo6edSr!XSiaS?>%IZ3Xn}*uy3Vo8xvn1^Q7$f5qBQ z$o79ji2gLN@jK}MW$zn&^3M{R^@GiVaxVL}`kx9#MgM1p=*#}7Iv*o_>ROSBaEP$d zW0?n8pJMn_krkCmrXBD@_6_WP-IWUkPOR7n|9Sl3gP>o5eW5Pd*S|6^SmpXCW(}lpgXUd$E6uLv zzcOu8Z46=abakYK^3`QPKLPol!TgM3jsAnDRrt$A_6xI;d|w~fA<*v$x?-};^{!_W zg6FH4e~35w9_#CmWT!t%|L?b*SY0#ea~ij#B5{;$LHoMAF_maX0@|+jW?fxqWj)rv z^6x1xzA6FbGe_m{fFFkbdV3MHPY#;ZVCbi#-7K+-z1l7zME`emt)H-eR%De_u%F>I zxW%^NU2}PhXe2^kIiyGNcF8|wn@K_!)hAu5coYr&E?ypgGH9hD(iJ20v{A&>Rj@`K#e2+1S#cH;K^@x=!|&3iK@l{h(!tzA_)CA$OB# zqjm{pVp&0J(y{f*e)$?m*CWKhcXkEPUt?=ygZtFmRf7MEG~|mx{*5+Q@X7B$Ke*p! zf`1`@im!32(#0%JHH(=Ks_C+`wc*{0LkcdJKFIrMc9l;e;|Sza=;FrAZH8c(#dvN&C_t2qa^bGJEp94=y$?Z{c{Z?cW( zY550}iP601ZZ{2x1Af$QHXm5dGGH-g`t+s!PJrK+`t(=8*YYpUDWR{Z6Vb2F_z#3* zCoyWPXf-jsRz3>n?gjH-N@tPsebD%xL*SMA=ftBq|)dqtri#=H}Kvj_#nQ-h3TD_DuzvNBuGrmS+Z>ww{ z#LCkIj?V@Ex6h3-MVxhm=WoUCkOe;NeXl2+_bTIm&5pr4yPp2b#?;7@Cqm~sSzH%! z_ELVI6nYq3nS8J8BbCwF`_uc`jLm$W`VL+9A#NG!bf){kk(&nko7_pTXq(9S`DTdz zE>qjfqjjsiq2?jJ_I%stDIZo6%Bo*4)IXIxcpnmcTonAbz}?=eKpfd8B8jWf@3 z{(aa~b%Ti+&FH_XJnH-->|H%1PG*RHJS|jxqLz$$Z~ka!nk796t^0ZI z*$lFv8mGzf%m=H%bzu+w#`HDe{x4%Ldb*#{RwtS_?G<|u(J2G55lo~1qTh<~ZVmNp z|NNbgT$2a9F+C2hNLtr|m7hre)A=(GE}Th=nhqDlJ8;bTW>N;^M<7hh6dinD|jMh})H|62E;3|i#YY6q8 z^jgTfS^RGfYqBY*f;ebw0NF6n_4A%^h0u@iu(P0j6_w;4I%u~+{|egLO{OMZz|YB$ zpiwSh4-o%#p|{cmlNbZxpTvLFc+Zd!{ZdH$nn<7CtdCe`zL@_nfIr)sJeLpsr>Xxt zhlsLw$hs$OJ=@&I-dDg`FL*&Qr|oR;&zIOQMuXHVO%2r5@Y{IwzvbML2>%tsPjRdQ zod)XBf907Q7NTF4wy7p>Dr>JX^e3}F&u2aMqvGpY=>JG&r6nK{t9lEeIF0kb&&2;@ z#|Y6cP25Wq`)^xLr2DwDG4|r!%wit%zX2NEIPEWnYI8V2+#r68ppRkwM`+;deaSCu zSTRpEW84OD?s>^Q1pSsEV3%{=pnfS7sn21+CtCK85dA*nTcK7VxVXR3L^rz**vnr) zdgU?$8=;uOTURr(%6cIETNSVy!Vh8nzb<2=d>qRAQy;mM??ocHvsg`d5}-c>B+M!@ zG4}N{?$jXeHIdlVt=QUm9oH;Ry6HK$$5>mQNQCaT6SC+ad+rEqdBKTqHT_Ov)`dnA z8mAF^W0?ON`0HUHBceP_%7847EZPwCwZ^f}yS45Er0ku1I_w@Zb=;-^2M= z^`i2zbbbiM#n`^q!quIyJ>&lY6Po4?v=5Z{KNfkb?Mn2Yx6Lur5&UBU6@Y$%zA~9h z;`M~$d`~i1`lsqIDj$u!jKNip&%!5nq+R9sekk9{Bb`T-kM_9rL^rG^6J>MsG3p1o zx1gVD_m}uTZzM`|DgL)p;2x9-v^74+e>ndQVotUGGI;xRI8JdrT8*L~$tZ{ApU}|F zxw|dBzm7S`=G%#^lYH}{I}63FjQ>(s(N@P3PyIdjDf6E|{uzypuF2rEmq7m`_P;_- zjLpy#%b25ZP%mHq(fPUvo+qOicPI09Rpb@wEVyd(n;1qb4&A&IEg8sXd9Df=|L>u( z1NsZe?s%PV@n7LCna&`bp2i*(JU`V_&7Je^GxHaA+TU#x?6wumYm9z|zvD~)%}3^B zFsI^1p{yFy%kcTH7N6uHm1b(0qXD$801e@KDsReSf5y9>n5SqgtbaL=UGGhH#=hnc z_gaX4Lqo1f)_}9aCGdyUpqRq*RT)Z>7U<$C!A@O8?Gat{*S2h zfUl}(+W6UB5b4r8N$4Fy0-=+H0HN0a2?5fmp%Z!wp;tjEVh038RO|)ywIHb2P_ZKx zL^>)WV*mcnIrru}{0Q9KbI$C}&d$!xJTv*_1KFR*Y}G!wG;3iEQ{U z|1#0ETlD{+wp%%@uk)OM!AGt)S&=Hk|8Z!5&Gvp`Rb*h}uMn0hp6{d3DaGl%>Oqjd zf@ecG>yEx{!Y^o7I{HcH&gyKwF34tG<^Ve+GHIlvzr?H8*fhuTX~d^XW`wzg6G1rh zD@1<}2&LccZ>+qh$kMvi#h5l^$gamK%wx`Bu`{zvGWN186@MwoI9KGGDSXnEO$+kq zZ)d2gF4s-)D;ECrv&+%B%73qE-(+0QxN>~@f^5*L<|cEvaQ+d!Gbij-w*|ERIXlxm z4jO3($f;=Fsuf?hZY5+~5jfCPthK6t80+h1e!%YiSTL}G)ZaF)KvaXwX29M!z z+m>Ec;(47v-h{Ph0=B)Z745%7U%Me)l2g^cP!v?SfPTz@xs1hUW;GrKk4(0@R@LGj z_VIU5QEl{Y#=i;q3I5}(G4W;w_^0J=9MvDL+nVNflga7u9e7_gZmG$i7L4~8WM9^d z@Yv$NVxzhuc(?H0bCATQNaaZGU4pK7Ll|0U)HI!JigyR+;k-)!U&hMVj|6sNB!cIc zf`80~{(MkE8|?R-%r(~xHg%z&$y^qFMVnRsSrl^^lRD5>o#)`H#s4}&Z!zDsqJ28A zY$^YL0Ua_38eP%qSyVRuh8pBr|4y10S?T)|>kgjZiKRXf`)@jxu@~Y0It600yD4rJ z!;RvWT4?oX{`BXw@PD#)6n_lUuL;lFGrk3Aq*z8io3<_DcQ29iJR2IL&1yT>JIwm? z5%j;N?!x;f&17Ni2lStz?*BB_|FPh&^1#0wLmoSs-}3A-gC@s_!B(;F7y|J zKT89pHj7NPL*5{Cv~1B--X#53)z|95iK_!?O(VuY9?9T}f~NewIuRv?HmLr?Y{sE2 z=!fmlxSxE^LtaPI2a7=KPh)!n30nt$g6F^XVnGL;1OM59cAUgA>&g0b)kL6kM87Wd zg#qp5um3%vuR61x{L#=G>O)ucIhXNoG=E3a3hC;6TOPj?`Uii)6)@(@JP|BqhuG@& ze`c2#wtp^@_xLpUs}xXLx7stDjnU1J3yW7Mo_+`TOGTi1qv7OjuL^ygevrW@T}?y% z&u2x@`KzOS*_eVAHPQY7$?K-Rs|ptOc_axmku9(Z;1XT~m+3zaB(4V>x(NS!kbijD z?k8f^)BI&xF{`D&6-$lb&mey_61rdb)BmskF5jr+FP}auPB{kMKZSpfg5^oD$d4UK z_4g0)ZpwZfhb@u|F7n4h{81@0kP{!yy3x$PN9_%}3+xs4p=pP_HRg#{w7VfZ*z`}8m-2s?P)Were1b8DVx#|RJb<*g&1bpDO-CpwWUxRTH|%1vF1 z)OSP*CexbfXalm0v8z?zXa}4ns$;hCKv7PAz1Q}&#S8rppuVU&!3pVT-e>XBF7`Ts zfBeRzphd*7cv_LgPobLvZgheRIuR+jdg2S5fOgn`21vm3w*XBw2X1`AS!!dTpJ`XS zmLROlnms)54f)SIsIhdh5dU95g_ir6f0aSNs8V+_8nXx({qek4{%4&uEYH?DBumlo zNT@`?6nH}>=TDF*fU*yD{PSDS>vs^9HjOq(_^ZXO||F_#ppy9&% zpMJzWX0!gBg(pjh|5Ri@eggbq9(@_))9(&fhx2~z2FEfVyD=h)4g}X|zFEz9Y@r=G ze|9zUu$bTNwy(375&d*(i?yQy`z9XPhI?6LQ}&qL!M;k^n*_7}W_SEY|A-U%-187!gT`AftpD`9_Zf+wkDqCHIYqkSMYra(h`{0_+d3haxu zzBgblnjne(FDSG>C;1e+)BDx*e-(XSz}yhVVWCxy*9dShKj3?O5FUZ1BNum*eT4e2 zVgKKwE(Klmvl{>=xefmBS#B}=z(0_wSx^=I_P%Fv6?CXyK;ISNn^#C*Xwy8jqtIH( z$n1Qc>rH&77ny9*e`BcU^f@Sx<+Pg1R(GrI7Bii=s6K*da1F>zyzHvm-NdMG#rvbv z%a1XSgk_e-YsWiP?`{pBmZOh4^LJjM{N*Fi?ZJYp9F0k*Z~~9yjxbrL;lu57EzHM75h-k52A{ z2Aav72(C@EWi9h>9sQ1H4lY0s*Fie#*%T{`(MICQ&){QNKtxLTqt2Xkeh)s!M?&-) zk{KQi{_bTn6?Ehls_!)L9&$tA`3hfRM1KKuYLhR&>sf1rugau-!F4O&u4ANx|8Ecd zIeb?O`W0=4Pyb;eAA7)GZUke;`CBFp{O$8*cOn1FxMy7i`=LE1gZf8zqBR{gJ9WaE zW|I7GZFr|D`fcFTDtH?Qe}>TO;MxQyR`GciZEOSmJalms>rff!@1>7#*ums>3s-+0 z`uoic>QBCp|6AYb`q}OU`*79WYI4YlzTa+REhy@4f#*TR=dSd4BJ@}JrS;O3iu?HnLL59@Fchvp_^2jc@AqpGh|j#Q)O#6 z0ZAf^Pf>ROgzvvrH4as6;Q*P2Du`bku6RJaAnmLk2Ei=`a7|#6K$tgtIa}W(==fA-<1OFZF|4Q&*chUbW z^EmqFq#aE?$o}?k*NJyX|0U9^R!|@1OXE1+uGnhbLi;y^&)uP~D$Jsv32%xbqsxf1 z{R{mKt|1lRbpE_{bFZ?me3iW1%d{kDe;#9?GF9L+rZR&}*%~-FTny zM`?bKbD-83`ptaZpf`+SwkN{>bm%vv_i41PB&~dsI*O`)`93509ohHeO+0s>LG%1h z?6rys?|-J)K8z*x7rc6CZ7bd<`$MZuV?L+*6myWqM)0?7q5V6W*&zBl z0Y!EB2136U&wOUrIOU&|Vs=zE``vbv!P|}46o=B#z%^Ck3pMJLAnhMa8Zq${He2D)8n0KoG){D4Sk)(tY}O+ z^c!J=tKNKY<>Qld_dHq?##Z-FHs*$5iV2jX~<&}l|Gnm8B4oeV)pn)34+}(ir#MKco|4WL79L*ShDOMv@D5W#^fRF<{FU-!TOudo zR}VPR!a3{;G!F5N4W>4pw`X`_oNdCtPZ1Fh$G?WyZt(0PXocfs{+_c7>;iW`64L|z z%i{s<)=X~hQm*5)1_W^y?A65OQSpK#`;%mT9&pYgWfz)@#3;PBSSU7wtilM4Zjq z3nBV9+rISayvs9J$h`jA=7Wd6gB%qAXa~g)?HNv`SPA;#w-9~LjzMFbf&O3EpO@@f zyN+0NX`_m6k-T5lUQOQK2T9a!s{y>N0*{CDNtafgB&4MS^G`T5)r(Y=@S0ogornHX z=#_Mq+@ee<{%p%&m2Gsz?Vlm~SB=grIR{$kZ>+>$>;~5B30_sBI{MXlzfP4X@5S?8 ztp>4BZ^r&N0cydOg#PUW_gm4v7YQm*NoL;(zX8e#KV*7^^kS zWqNvq;MPluI0P0`((xc#?#^43gj$@QNU~6IVO}5uV z^lvwgHS!`hupv|U9owAv>tyc(=w>5XlJ5xq2;Y^!r>4-?iH|vj{qMr)>#S;30E**Z zom4r3mS1s~=&k1Wr)Dvps8{`pL%Hra2=ABK11UE_*8={1h5k1-|FKtl3w%yLX0J z%_yW#TpI}(#taeuFP-)XEfGP?pc8VA{bh@Bp3rgfE)PR-n@c7uuq62?MUYKhV@*-c z>b}64Z`7QzI{!PK@qdcZoZB2oNXoKnnrP1;##8p&(@)29YzG)ibcen%k zQ_wDV*$G~(Z=0$89n8&~`u79gpBiR>$)_+AxPbgp<3d>8%Fw4)u? zPl6ui>Hs%HUy<)-+$S`iYDU)}-dzCwWAtbpl~v;0Ht6@K*4N{9m6zb>hUobk=8U_6 z|D_Mr0urbVcL{G`S56Nb4KKC+cj4_pT~&?0YRoiduH`~6xH{5n;nU>vj(~sBrzwqTnRH#sAWsxL_kqqwZAZKrnan4} zkJ@{Y@N^9SZ_6j0eWGZ@44*e@fmUzLKg|K*qFT{1WvH|8+uHQ@Efyy~+TLA_8&*`i9u|9?-A-+*l}*UErOu-+B-Dv2i_rom`t=Xw?Yt zpZ_sS^T8^1=2u!~UqWuuRANP@oRhAv_L za_O_8PCeoOR6G~AArGU#+i1k%-B#9`M(#xrCh|WXBrmF&DOVVO=*ju-|3ZJbsY%t1 z$EXi|%nqSdoA9bF=lK@&Oj)f<`KkQJn~>}d_(o)#>r$4Ga=t}BnOVA+=eE$2HF!Sd zqZ{mwFayVeu=@l0b@B6mfTy{4A^va{>rW+j#br>LXTE)fsO5Jy)th0I$(YacQOv3w z)}pyS{dLSg#X~00hTu|W#8~JxMPDT&sVjJH9lH835!emfGQkxC)AEXI#<_y>cD>^` zr37E_sSy7+8BUa<{>v)-(D&H)?A^o*Qt`;mXY}P`sYVO>B5||)(O6At^S&j(F$H_SU=XEBnJIGyC)9{$cm233E)JQ1i`$b8uTk-Z~ZsXX8HppBY0i||l1 z1IPIqPuxK*{U7aAG={w4AGjRv0ZWcf;n+Njr53H0(M>TynlfAU& zpH7u+1OKNW)mW3*WEE*aS7uyrHAE7+(wgeDuREhY2R$^0{wJ9V?kKn1hU9eu(MJ6e z=-+U=k&q~`&|&*`omt2UsK2_)-V$?}+V>BcXqV#cb zKouv0OSw48Kx_hiof9w*DVWKa^e~`$xn&(E%jG(q&aoEyl|5(D@pspx=11`S2y?p^ z3H{>WU`ldU?;+F44JTGM9{o3qTU2pEyUU)wG|qs28FXNEEZyKL%}T8LC~X*Zof9w{ zc~lMj4rZdOgN!{yWOs#onO*ogD7NuZ%>uO0L9a!Kelha^c_NoNg=-fT3rB%j>gvYA zWu2lSAD8Ni2~QQrEEoPm)vro0CfbeYx|#lJ#~TgR7Wl|?GQBXEEzA}w5DW1+gV=UE z;!oS5n8q0wj}eo(lfS|9Z(wVtVt=#(b21&IQW5N*g}gJ3KFed!mHy9X6gv782QacF z;6O~F{ZWeENAgKoy7iGfS&j2~x}kZ}ufIs{io46bXpT^OK=S*LdBsa+KPKOVu2;MW zlL-C(=7M>UmR2JF=yv)lk4`?{cY)*i$auWJ8h2*()d`dd{0S~0@^l_keROVZW{m2; z&E{t#@Mo*&Kgbno3tcuZ`tI*G{!Q5_&CE++8RW4a&RdJH=4&_3 z$@b<|_SvuC2@jrs&pT-zXZ@dUD%<0n)ncrNv@A#GrNd3Fud4spf_9YWlPZjrV+?YT zh~TO~`)cxDok(60xf|+5BLBm@IP3}`4!2_6~-YsoOlqV^v7kN5=d0*U<>KB3?R#gU6U!N0CF zBe9n%W0##GR`v)qgN);NX`D3$TQ<|ME~%x0aXA^p<;`=%`P zWq<0F-7@fcw7)i~1*PDN>d(t7Py{WM20w&9y=EGjY`#zS-XXsEvOB^agVR9F9(em9 z_TTj|cK$ zqHo`Fa^oL(3mvOYH=eHu{j$(kman|6Wtrs_>2rAe`*Po4`rnl`p%VXZfxe7q*7UJG zSy^SVo*=IMsr$zL4gDv~)7}B^WAa}f2+=PJ8lyAo?|Szf^yiVMe=D_mel$hteOI2B zeksNOoWpmzl$km-M86_;HKTo9(Z_i<4J%6-GhbuTor6LtKD}bz@SfwO zjot3P5dB}UhFYS3Zw3Fg%jR=VndpCPievFh$5lhWlz^Yf%xT4c#ec|dt=($nf@=c6OC-7CEl;#3w|ZTqZXfzn=jC~UqD~FN!LklHWtSj=IB+bq;Dkp zyN*gUub5kqzZkx+#e0ikZ482j@*m1TzX~nO*27%FMGT__-MF(Xl*xQRTPHKCrkHrX zUqK}7g#Cl856$0Gc$q$h{(bJQ5dEXnzbl9TV+TID*X-S3zZcmO)TFFV4_oj=6#aL+ zeA$LDCqlWDFNO7)1qt3{@?B*k7Z6oCf;a9Lr~UJ3yrG$=8{rz6Pk^OxiD^C%(*Ima)-N0-!4Y9tO@I*cIo`t$R;95;YUn8v6=o*4-D*B*k zK}qC9bE6q{MsGX9)Z=?j>;cn4eAUUDaS|*4hWC!QrEvUL;vv-jZy!Fi@k3neU5y*<7fXdcwiQhB9Ji_;Dp`XB0cW}yx z2O4XT8A2t1^}aVo&l6?z>yK@4o6TXc0`Xw4r9CUC#w6i{S9K6oLP_OM17vj!E8P~82#so>`X{g_w%(V}|HOO*F0h^HSBO8YM*qK~|1(`b zkcyYEedd^Mri_&rE6VSm`mg*K>EEGnqaJN&T}WR%kKsF2Xi-*DDzY(!-#rKVFCF?F z@w~5L&2Q}E|9&#(!9R{PxrO-8s`U0p?2oB<09V=b_C3yCO)#F-8FJE?5y)FhG+_do zR`nlL?_CvkGx(%SnbN|)&4G4v+93Kuf$H?>@z75N)%LLWE;Cg12aDm2J!@u|m7Z)f zUFDgPKQR9%!hh=U*~3(rkTVtpMD}#Xkf)XbQOcz1@zBUJU|D*zr6(hw3jK3{P$#)m&d&}{nH62ipHxNfokA& zr=P*4N|4FWUkJ~2E@>vMn1Tkl9sI=)(D>H0qqfaf^BdoQAF|89<@{t$7v{fs$o~c8 zZ;ngj^rOGQe+~hWSPK1@>hoXGH$_56^H<)`2&ADl+CEHQXX7X~w-nm3teM%gVk*CT zl&qpk7Qhppzve^$$}s}qZ$Nm>!5{TsA^z+#c++nff6;%7Q(E?U!->}zo6K9(V^y)oj!?6rG$+3sy7hIv@qPd@lstljQx@fqq$=>l%XRt77iw?vIHu zET&!m7WV&f>Kz^i|CRnA=UNNO`ABH|sg&w%AwM>f z`kQxx*(2&_N}0#ac-|o&Pdt5}hb*i|x6A&j&*#QyJ7IHlWwF96XBAN$w(hiYF}%>3 zpo_r2{0fbV#4~<}+GoE1Xd@BsEPI|k@UtQMZSl3HfxkR!J^X(U*^(gUzrrS+1xMxM z=?3k5*7r^RZg3&=yD}nkk-FfT!CrMO(kXmkPxkGa2YIwMn{k$puNs*CvvB)0e>XGH z{zm^lG*5bA|7$5ct<9-_{3?}^CQuvm1NS1?XFaePgesGL(G%^-i6FE`*?PhSH>HR2 zjpB;E4KuJ5bp9z7 zgzclykK#Pbw?MXS@~!C#tZ)<1KXbi%L;SzjwWd1k6_<%mBAVHm;pQ+R#!Tg{+VLpv zCS>2O^eLd<0s2b|_kSxG7fFhcuNtZ8=$-_|rzTY=Zb4@AHfr`!X~&3b|~M%UuD6Heh2!b{%_#ZTKL}v`l>k>T7VwFZA#7W(ax|8lMuIWs$3c6&{suiS{R{#7JWXNBg_rk1o( z_1CI0XSR~{D34ng@PB_0iH|c0JpVaJ+uPhU+lv*6k6g-){1E)hDeynbvHuR)7TC=D zkvr8@3;N%H@zoAg(Rg{ARD(804|8SGp5E9$qu^FE#!OX^s=>7vY)N;s1^?w5l7lps z_?GOauT3rRf9t3P^JIwroi>+hA3u_pdxf3#y`^UVJ4r1$&rVH z{8~Qg8cDBJ`$*^T$}iU&ens-^H$*&zzkARP^#1f#gKyG~<%Su`SZ}pMSP}il@l&ip zcb;+IW1*}8{rj%1P4xG5WJy+!R{SRLTk$l}?}HSn{y69R1dqe{IJhyy@4xDz_Ca2n zVW$+~)R|=HpK&w1o6J+hHCFOOH8Rhm@UUc?@cKK|-odDG{wkh{)$D)1vZc^8pYR6x z8nyl@r!p0K>hWN||5cEV@cwHg)VnhF8Sr2EC;e$*M1RkPYm?Q2$4t?Janx&N~jS zOzzWJspDxw8~U#*c*%@H1LAx-ajOTh{Kn>Y@PAM8zzBO59kJKmT1dYint3qtf6APr z|NoK!amp?CzNgAnKiMCNN&YOy|c8e>p4&J72;xg|H91iHK3Y;q7&i`$P z{C5C<^&0e7fxmjeK1%=3F^&QMb)KVQ%QJoc3;(ARxU&l7FB9pP2WBGlb!O^N-Zp~Y zjBuPr4E>|tY427u9DCp_^tU7V*U+j=5*+VQnz#K*#4$^QUZZq`-A4rM=m(LD=a z7LtFs!|tU27kOJy@c>Dpzv)oV;O<_~Z^9T1X9R*v71vZLRp*t9|0AHUe5HMEqIU)Q zJ=slL`w=*twov@az5yC*iyOrrD0u!~lZD^#yn7Y=$5Qm~{p298hG(PUe;uEqJW3<@ ztR27Fr16)(C%6VO-ojr90jjEHLSU&H(wnZp$A8Vhn^VCWv&#;L;tgRU>6!Z zf8FGH#o+&O@{*Tf9X<#ielZ$*41JB{mSp;`e5W+O|H3%8LLc?vb8yK^Ed1dhIIo~T&<*G-z80ML6`Tewe_Tq4elNJ*2`TMM|Am1Y?8PH99XQc`2iOB5?(}yBzPMNL z>S2w$j?^PN<;H?a3SRJr>EfNh|NAujU%>u^uImaSJl{I(ErojBlT=Nbmak0!3rE6fAX#I{hk5;Uee6LQ$EN}aM|Fm z2hk__zXl<1t)bo%*_Jh~wXGI>?iHfnh0pSVDkD&Sm}EGS1^p{neM!*&+g!w(USR&> z)I;GOXGv#%ZWlYEI&b-#{Y zBt7gFqTiYM*B1Kn$hSiV6c5UV{x9x3Zw&M!sCW3hxu2S!r=dUHog**ml6x5(Z194i z*xqxnfyZ#>*fRU6?S#KT^fkk4a7zmG6Bvag_#tmkBi>yfZPztKKY{;AE8eAjZ658#NfjoL0Ts>LqWdZ6$iWu4;Kh1dPb0(yj2L1WGv4s7FGq0~h z{}2)02SL2I#@-K}?`?=zLw_OXQr%AecYEmPQ58Yw|JCM}G&EjsxY3(_d1$2C@SqKL zZu{VITBQnY!e@>{4mm{=X&A>CwPFuH7W$9aBwN?kC$c2O>$Aw(JC^D~?r%QnN;0jG zigWng6UYND&OWfKo9ew!PjaEG6{jw;B{aBtTppR!`MPD0+HryxG4Lp9u!8Q4Me{N{_p1eeg=9d zxP(9N1phmtf1=P*vYRK+ngJjU7D7J?EAUCP(LUj1@olk1`OSyke)oQ;|E0|b*nH<) zzG(pdvWC<7=Y6r6GLT};aUtmvkp|Va6aH7{XeF`_RBTR{vOfBtcjD-OP^VRAWyRCl zGiC$y+k~P76Yw?hp9RL%Fw`=CD%?7=~hRlA9AXg1vI zwQ>%7_<>OWzhj4R0{WB9AJ}OBQh)C;c0_l>;VJwP|5Z<6DbgkTV*(P;6mD;X&%q`8 zBZtw^+;2_`deT~*jvd9@-hqBLYyGR#V!NOEGRj6g!CtH?^+$vT)O8Y_@GkzxQP|%_ z?Xz|&{_1wbh?hfk0pIszWR?3j-QWMN##U&KOm6c>L(iwc`J`d6TT9RJ@?JcKpveMBt};d?zo4_C71*Z!vi zzL!n-7gqD>c49)pe{L_-|J}U|FP}E_V7_!>Rw!?9EArac8*Cf##2mNRI%>L~_bbj^ zw#TXc(Fc1t?0>Iq9z*`FfDWx?dfLbBLUSDXyWsb^fak&O@&1LhMfA6Tv8YLl*7E+~ zY74)Yq8)o-0czH-m={fafUGxTS<`fzgxdy$*?q-(h;Pj=!J?2inPzbEYj=9(Sg^)ut> z@oc`=Sp%{zmiYd^4cKb6(896~f=hn-@#tXHWbI5#)*&^kh)@>cRJT3c(#x%9%^e2S z2~a%1-sT;muni6CqJQNZqST-Rp5CQjCV5HWI3o(vibO2 zhi?a>ZGua6=|;o-X#7*17zz2omLR3=i90;YEhF8#?iMl(AEV9~+8EvU4RV%6t#mv*ioC9ei4kO;jHpkV5-{t3GWR4*h2I zP$!Sc|2&T|8(=!RqueqJY{?)h${%IdE41A2>_{F28_+F8zp9ywcj_|wcMCnoJ7?Ov zp57@pfnLqw`DTozs?jcF&dL8LJZMSyogR>f8>3jAWhLGU|2Hyg6KQu3uQye{&vMUp zkPnO8+w}S_C^llfbEduWnsVMNM{y z{*U;2Zo&RuX%0{aYc@!^UXIgYd4G!UV@qJoosY&DPtTZ5tcF#Q!Fu#KxEgV1XQZ(q zW8acCWY9MG;5qLIOd;zZ_@e{F_WpqDWJ6((wFPLYh*xmXc}^73O|*dZ_LB43-mjo zZ=Z8d;oW%*`g8Ghw=``)m^BUc|0ldN{}6wh#x9Y}ORSWdPF}=p=xP2ZA#wS%VggdA z-LSkL6``lSsV-H+R^4-*5*-Q06#rg;yp}dkxW3SzNH+Hi?icejy4Pb)ALI1BmYn}} zg70+wMZJ;FS$}5{bG!$v=*OlM`JXyLY$6=h`d1U#>*8y7p)sTBsVe-1*MDW>sqT9e z@=}9#5Af+v@oJhEz|?ETc6U#^`u03t7omktQxCqCJzW@oE=m2hBgEe(o3dp7&U1&U z+qsW^EM&(m{iSnVbrPj^{>ndUP5*`P4BMYN^;P>HNrcYj6aN?UY%B9NHa+=Qpi7@- z*K^jJ0sT^(@sVy4Kp5Q_>VJ9S!T+;o(Ek-V2_+T!SM0O!DW5({rI8Tp2F1!$z9$YmUoqFsXMkM)wx*X(IH{|@}$GhooaBlb!C8*-oLkmpp59YOH? zb?`YaK|kG;1f|{;E9nO!A$R!nS8k54(Z+mbF52O4G)x|H3oQ^_5 z7b5?o+1K0(jceW__oS^Sc7eiVl%oH6QOt=`Xktf{Gm-xS-Y-1KB!A77H&!-IDOxh! zw~a)H^GbOLK{}$PgJ4)PeS|2{~hadpbtMQz>j8R5d4ppQUB0AMn&6MZnygu z`fJP#xHH?E2;NfEm48%VlGuOkrUK_Dc8U8NPt`YIrb>tCSEpyikoJzg{hQ0%Rp+o? z;rge#kbQjmb&w35f~-@(n-SkXiez}+Wp}{rWCeNz9V>6lTr3%?r?B7h$$KSP_k}-y z1kLk3yR;BwLpRDt=NtoHH7V)S1+UfxvE7X~6Lc$~Xb{Wv&vqa4~Iius{>Rd0~z zT$+1+!|wkKz5Wt4Zpj8POOdKs-elIh-~~S+sdeE0W9}1k#xA24#dzlG&9(}*eiFCT zr2i$MEw7rg$;(5(ChyM<9*6hJKbF^3cELdIuHtLtH?gO674`NL^Vs5!IT5^*ycV65 znag=R{@3jErW?h;o+JWr%`PWaJ_TL*hp7&ANt{l9xCQz>c(?km>bo@=;V}JPNMj$g zV;p0mxK{-Fupu1ylqmW&dRz%4%r&>med@~b{4TSf^?nBNkf|a1&w$PN5BWa?^0vHN zODt{@=!COIF`m{uQ5$YofVR$f5`CS&TLWt^gHO7;({uTMb?$`DAJ+NDQE12?v8R85 zew6n<-uDCUb61VK_nX&ttyOZ{?zdz=~H*! zJcCcF|ECO~XkQzs1;WC#h3`5oU2&1Nv^bGoA7nqR{bLU#p#$0IkCWpf{Bslt%-hL7 z49DL&=aL=2@R6@0f2q_ztV!H>mhH?4-^}wm@2LUY4Jr=IgnmW%(hNxpu5wUT{;}#W z2#c0Tiw7Z%_nF3I^m+W|4D@d>zs^E`k7>g`>tS|f+e7_7O$P9r*dGVcQ^cOJ6wBLr zW|UPFBcNZ4*)EK=G=89e%G1A;5dE_JPq~+)X<;LN%1#g>@($`umVm}QFbArJ`+~3k z_u-9CF>iP~@wWyqsB5M`|2)yMZRP}7s1v-x?q89<#!*{@TuZAg;<9{S7io)Sh9zOs$bPQCcvOJCw1FsY!s1$Gv{8fZ)4t;4X z)mv8e^PuAQaA<3VQw5^nYEDa9@M$b#&_RjLjNY)lqX`iMfmg1%m8IM$lE4= zM0I`>*1t(`yEkpiW!5$39^H|HJQTx|(g7N+K)3Gq$Z9}~B2C19en7r96yl#M!0qeE z-wZVJUgD4Mupaa@H(SkcS$vVmyYz`_@M|}q^S^5|zvP?K)fdjI`sx(^>f{?`VU1@l zbfEg!0O)6$uk3r&*gWR1rhUM~6$2OZXd(WiIQYk3puYh6&)Q$@>mVk3feb#$Va^QS?>O2wlq49}d4~A^*aEsveM^yG(>b_Ww3h!u^Cd;F_;LrrW-@ zh24+;|NDa; zr_Zw&9Kbsgd7?S}&BDrBKu@Jj8!{@5k+#f$Jl`#)XTl%mFiUcw-Go(Q0lTfn_;Q3e zZtea8Q~5W08tgA>oe#3_nUB0M{$ZvLVtcC{i*EK7V{S2 zz`D?e>HM4r{bbv~YX5T-ug-D2e24fgXidA0c*p^>gH>15W#8>2Gx%qBoytTD$V4m3 zT=|illw5WnJ@~#I{hiNWo$M<7RXuhBI_ES~4|6Tz_u7rFqwhL*RK7T!!WnC0eEic_ z?5E#BruH#*WOLj7whw&SLe*_Ojr_SeSi78mW`9OzwppEj{0-wZ6;GNx{+;-_fS()u z-S|qRyDcNE(}{wsfEE-m{%h!a7e-2Wj1h38mTl?de=m^F{2B;=yJ;7*$sV@D?LE}m z3)>&>xuL`ee|FE>9~iR@#7XWW`rXD%=8c;F@z9=!6zF_yWz&d$V}3IsAkS}g-i+{R zGq^X8Sszy`Q~$W-M=%k39kHJB3-W2A+!lk<2pHJPz-Fmowt|^nV$B@4^_2gnlufhIG~!L^)`Sb*MJjD~2>7^Jad7dokyP4w}1!)+b+B{@A$`Mvqo z)CK?d45P6-M1Qbr?oGf~umF5WihaiRrUH6-ti&Apqy2{>X_@qFu}^;IOXe4LshiPU@!hxi2v*8$lrqgd~zaZ zfqof4^`o+;IP@pcchw)z>1#dd<6=JL`SgW9oEoB^55>vorbV=}EqA4(Cl!b93jSGr ze8Ex$1%$OT(%5C#;YNaW`T`$x@PbBeFg2R5x`k9`Scm=@LfrgMP#dcMq5j7)+tQd{ z^Le-G{|SHIf`4TV>r(x{@$i2>!D#oVE`VZ>iww8AWqyQGa7F zwLktuBK^m`@@|sX6#VI2Fxljx(Eq!rm=$S+sM7q?Nm_$^9?Kg!&WmLHRqG&3e>Sq0 z3BB3eFZyZlS+T&Cc8@&|jWXIl=H6;J!$mW+2Y@0Q;}{+GJ^Ms<$E{GZ0^G!pu=xF-%SX#5lT`2@WD6B=>& zp9h;%_EnpBzB88oZkKMmnZqIaKiEZ}JubTxTMUfGRqC^D27g@@`rUku(Gq%`Cc1uHL;5_^-_walVTg!V7S?6?= z5dHT+#GL_u)00yl-XQn6CG-DHvT{^WUh>xp`fcE_;sLThlwH>nK7{qpSga471~UcC z(*`am9;f}_C7TG!hlrKyhBn{n9x)H`{6O1>JP=O&D6IeXxV^`F8~UAWCD#9&T~oId z?^{VDgopG`8zi798eoDy?Rzy`SQ9 zTxW7B2YOiH_^UEuciJ#JM1L&Qdocc0i1aJs!^!6OxIS~AV)HN>psag)kAs5xIK=wPTrtFm$wCEj@&n*;w1T7Dv)_^sx{5d9HY99iTBl|}v^2Qym2Dc}1? zdOwJf)`+VD^ep20#_`)}&>zMdYqH}{g?@YNp5L(j zFQIer|JzGg63=kTm2`uy4t6s9yX1Z|*U^&J{Y>r4OlE*i+>nodAoNu2a|T)#{_%g| zzk_T{J)h243xB2)gWDn_xk%q|e%la#+fe9d5zGAtuZ4$KiTnZ1c6r?UfGRLy`LAmg ztG$5t>5_L3*#Tb@D;({80o~sI{-YmUXb8_H`4TtUpa1f{Wr#SJ5J###C;LB^u~7YO z#f00rqO9kf_=_*MCZ34eKK||w8;2!!)qYo~e=68CY@iF^5k&un{g7Pg48Q-qpe6fE z_|I{)Kr3D@F@jZ6dq|ZqaIx1 zelqiKJWmLJmVx#W3TTLn26gXw-!b~BW`;M!um5+*PR0Wf?_#Jz7d(I6bY*9Dj_l9h zv5wE$CpnLM3^r*xZ*9yis(+}umJ{KuS|k0hvmwI$9|C>Nf9-kN@!JfvrcQ32fZlll z`X#_0PR8EMvyGtmw%vrEJ(n6}ABE^&FtND&g2+o<8a!(%#HBQLB9>Vz`5pi);8@1KPUHVgV~0) zb0$Rpw25P9e$jn|&9TW|0ReCy^gpB@swb-X7YBXeP33>+i%e?$QFJs+KZ)@lM*9N% zpKJxyj@;^I5?4fHu)kjfw)YuMRRIl6PS}&?Wp|JLJw*Rw)6x5a{r3q@i&)S4vyIbf zM-rpXhL$WwdEP}o+n2vS{``yPQ<#1~dN29Uq3<2wefwx>j*7Y%) z3B^nHKjKZ_yN9fSH@cq2)A%;@kAZ(&&Hi@{bz6tBBB;Wh_&)&ps(%)&IDMG=ZI};Q zaf2%vc}rmYby}yqqN>z23i^kL;&q1pdg2R9@HqTn^PvA5yTYG9+~H{n(ZAD__MU+L zQ+P%4!5_{6tI!wvShoFN0A1Z_pL}IQ_+1C?()yo){D0u? z_l83MApVZqO@C9&_xKlgV?aaw=MEL(|JGsq-=p{gHs1H>Y3R0)ms8q% zrx1Ua$7rkof4Gx*vKjpCAa(#L)NDjCf8 z4q>me`Fq;E=Vd|vKjOO2;dM%K+VLlXg-Eg0yc4!!i2sAk7o0tC-mNp$%?|1>CE7GM z%zK(K9OTp2xwoo5(BG$@4E;Fh3t=6m-<}ajVH{NdFgUec^sl%d(E-|j{EkQMd18C2 zxSCG&?b$X0WN_sW{b=a7XZ#nDnZF(Ub89=)4JQLa{=~YF7zMv|7W!Z>gHK8DzdhqW z7J9+e&5QRnZf~9t{#m%yanS$I-D2iIf1s_3#C<_6z6;Qw?_#LG#|iD^I|a{2u=k2( z{PRt7>R(;JJCerw^C%il^?bDA#qw6=^~!!%6%uZW^-uF}3f!tf z1XlG2SAr<4W^YETT!;QTMVKwseO%)Z{TikW)c`NR{{)a%|JXP?+~s)Bv)WGa>1*$m z$*fXlt*r6-^tK&VzkFl5bpDp2jzfI<@{7b{si+>^eE;GZa^U1#c&w%C#csm9T$lDqL{Z3d&^?d5`2qpUV zraYj^MIOcYOh+F2;p?7A|9`UCevvHjYQ$piCe9kXppq%#UBv%<8(zT| zu$f~m6)L?qps({pg7KH^<@od)u~v74-V$UmxD%;D!`@06JZ{VrggubTa2SYCwwTecmshwEsE z&7uDPiuQXQ|JSWxw3oA2{+sxBUvD?hkMU)E1n=(+ZzucoRb@q|YyCg|Z#eBqM@y-V zk^GeRVIiNhyg$t{=%-O{^8}g2zdBjm2Q6pA5aYXsw>@b87v2WJj;hVqD&_ z2_VRFp|2k6{o373^D_99f<4=k-mPaQ1eYq$$OGC7jaeHFtg7t=j6#3*y4#^Y6aK$# zKC-9%YC!w!HgAEe3+7k3fx2Gyrf?cLadGrNx#4aXR(M;yNz<8s+T#piyk|1rbA0=I z7V|2aR&0h&a1Dd@Z2tDAy{dgNjFDPPTd2xupN0NvcJ`lutUBc$hT;?UQ4mRSrkJ-X zM1LPB=?CzCO~?Kz4f=lx)oNPvhJ{d^1qtC^SL1zILa$iO=zlAyZG$Jl)t5P6z_<@( z{2Rl8TrBZh`F}gSYC3V~E;3txC$jV_$WH3d*$;?>3^a{=Y=Yi!ALF6=8{>>;s&oFs zJaZWRbO$56idim=Bj49*{Er*?bUTr?#*F{%^ftIU;tSirh>U<=(aeD5Ja-#oMFl3S z_{oEeZbNdxs(D{QU%Bw5@W$m3pAMdX2A%X8{>Mes1&O!2!GC^gd!T<;@K(`pidNI9 z2CL~6{!?sK)t6aUNWUT6-{5P&@kmN%MrI8t#lFbPDsribIHPaK#B{yAvdsS;WO>50K862-}}E;lx5lsTV(W^7>}vM)eP` zdEb$94C2nMaX;E@ysWuUe4cT>N^WeDX&<8hGno?a)BnfFQ~8+uKm5|JBYL(!+@H_$ z!rP9aUmJY<-EH1Yd{-5HAZtWdJ!E}0{7*(^qiOL5zF7<>nwW}i7vDE?N7z&EC8t~U z_s+Zac*5s_0TLQW*Q>Nu{69dJ$nVsCdktA_!+uTmcNg-#>g{T`w}BpL{8jI&JW@Vc z4|BDF|MHI~)AKl_W+iQ%N9)^RaXiEKBU#&0-K*Z0p74Jl$FQ?6v;Q6yqQ8f>bMCTx z0xPW?y7{PS=vuQQk;Sk6w`8@Q&UkO~@sFF4zb4QhMT>%~2a+}p>dCaN9WtV`hvy*w z4NVp}Z)F_(Lv58W$!XmK#Wt*p)o9srBQ%z-JD54|Apb8=BcX-M00k0F|4U#;2mz}6 z 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

    `a?tXd$T`e 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

    _PLf9cVJxOEu%H38*WpL_og+ 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 z%0A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ℜ~*BGvfYc>uG5a>;cAS?u>7ao7=7rgOh$_G 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 z%0D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%0Ag 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 mCEm(!^1t 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 literal 0 HcmV?d00001 diff --git a/wifi/icm.conf b/wifi/icm.conf new file mode 100644 index 0000000..e664917 --- /dev/null +++ b/wifi/icm.conf @@ -0,0 +1,116 @@ +# 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. + +# icm configuration file + +#number of devices +num_devices=1 + +# Number of Radios +num_radios=1 + +# Communication interface with driver +# options: ioctl OR cfg +walflag=cfg + +# enable daemon +# 0 - disable +# 1 - enable +daemon=0 + +# enable server_mode +# 0 - disable +# 1 - enable +server_mode=0 + +# debug level +# 1 - minor +# 2 - default +# 3 - major +# 4 - critical +debug_level=2 + +# debug mask +# 0x01 - ICM main module +# 0x02 - ICM SCAN module +# 0x04 - ICM_SELELCTOR module +# 0x08 - ICM_UTIL module +# 0x10 - ICM Test module +# 0xFF - Default +debug_module_bitmap=255 + +# socket interface type +# 0 - TCP socket +# 1 - UDP socket +sock_type=1 + +#### Below this, configuration are per interface starting with id_* #### + +# radio interface name +id_0_radio_ifname=phy0 +#id_1_radio_ifname=phy1 +#id_2_radio_ifname=wifi2 + +# device interface name +id_0_dev_ifname=softap0 +#id_1_dev_ifname=p2p0 +#id_2_dev_ifname=ath2 + +# operating band +# 0 - 2.4 GHz band +# 1 - 5 GHz band +id_0_band=0 +id_1_band=1 +#id_2_band=1 + +# PHY specification +# 0 - 11A +# 1 - 11B +# 2 - 11G +# 3 - FH +# 4 - TURBO_A +# 5 - TURBO_G +# 6 - 11NA +# 7 - 11NG +# 8 - 11AC +id_0_phy_spec=7 +id_1_phy_spec=6 +#id_2_physpec=8 + +# channel width +# 0 - HT20 +# 1 - HT40MINUS +# 2 - HT40PLUS +# 3 - HT40 +id_0_channel_width=0 +id_1_channel_width=2 +#id_2_channel_width=0 + +# channel +id_0_channel=6 +id_1_channel=44 +#id_2_channel=36 diff --git a/wifi/p2p_supplicant_overlay.conf b/wifi/p2p_supplicant_overlay.conf new file mode 100644 index 0000000..2b27c5b --- /dev/null +++ b/wifi/p2p_supplicant_overlay.conf @@ -0,0 +1,4 @@ +disable_scan_offload=1 +p2p_no_group_iface=1 +persistent_reconnect=1 +bss_max_count=400 diff --git a/wifi/wigig_p2p_supplicant.conf b/wifi/wigig_p2p_supplicant.conf new file mode 100644 index 0000000..f9a3a8a --- /dev/null +++ b/wifi/wigig_p2p_supplicant.conf @@ -0,0 +1,7 @@ +# Copyright (c) 2016, 2020 Qualcomm Technologies, Inc. +# All Rights Reserved. +# Confidential and Proprietary - Qualcomm Technologies, Inc. + +ctrl_interface=/data/vendor/wifi/wigig_sockets +update_config=1 +p2p_go_edmg=1 diff --git a/wifi/wigig_supplicant.conf b/wifi/wigig_supplicant.conf new file mode 100644 index 0000000..4cb50cd --- /dev/null +++ b/wifi/wigig_supplicant.conf @@ -0,0 +1,7 @@ +# Copyright (c) 2016 Qualcomm Technologies, Inc. +# All Rights Reserved. +# Confidential and Proprietary - Qualcomm Technologies, Inc. + +ctrl_interface=/data/vendor/wifi/wigig_sockets +update_config=1 +disable_scan_offload=1 diff --git a/wifi/wpa_supplicant.conf b/wifi/wpa_supplicant.conf new file mode 100644 index 0000000..72e6748 --- /dev/null +++ b/wifi/wpa_supplicant.conf @@ -0,0 +1,10 @@ +update_config=1 +ctrl_interface=wlan0 +eapol_version=1 +ap_scan=1 +fast_reauth=1 +p2p_add_cli_chan=1 +bss_no_flush_when_down=1 +p2p_no_group_iface=1 +config_methods=virtual_display virtual_push_button +disable_scan_offload=1 diff --git a/wifi/wpa_supplicant_overlay.conf b/wifi/wpa_supplicant_overlay.conf new file mode 100644 index 0000000..de564f5 --- /dev/null +++ b/wifi/wpa_supplicant_overlay.conf @@ -0,0 +1,9 @@ +disable_scan_offload=1 +p2p_disabled=1 +tdls_external_control=1 +wowlan_triggers=magic_pkt +bss_max_count=400 +interworking=1 +config_methods=virtual_display virtual_push_button keypad +pmf=1 +bss_no_flush_when_down=1