Merge "Revert "system.prop: Enable codec 2.0 as default service (over OMX)"" into pi-dev
diff --git a/BoardConfig-common.mk b/BoardConfig-common.mk
index e81fd38..009628f 100644
--- a/BoardConfig-common.mk
+++ b/BoardConfig-common.mk
@@ -118,7 +118,9 @@
 # Install odex files into the other system image
 BOARD_USES_SYSTEM_OTHER_ODEX := true
 
-BOARD_ROOT_EXTRA_FOLDERS := persist firmware
+BOARD_ROOT_EXTRA_SYMLINKS := /vendor/lib/dsp:/dsp
+BOARD_ROOT_EXTRA_SYMLINKS += /mnt/vendor/persist:/persist
+BOARD_ROOT_EXTRA_SYMLINKS += /vendor/firmware_mnt:/firmware
 
 include device/google/crosshatch-sepolicy/crosshatch-sepolicy.mk
 
@@ -178,7 +180,6 @@
 AUDIO_FEATURE_ENABLED_MULTI_VOICE_SESSIONS := true
 AUDIO_FEATURE_ENABLED_SND_MONITOR := true
 AUDIO_FEATURE_ENABLED_USB_TUNNEL := true
-BOARD_ROOT_EXTRA_SYMLINKS := /vendor/lib/dsp:/dsp
 AUDIO_FEATURE_ENABLED_CIRRUS_SPKR_PROTECTION := true
 BOARD_SUPPORTS_SOUND_TRIGGER := true
 AUDIO_FEATURE_FLICKER_SENSOR_INPUT := true
diff --git a/blueline/overlay/packages/apps/Settings/res/drawable/regulatory_info.png b/blueline/overlay/packages/apps/Settings/res/drawable/regulatory_info.png
deleted file mode 100644
index b82212f..0000000
--- a/blueline/overlay/packages/apps/Settings/res/drawable/regulatory_info.png
+++ /dev/null
Binary files differ
diff --git a/blueline/overlay/packages/apps/Settings/res/drawable/regulatory_info_g013a.png b/blueline/overlay/packages/apps/Settings/res/drawable/regulatory_info_g013a.png
new file mode 100644
index 0000000..019ee55
--- /dev/null
+++ b/blueline/overlay/packages/apps/Settings/res/drawable/regulatory_info_g013a.png
Binary files differ
diff --git a/blueline/overlay/packages/apps/Settings/res/drawable/regulatory_info_g013b.png b/blueline/overlay/packages/apps/Settings/res/drawable/regulatory_info_g013b.png
new file mode 100644
index 0000000..a2e08a2
--- /dev/null
+++ b/blueline/overlay/packages/apps/Settings/res/drawable/regulatory_info_g013b.png
Binary files differ
diff --git a/crosshatch/AndroidBoard.mk b/crosshatch/AndroidBoard.mk
index 5bfaac3..c079faf 100644
--- a/crosshatch/AndroidBoard.mk
+++ b/crosshatch/AndroidBoard.mk
@@ -1,9 +1,18 @@
 LOCAL_PATH := $(call my-dir)
 
+#A/B builds require us to create the mount points at compile time.
+#Just creating it for all cases since it does not hurt.
+FIRMWARE_MOUNT_POINT := $(TARGET_OUT_VENDOR)/firmware_mnt
+ALL_DEFAULT_INSTALLED_MODULES += $(FIRMWARE_MOUNT_POINT)
+
+$(FIRMWARE_MOUNT_POINT):
+	@echo "Creating $(FIRMWARE_MOUNT_POINT)"
+	@mkdir -p $(TARGET_OUT_VENDOR)/firmware_mnt
+
 #----------------------------------------------------------------------
 # Generate persist image (persist.img)
 #----------------------------------------------------------------------
-TARGET_OUT_PERSIST := $(PRODUCT_OUT)/persist
+TARGET_OUT_PERSIST_IMG_PATH := $(PRODUCT_OUT)/persist
 
 INTERNAL_PERSISTIMAGE_FILES := \
     $(foreach pair,$(PRODUCT_COPY_FILES),\
@@ -15,8 +24,8 @@
 
 $(INSTALLED_PERSISTIMAGE_TARGET): $(MKEXTUSERIMG) $(MAKE_EXT4FS) $(INSTALLED_PERSISTIMAGE_FILES)
 	$(call pretty,"Target persist fs image: $(INSTALLED_PERSISTIMAGE_TARGET)")
-	@mkdir -p $(TARGET_OUT_PERSIST)
-	$(hide) PATH=$(HOST_OUT_EXECUTABLES):$${PATH} $(MKEXTUSERIMG) -s $(TARGET_OUT_PERSIST) $@ ext4 persist $(BOARD_PERSISTIMAGE_PARTITION_SIZE)
+	@mkdir -p $(TARGET_OUT_PERSIST_IMG_PATH)
+	$(hide) PATH=$(HOST_OUT_EXECUTABLES):$${PATH} $(MKEXTUSERIMG) -s $(TARGET_OUT_PERSIST_IMG_PATH) $@ ext4 persist $(BOARD_PERSISTIMAGE_PARTITION_SIZE)
 	$(hide) chmod a+r $@
 	$(hide) $(call assert-max-image-size,$@,$(BOARD_PERSISTIMAGE_PARTITION_SIZE))
 
diff --git a/crosshatch/overlay/packages/apps/Settings/res/drawable/regulatory_info.png b/crosshatch/overlay/packages/apps/Settings/res/drawable/regulatory_info.png
deleted file mode 100644
index 681af71..0000000
--- a/crosshatch/overlay/packages/apps/Settings/res/drawable/regulatory_info.png
+++ /dev/null
Binary files differ
diff --git a/crosshatch/overlay/packages/apps/Settings/res/drawable/regulatory_info_g013c.png b/crosshatch/overlay/packages/apps/Settings/res/drawable/regulatory_info_g013c.png
new file mode 100644
index 0000000..c1ad15e
--- /dev/null
+++ b/crosshatch/overlay/packages/apps/Settings/res/drawable/regulatory_info_g013c.png
Binary files differ
diff --git a/crosshatch/overlay/packages/apps/Settings/res/drawable/regulatory_info_g013d.png b/crosshatch/overlay/packages/apps/Settings/res/drawable/regulatory_info_g013d.png
new file mode 100644
index 0000000..84b20bd
--- /dev/null
+++ b/crosshatch/overlay/packages/apps/Settings/res/drawable/regulatory_info_g013d.png
Binary files differ
diff --git a/fstab.hardware b/fstab.hardware
index 6138f7a..af8fbba 100644
--- a/fstab.hardware
+++ b/fstab.hardware
@@ -5,6 +5,6 @@
 /dev/block/bootdevice/by-name/metadata              /metadata          ext4        noatime,nosuid,nodev,discard                          wait,check,formattable
 /dev/block/bootdevice/by-name/userdata              /data              f2fs        noatime,nosuid,nodev,discard,reserve_root=32768,resgid=1065,fsync_mode=nobarrier       latemount,wait,check,fileencryption=ice,keydirectory=/metadata/vold/metadata_encryption,quota,formattable,sysfs_path=/sys/devices/platform/soc/1d84000.ufshc,reservedsize=128M
 /dev/block/bootdevice/by-name/misc                  /misc              emmc        defaults                                              defaults
-/dev/block/bootdevice/by-name/modem                 /firmware          vfat        ro,shortname=lower,uid=1000,gid=1000,dmask=227,fmask=337,context=u:object_r:firmware_file:s0   wait,slotselect
+/dev/block/bootdevice/by-name/modem                 /vendor/firmware_mnt          vfat        ro,shortname=lower,uid=1000,gid=1000,dmask=227,fmask=337,context=u:object_r:firmware_file:s0   wait,slotselect
 /devices/platform/soc/a600000.ssusb/a600000.dwc3*   auto               vfat        defaults                                              voldmanaged=usb:auto
 /dev/block/zram0                                    none               swap        defaults                                              zramsize=536870912,max_comp_streams=8
diff --git a/health/Android.bp b/health/Android.bp
index cbce185..4e2edb6 100644
--- a/health/Android.bp
+++ b/health/Android.bp
@@ -26,6 +26,7 @@
         "HealthService.cpp",
         "BatteryRechargingControl.cpp",
         "BatteryMetricsLogger.cpp",
+        "LowBatteryShutdownMetrics.cpp",
     ],
 
     cflags: [
diff --git a/health/HealthService.cpp b/health/HealthService.cpp
index cd1f53a..a6e97f5 100644
--- a/health/HealthService.cpp
+++ b/health/HealthService.cpp
@@ -31,6 +31,7 @@
 
 #include "BatteryRechargingControl.h"
 #include "BatteryMetricsLogger.h"
+#include "LowBatteryShutdownMetrics.h"
 
 namespace {
 
@@ -39,9 +40,11 @@
 using android::hardware::health::V2_0::StorageInfo;
 using ::device::google::crosshatch::health::BatteryRechargingControl;
 using ::device::google::crosshatch::health::BatteryMetricsLogger;
+using ::device::google::crosshatch::health::LowBatteryShutdownMetrics;
 
 static BatteryRechargingControl battRechargingControl;
 static BatteryMetricsLogger battMetricsLogger;
+static LowBatteryShutdownMetrics shutdownMetrics;
 
 #define UFS_DIR "/sys/devices/platform/soc/1d84000.ufshc"
 const std::string kUfsHealthEol{UFS_DIR "/health/eol"};
@@ -51,7 +54,7 @@
 const std::string kDiskStatsFile{"/sys/block/sda/stat"};
 const std::string kUFSName{"UFS0"};
 
-std::ifstream assert_open(const std::string& path) {
+std::ifstream assert_open(const std::string &path) {
     std::ifstream stream(path);
     if (!stream.is_open()) {
         LOG(FATAL) << "Cannot read " << path;
@@ -60,13 +63,13 @@
 }
 
 template <typename T>
-void read_value_from_file(const std::string& path, T* field) {
+void read_value_from_file(const std::string &path, T *field) {
     auto stream = assert_open(path);
     stream.unsetf(std::ios_base::basefield);
     stream >> *field;
 }
 
-void read_ufs_version(StorageInfo* info) {
+void read_ufs_version(StorageInfo *info) {
     uint64_t value;
     read_value_from_file(kUfsVersion, &value);
     std::stringstream ss;
@@ -74,7 +77,7 @@
     info->version = ss.str();
 }
 
-void fill_ufs_storage_attribute(StorageAttribute* attr) {
+void fill_ufs_storage_attribute(StorageAttribute *attr) {
     attr->isInternal = true;
     attr->isBootDevice = true;
     attr->name = kUFSName;
@@ -82,18 +85,21 @@
 
 }  // anonymous namespace
 
-void healthd_board_init(struct healthd_config*) {
-}
+void healthd_board_init(struct healthd_config *) {}
 
 int healthd_board_battery_update(struct android::BatteryProperties *props) {
     battRechargingControl.updateBatteryProperties(props);
     battMetricsLogger.logBatteryProperties(props);
+    shutdownMetrics.logShutdownVoltage(props);
+    if (!android::base::WriteStringToFile(std::to_string(props->batteryLevel),
+                                          "/sys/class/power_supply/wireless/capacity"))
+        LOG(INFO) << "Unable to write battery level to wireless capacity";
     return 0;
 }
 
-void get_storage_info(std::vector<StorageInfo>& vec_storage_info) {
+void get_storage_info(std::vector<StorageInfo> &vec_storage_info) {
     vec_storage_info.resize(1);
-    StorageInfo* storage_info = &vec_storage_info[0];
+    StorageInfo *storage_info = &vec_storage_info[0];
     fill_ufs_storage_attribute(&storage_info->attr);
 
     read_ufs_version(storage_info);
@@ -103,24 +109,16 @@
     return;
 }
 
-void get_disk_stats(std::vector<DiskStats>& vec_stats) {
+void get_disk_stats(std::vector<DiskStats> &vec_stats) {
     vec_stats.resize(1);
-    DiskStats* stats = &vec_stats[0];
+    DiskStats *stats = &vec_stats[0];
     fill_ufs_storage_attribute(&stats->attr);
 
     auto stream = assert_open(kDiskStatsFile);
     // Regular diskstats entries
-    stream >> stats->reads
-           >> stats->readMerges
-           >> stats->readSectors
-           >> stats->readTicks
-           >> stats->writes
-           >> stats->writeMerges
-           >> stats->writeSectors
-           >> stats->writeTicks
-           >> stats->ioInFlight
-           >> stats->ioTicks
-           >> stats->ioInQueue;
+    stream >> stats->reads >> stats->readMerges >> stats->readSectors >> stats->readTicks >>
+        stats->writes >> stats->writeMerges >> stats->writeSectors >> stats->writeTicks >>
+        stats->ioInFlight >> stats->ioTicks >> stats->ioInQueue;
     return;
 }
 
diff --git a/health/LowBatteryShutdownMetrics.cpp b/health/LowBatteryShutdownMetrics.cpp
new file mode 100644
index 0000000..f0967ff
--- /dev/null
+++ b/health/LowBatteryShutdownMetrics.cpp
@@ -0,0 +1,103 @@
+
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "LowBatteryShutdownMetrics.h"
+
+namespace device {
+namespace google {
+namespace crosshatch {
+namespace health {
+
+using android::BATTERY_STATUS_DISCHARGING;
+using android::sp;
+using android::base::GetProperty;
+using android::base::ReadFileToString;
+using android::base::SetProperty;
+using ::hardware::google::pixelstats::V1_0::IPixelStats;
+
+LowBatteryShutdownMetrics::LowBatteryShutdownMetrics() {
+    prop_written_ = false;
+    prop_empty_ = false;
+}
+
+bool LowBatteryShutdownMetrics::uploadVoltageAvg(void) {
+    std::string prop_contents = GetProperty(kPersistProp, "");
+    LOG(INFO) << kPersistProp << " property contents: " << prop_contents;
+    if (prop_contents.size() == 0) {  // we don't have anything to upload
+        prop_empty_ = true;
+        return false;
+    }
+
+    sp<IPixelStats> client = IPixelStats::tryGetService();
+    if (!client) {
+        LOG(ERROR) << "Unable to connect to PixelStats service";
+        return false;
+    }
+
+    // Process and upload comma-delimited last voltage values
+    int32_t voltage_avg;
+    for (const auto& item : android::base::Split(prop_contents, ",")) {
+        if (!(voltage_avg = stoi(item))) {
+            LOG(ERROR) << "Couldn't process voltage value " << item;
+            continue;
+        }
+        LOG(INFO) << "Uploading voltage_avg: " << std::to_string(voltage_avg);
+        client->reportBatteryCausedShutdown(voltage_avg);
+    }
+
+    // Clear property now that we've uploaded its contents
+    SetProperty(kPersistProp, "");
+    return true;
+}
+
+bool LowBatteryShutdownMetrics::saveVoltageAvg(void) {
+    std::string voltage_avg;
+    std::string prop_contents;
+
+    if (!ReadFileToString(kVoltageAvg, &voltage_avg)) {
+        LOG(ERROR) << "Can't read the Maxim fuel gauge average voltage value";
+        return false;
+    }
+    voltage_avg = ::android::base::Trim(voltage_avg);
+    prop_contents = GetProperty(kPersistProp, "");
+
+    // Comma delimit additional values
+    if (prop_contents.size() > 0)
+        prop_contents += ",";
+    prop_contents += voltage_avg;
+
+    LOG(INFO) << "Saving \"" << voltage_avg << "\" to " << kPersistProp;
+
+    return SetProperty(kPersistProp, voltage_avg);
+}
+
+void LowBatteryShutdownMetrics::logShutdownVoltage(struct android::BatteryProperties *props) {
+    // If we're about to shut down due to low battery, save voltage_avg
+    if (!prop_written_ && props->batteryLevel == 0 &&
+        props->batteryStatus == android::BATTERY_STATUS_DISCHARGING) {
+        prop_written_ = saveVoltageAvg();
+    } else if (!prop_empty_) {  // We have data to upload
+        uploadVoltageAvg();
+    }
+
+    return;
+}
+
+}  // namespace health
+}  // namespace crosshatch
+}  // namespace google
+}  // namespace device
diff --git a/health/LowBatteryShutdownMetrics.h b/health/LowBatteryShutdownMetrics.h
new file mode 100644
index 0000000..ee17f9c
--- /dev/null
+++ b/health/LowBatteryShutdownMetrics.h
@@ -0,0 +1,61 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef DEVICE_GOOGLE_CROSSHATCH_HEALTH_LOWBATTERYSHUTDOWNMETRICS_H
+#define DEVICE_GOOGLE_CROSSHATCH_HEALTH_LOWBATTERYSHUTDOWNMETRICS_H
+
+#include <android-base/file.h>
+#include <android-base/logging.h>
+#include <android-base/properties.h>
+#include <android-base/strings.h>
+#include <batteryservice/BatteryService.h>
+#include <math.h>
+#include <time.h>
+#include <utils/Timers.h>
+#include <string>
+
+#include <hardware/google/pixelstats/1.0/IPixelStats.h>
+
+namespace device {
+namespace google {
+namespace crosshatch {
+namespace health {
+
+class LowBatteryShutdownMetrics {
+  public:
+    LowBatteryShutdownMetrics();
+    void logShutdownVoltage(struct android::BatteryProperties *props);
+
+  private:
+    const char *kVoltageAvg = "/sys/class/power_supply/maxfg/voltage_avg";
+    const char *kPersistProp = "persist.vendor.shutdown.voltage_avg";
+
+    // Helps enforce that we only record kVoltageAvg once per boot cycle
+    bool prop_written_;
+    // Help us avoid polling kPersistProp if it's empty
+    bool prop_empty_;
+
+    bool saveVoltageAvg();
+    void readStatus();
+    bool uploadVoltageAvg();
+};
+
+}  // namespace health
+}  // namespace crosshatch
+}  // namespace google
+}  // namespace device
+
+#endif
diff --git a/overlay/frameworks/base/core/res/res/values/config.xml b/overlay/frameworks/base/core/res/res/values/config.xml
index 8612dee..9199185 100755
--- a/overlay/frameworks/base/core/res/res/values/config.xml
+++ b/overlay/frameworks/base/core/res/res/values/config.xml
@@ -340,6 +340,9 @@
         <item>"/system/framework/boot.vdex"</item>
         <item>"/system/framework/arm64/boot-core-libart.oat"</item>
         <item>"/system/framework/boot-core-libart.vdex"</item>
+        <item>"/system/priv-app/SystemUIGoogle/oat/arm64/SystemUIGoogle.vdex"</item>
+        <item>"/system/priv-app/SystemUIGoogle/oat/arm64/SystemUIGoogle.odex"</item>
+        <item>"/system/lib64/libsurfaceflinger.so"</item>
     </string-array>
 
     <!-- Should the pinner service pin the Camera application? -->
diff --git a/powerhint.json b/powerhint.json
index 585d4d1..45c4880 100644
--- a/powerhint.json
+++ b/powerhint.json
@@ -5,8 +5,8 @@
       "Path": "/sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq",
       "Values": [
         "9999999",
-        "1612800",
-        "1516800",
+        "1420800",
+        "1324800",
         "1228800"
       ],
       "DefaultIndex": 0,
@@ -17,9 +17,8 @@
       "Path": "/sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq",
       "Values": [
         "9999999",
-        "1612800",
-        "1516800",
         "1420800",
+        "1324800",
         "1132800",
         "0"
       ],
@@ -31,9 +30,9 @@
       "Values": [
         "9999999",
         "1996800",
-        "1612800",
         "1459200",
-        "1363200"
+        "1363200",
+        "1286400"
       ],
       "DefaultIndex": 0,
       "ResetOnInit": true
@@ -43,9 +42,8 @@
       "Path": "/sys/devices/system/cpu/cpu4/cpufreq/scaling_min_freq",
       "Values": [
         "9999999",
-        "1612800",
         "1459200",
-        "1363200",
+        "1286400",
         "1209600",
         "0"
       ],
@@ -56,8 +54,6 @@
       "Path": "/sys/class/kgsl/kgsl-3d0/devfreq/max_freq",
       "Values": [
         "710000000",
-        "520000000",
-        "414000000",
         "342000000"
       ],
       "DefaultIndex": 0,
@@ -68,7 +64,7 @@
       "Path": "/sys/class/kgsl/kgsl-3d0/devfreq/min_freq",
       "Values": [
         "520000000",
-        "414000000",
+        "342000000",
         "257000000"
       ],
       "ResetOnInit": true
@@ -79,6 +75,7 @@
       "Values": [
         "6881",
         "5931",
+        "3879",
         "0"
       ],
       "ResetOnInit": true
@@ -263,43 +260,43 @@
       "PowerHint": "VR_MODE",
       "Node": "CPUBigClusterMaxFreq",
       "Duration": 0,
-      "Value": "1612800"
+      "Value": "1459200"
     },
     {
       "PowerHint": "VR_MODE",
       "Node": "CPUBigClusterMinFreq",
       "Duration": 0,
-      "Value": "1612800"
+      "Value": "1459200"
     },
     {
       "PowerHint": "VR_MODE",
       "Node": "CPULittleClusterMaxFreq",
       "Duration": 0,
-      "Value": "1612800"
+      "Value": "1420800"
     },
     {
       "PowerHint": "VR_MODE",
       "Node": "CPULittleClusterMinFreq",
       "Duration": 0,
-      "Value": "1612800"
+      "Value": "1420800"
     },
     {
       "PowerHint": "VR_MODE",
       "Node": "GPUMaxFreq",
       "Duration": 0,
-      "Value": "520000000"
+      "Value": "342000000"
     },
     {
       "PowerHint": "VR_MODE",
       "Node": "GPUMinFreq",
       "Duration": 0,
-      "Value": "520000000"
+      "Value": "342000000"
     },
     {
       "PowerHint": "VR_MODE",
       "Node": "GPUBusMinFreq",
       "Duration": 0,
-      "Value": "6881"
+      "Value": "5931"
     },
     {
       "PowerHint": "VR_MODE",
@@ -311,43 +308,43 @@
       "PowerHint": "VR_SUSTAINED_PERFORMANCE",
       "Node": "CPUBigClusterMaxFreq",
       "Duration": 0,
-      "Value": "1459200"
+      "Value": "1286400"
     },
     {
       "PowerHint": "VR_SUSTAINED_PERFORMANCE",
       "Node": "CPUBigClusterMinFreq",
       "Duration": 0,
-      "Value": "1363200"
+      "Value": "1286400"
     },
     {
       "PowerHint": "VR_SUSTAINED_PERFORMANCE",
       "Node": "CPULittleClusterMaxFreq",
       "Duration": 0,
-      "Value": "1516800"
+      "Value": "1324800"
     },
     {
       "PowerHint": "VR_SUSTAINED_PERFORMANCE",
       "Node": "CPULittleClusterMinFreq",
       "Duration": 0,
-      "Value": "1420800"
+      "Value": "1324800"
     },
     {
       "PowerHint": "VR_SUSTAINED_PERFORMANCE",
       "Node": "GPUMaxFreq",
       "Duration": 0,
-      "Value": "414000000"
+      "Value": "342000000"
     },
     {
       "PowerHint": "VR_SUSTAINED_PERFORMANCE",
       "Node": "GPUMinFreq",
       "Duration": 0,
-      "Value": "414000000"
+      "Value": "342000000"
     },
     {
       "PowerHint": "VR_SUSTAINED_PERFORMANCE",
       "Node": "GPUBusMinFreq",
       "Duration": 0,
-      "Value": "5931"
+      "Value": "3879"
     },
     {
       "PowerHint": "VR_SUSTAINED_PERFORMANCE",
diff --git a/sdm845/kernel-headers/linux/sockev.h b/sdm845/kernel-headers/linux/sockev.h
new file mode 100644
index 0000000..b730ef8
--- /dev/null
+++ b/sdm845/kernel-headers/linux/sockev.h
@@ -0,0 +1,40 @@
+/****************************************************************************
+ ****************************************************************************
+ ***
+ ***   This header was automatically generated from a Linux kernel header
+ ***   of the same name, to make information necessary for userspace to
+ ***   call into the kernel available to libc.  It contains only constants,
+ ***   structures, and macros generated from the original header, and thus,
+ ***   contains no copyrightable information.
+ ***
+ ***   To edit the content of this header, modify the corresponding
+ ***   source file (e.g. under external/kernel-headers/original/) then
+ ***   run bionic/libc/kernel/tools/update_all.py
+ ***
+ ***   Any manual change here will be lost the next time this script will
+ ***   be run. You've been warned!
+ ***
+ ****************************************************************************
+ ****************************************************************************/
+#ifndef _SOCKEV_H_
+#define _SOCKEV_H_
+#include <linux/types.h>
+#include <linux/netlink.h>
+#include <linux/socket.h>
+enum sknetlink_groups {
+  SKNLGRP_UNICAST,
+  SKNLGRP_SOCKEV,
+  __SKNLGRP_MAX
+};
+#define SOCKEV_STR_MAX 32
+struct sknlsockevmsg {
+  __u8 event[SOCKEV_STR_MAX];
+  __u32 pid;
+  __u16 skfamily;
+  __u8 skstate;
+  __u8 skprotocol;
+  __u16 sktype;
+  __u64 skflags;
+};
+#endif
+
diff --git a/sdm845/original-kernel-headers/linux/sockev.h b/sdm845/original-kernel-headers/linux/sockev.h
new file mode 100644
index 0000000..b274fbc
--- /dev/null
+++ b/sdm845/original-kernel-headers/linux/sockev.h
@@ -0,0 +1,31 @@
+#ifndef _SOCKEV_H_
+#define _SOCKEV_H_
+
+#include <linux/types.h>
+#include <linux/netlink.h>
+#include <linux/socket.h>
+
+enum sknetlink_groups {
+	SKNLGRP_UNICAST,
+	SKNLGRP_SOCKEV,
+	__SKNLGRP_MAX
+};
+
+#define SOCKEV_STR_MAX 32
+
+/********************************************************************
+ *		Socket operation messages
+ ****/
+
+struct sknlsockevmsg {
+	__u8 event[SOCKEV_STR_MAX];
+	__u32 pid; /* (struct task_struct*)->pid */
+	__u16 skfamily; /* (struct socket*)->sk->sk_family */
+	__u8 skstate; /* (struct socket*)->sk->sk_state */
+	__u8 skprotocol; /* (struct socket*)->sk->sk_protocol */
+	__u16 sktype; /* (struct socket*)->sk->sk_type */
+	__u64 skflags; /* (struct socket*)->sk->sk_flags */
+};
+
+#endif /* _SOCKEV_H_ */
+
diff --git a/self-extractors/extract-lists.txt b/self-extractors/extract-lists.txt
index b8ba57d..54d1f4c 100644
--- a/self-extractors/extract-lists.txt
+++ b/self-extractors/extract-lists.txt
@@ -11,6 +11,7 @@
             system/etc/firmware/music_detector.sound_model \
             system/etc/init/init-persist.rc \
             system/etc/permissions/cneapiclient.xml \
+            system/etc/permissions/com.google.android.factoryota.xml \
             system/etc/permissions/com.qualcomm.qti.imscmservice.xml \
             system/etc/permissions/com.quicinc.cne.xml \
             system/etc/permissions/embms.xml \
@@ -23,6 +24,7 @@
             system/etc/permissions/telephonyservice.xml \
             system/etc/permissions/uimremoteclient.xml \
             system/etc/permissions/uimremoteserver.xml \
+            system/etc/permissions/UimService.xml \
             system/framework/com.qualcomm.qti.uceservice-V2.0-java.jar \
             system/framework/embmslibrary.jar \
             system/framework/LteDirectDiscoveryLibrary.jar \
@@ -36,32 +38,57 @@
             system/framework/uimremotesimlocklibrary.jar \
             system/framework/vendor.qti.hardware.alarm-V1.0-java.jar \
             system/framework/vendor.qti.hardware.data.latency-V1.0-java.jar \
+            system/framework/vendor.qti.hardware.soter-V1.0-java.jar \
+            system/lib64/libadsprpc_system.so \
+            system/lib64/libcdsprpc_system.so \
             system/lib64/libDiagService.so \
+            system/lib64/libdiag_system.so \
+            system/lib64/libGPQTEEC_system.so \
+            system/lib64/libGPTEE_system.so \
             system/lib64/libimscamera_jni.so \
             system/lib64/libimsmedia_jni.so \
             system/lib64/lib-imsvideocodec.so \
             system/lib64/lib-imsvtextutils.so \
             system/lib64/lib-imsvt.so \
             system/lib64/lib-imsvtutils.so \
+            system/lib64/libiperf.so \
             system/lib64/liblistenjni.so \
             system/lib64/liblistensoundmodel2.so \
+            system/lib64/libmdsprpc_system.so \
+            system/lib64/libminui.so \
+            system/lib64/libQTEEConnector_system.so \
             system/lib64/librcc.so \
             system/lib64/libsdm-disp-apis.so \
+            system/lib64/libsdsprpc_system.so \
             system/lib64/libsecureuisvc_jni.so \
+            system/lib64/libsecureui_svcsock_system.so \
             system/lib64/libsensorslog.so \
             system/lib64/libsns_low_lat_stream_stub.so \
+            system/lib/libadsprpc_system.so \
+            system/lib/libcdsprpc_system.so \
+            system/lib/libdiag_system.so \
+            system/lib/libGPQTEEC_system.so \
+            system/lib/libGPTEE_system.so \
             system/lib/libimscamera_jni.so \
             system/lib/libimsmedia_jni.so \
             system/lib/lib-imsvideocodec.so \
             system/lib/lib-imsvtextutils.so \
             system/lib/lib-imsvt.so \
             system/lib/lib-imsvtutils.so \
+            system/lib/libiperf.so \
             system/lib/liblistenjni.so \
             system/lib/liblistensoundmodel2.so \
+            system/lib/liblogwrap.so \
+            system/lib/libmdsprpc_system.so \
+            system/lib/libminui.so \
+            system/lib/libprotobuf-cpp-full.so \
             system/lib/libqct_resampler.so \
+            system/lib/libQTEEConnector_system.so \
             system/lib/librcc.so \
             system/lib/libsdm-disp-apis.so \
+            system/lib/libsdsprpc_system.so \
             system/lib/libsecureuisvc_jni.so \
+            system/lib/libsecureui_svcsock_system.so \
             system/lib/libsensorslog.so \
             system/lib/libsns_low_lat_stream_stub.so \
             system/lib/rfsa/adsp/libsns_low_lat_stream_skel.so \
diff --git a/self-extractors/qcom/staging/device-partial.mk b/self-extractors/qcom/staging/device-partial.mk
index 7d64a53..2ffd9c1 100644
--- a/self-extractors/qcom/staging/device-partial.mk
+++ b/self-extractors/qcom/staging/device-partial.mk
@@ -19,63 +19,91 @@
 
 #  blob(s) necessary for crosshatch hardware
 PRODUCT_COPY_FILES := \
+    vendor/qcom/crosshatch/proprietary/cneapiclient.xml:system/etc/permissions/cneapiclient.xml:qcom \
+    vendor/qcom/crosshatch/proprietary/com.google.android.factoryota.xml:system/etc/permissions/com.google.android.factoryota.xml:qcom \
+    vendor/qcom/crosshatch/proprietary/com.qualcomm.qti.imscmservice.xml:system/etc/permissions/com.qualcomm.qti.imscmservice.xml:qcom \
+    vendor/qcom/crosshatch/proprietary/com.qualcomm.qti.uceservice-V2.0-java.jar:system/framework/com.qualcomm.qti.uceservice-V2.0-java.jar:qcom \
+    vendor/qcom/crosshatch/proprietary/com.quicinc.cne.xml:system/etc/permissions/com.quicinc.cne.xml:qcom \
     vendor/qcom/crosshatch/proprietary/dnd.descriptor:system/etc/firmware/dnd.descriptor:qcom \
     vendor/qcom/crosshatch/proprietary/dnd.sound_model:system/etc/firmware/dnd.sound_model:qcom \
-    vendor/qcom/crosshatch/proprietary/music_detector.descriptor:system/etc/firmware/music_detector.descriptor:qcom \
-    vendor/qcom/crosshatch/proprietary/music_detector.sound_model:system/etc/firmware/music_detector.sound_model:qcom \
-    vendor/qcom/crosshatch/proprietary/init-persist.rc:system/etc/init/init-persist.rc:qcom \
-    vendor/qcom/crosshatch/proprietary/cneapiclient.xml:system/etc/permissions/cneapiclient.xml:qcom \
-    vendor/qcom/crosshatch/proprietary/com.qualcomm.qti.imscmservice.xml:system/etc/permissions/com.qualcomm.qti.imscmservice.xml:qcom \
-    vendor/qcom/crosshatch/proprietary/com.quicinc.cne.xml:system/etc/permissions/com.quicinc.cne.xml:qcom \
-    vendor/qcom/crosshatch/proprietary/embms.xml:system/etc/permissions/embms.xml:qcom \
-    vendor/qcom/crosshatch/proprietary/lpa.xml:system/etc/permissions/lpa.xml:qcom \
-    vendor/qcom/crosshatch/proprietary/LteDirectDiscovery.xml:system/etc/permissions/LteDirectDiscovery.xml:qcom \
-    vendor/qcom/crosshatch/proprietary/qcrilhook.xml:system/etc/permissions/qcrilhook.xml:qcom \
-    vendor/qcom/crosshatch/proprietary/radioconfiginterface.xml:system/etc/permissions/radioconfiginterface.xml:qcom \
-    vendor/qcom/crosshatch/proprietary/radioconfig.xml:system/etc/permissions/radioconfig.xml:qcom \
-    vendor/qcom/crosshatch/proprietary/RemoteSimlock.xml:system/etc/permissions/RemoteSimlock.xml:qcom \
-    vendor/qcom/crosshatch/proprietary/telephonyservice.xml:system/etc/permissions/telephonyservice.xml:qcom \
-    vendor/qcom/crosshatch/proprietary/uimremoteclient.xml:system/etc/permissions/uimremoteclient.xml:qcom \
-    vendor/qcom/crosshatch/proprietary/uimremoteserver.xml:system/etc/permissions/uimremoteserver.xml:qcom \
-    vendor/qcom/crosshatch/proprietary/com.qualcomm.qti.uceservice-V2.0-java.jar:system/framework/com.qualcomm.qti.uceservice-V2.0-java.jar:qcom \
     vendor/qcom/crosshatch/proprietary/embmslibrary.jar:system/framework/embmslibrary.jar:qcom \
-    vendor/qcom/crosshatch/proprietary/LteDirectDiscoveryLibrary.jar:system/framework/LteDirectDiscoveryLibrary.jar:qcom \
-    vendor/qcom/crosshatch/proprietary/qcrilhook.jar:system/framework/qcrilhook.jar:qcom \
-    vendor/qcom/crosshatch/proprietary/QtiTelephonyServicelibrary.jar:system/framework/QtiTelephonyServicelibrary.jar:qcom \
-    vendor/qcom/crosshatch/proprietary/radioconfiginterfacelibrary.jar:system/framework/radioconfiginterfacelibrary.jar:qcom \
-    vendor/qcom/crosshatch/proprietary/radioconfiglibrary.jar:system/framework/radioconfiglibrary.jar:qcom \
-    vendor/qcom/crosshatch/proprietary/uimlpalibrary.jar:system/framework/uimlpalibrary.jar:qcom \
-    vendor/qcom/crosshatch/proprietary/uimremoteclientlibrary.jar:system/framework/uimremoteclientlibrary.jar:qcom \
-    vendor/qcom/crosshatch/proprietary/uimremoteserverlibrary.jar:system/framework/uimremoteserverlibrary.jar:qcom \
-    vendor/qcom/crosshatch/proprietary/uimremotesimlocklibrary.jar:system/framework/uimremotesimlocklibrary.jar:qcom \
-    vendor/qcom/crosshatch/proprietary/vendor.qti.hardware.alarm-V1.0-java.jar:system/framework/vendor.qti.hardware.alarm-V1.0-java.jar:qcom \
-    vendor/qcom/crosshatch/proprietary/vendor.qti.hardware.data.latency-V1.0-java.jar:system/framework/vendor.qti.hardware.data.latency-V1.0-java.jar:qcom \
+    vendor/qcom/crosshatch/proprietary/embms.xml:system/etc/permissions/embms.xml:qcom \
+    vendor/qcom/crosshatch/proprietary/init-persist.rc:system/etc/init/init-persist.rc:qcom \
+    vendor/qcom/crosshatch/proprietary/lib64/libadsprpc_system.so:system/lib64/libadsprpc_system.so:qcom \
+    vendor/qcom/crosshatch/proprietary/lib64/libcdsprpc_system.so:system/lib64/libcdsprpc_system.so:qcom \
     vendor/qcom/crosshatch/proprietary/lib64/libDiagService.so:system/lib64/libDiagService.so:qcom \
+    vendor/qcom/crosshatch/proprietary/lib64/libdiag_system.so:system/lib64/libdiag_system.so:qcom \
+    vendor/qcom/crosshatch/proprietary/lib64/libGPQTEEC_system.so:system/lib64/libGPQTEEC_system.so:qcom \
+    vendor/qcom/crosshatch/proprietary/lib64/libGPTEE_system.so:system/lib64/libGPTEE_system.so:qcom \
     vendor/qcom/crosshatch/proprietary/lib64/libimscamera_jni.so:system/lib64/libimscamera_jni.so:qcom \
     vendor/qcom/crosshatch/proprietary/lib64/libimsmedia_jni.so:system/lib64/libimsmedia_jni.so:qcom \
     vendor/qcom/crosshatch/proprietary/lib64/lib-imsvideocodec.so:system/lib64/lib-imsvideocodec.so:qcom \
     vendor/qcom/crosshatch/proprietary/lib64/lib-imsvtextutils.so:system/lib64/lib-imsvtextutils.so:qcom \
     vendor/qcom/crosshatch/proprietary/lib64/lib-imsvt.so:system/lib64/lib-imsvt.so:qcom \
     vendor/qcom/crosshatch/proprietary/lib64/lib-imsvtutils.so:system/lib64/lib-imsvtutils.so:qcom \
+    vendor/qcom/crosshatch/proprietary/lib64/libiperf.so:system/lib64/libiperf.so:qcom \
     vendor/qcom/crosshatch/proprietary/lib64/liblistenjni.so:system/lib64/liblistenjni.so:qcom \
     vendor/qcom/crosshatch/proprietary/lib64/liblistensoundmodel2.so:system/lib64/liblistensoundmodel2.so:qcom \
+    vendor/qcom/crosshatch/proprietary/lib64/libmdsprpc_system.so:system/lib64/libmdsprpc_system.so:qcom \
+    vendor/qcom/crosshatch/proprietary/lib64/libminui.so:system/lib64/libminui.so:qcom \
+    vendor/qcom/crosshatch/proprietary/lib64/libQTEEConnector_system.so:system/lib64/libQTEEConnector_system.so:qcom \
     vendor/qcom/crosshatch/proprietary/lib64/librcc.so:system/lib64/librcc.so:qcom \
     vendor/qcom/crosshatch/proprietary/lib64/libsdm-disp-apis.so:system/lib64/libsdm-disp-apis.so:qcom \
+    vendor/qcom/crosshatch/proprietary/lib64/libsdsprpc_system.so:system/lib64/libsdsprpc_system.so:qcom \
     vendor/qcom/crosshatch/proprietary/lib64/libsecureuisvc_jni.so:system/lib64/libsecureuisvc_jni.so:qcom \
+    vendor/qcom/crosshatch/proprietary/lib64/libsecureui_svcsock_system.so:system/lib64/libsecureui_svcsock_system.so:qcom \
     vendor/qcom/crosshatch/proprietary/lib64/libsensorslog.so:system/lib64/libsensorslog.so:qcom \
     vendor/qcom/crosshatch/proprietary/lib64/libsns_low_lat_stream_stub.so:system/lib64/libsns_low_lat_stream_stub.so:qcom \
+    vendor/qcom/crosshatch/proprietary/libadsprpc_system.so:system/lib/libadsprpc_system.so:qcom \
+    vendor/qcom/crosshatch/proprietary/libcdsprpc_system.so:system/lib/libcdsprpc_system.so:qcom \
+    vendor/qcom/crosshatch/proprietary/libdiag_system.so:system/lib/libdiag_system.so:qcom \
+    vendor/qcom/crosshatch/proprietary/libGPQTEEC_system.so:system/lib/libGPQTEEC_system.so:qcom \
+    vendor/qcom/crosshatch/proprietary/libGPTEE_system.so:system/lib/libGPTEE_system.so:qcom \
     vendor/qcom/crosshatch/proprietary/libimscamera_jni.so:system/lib/libimscamera_jni.so:qcom \
     vendor/qcom/crosshatch/proprietary/libimsmedia_jni.so:system/lib/libimsmedia_jni.so:qcom \
     vendor/qcom/crosshatch/proprietary/lib-imsvideocodec.so:system/lib/lib-imsvideocodec.so:qcom \
     vendor/qcom/crosshatch/proprietary/lib-imsvtextutils.so:system/lib/lib-imsvtextutils.so:qcom \
     vendor/qcom/crosshatch/proprietary/lib-imsvt.so:system/lib/lib-imsvt.so:qcom \
     vendor/qcom/crosshatch/proprietary/lib-imsvtutils.so:system/lib/lib-imsvtutils.so:qcom \
+    vendor/qcom/crosshatch/proprietary/libiperf.so:system/lib/libiperf.so:qcom \
     vendor/qcom/crosshatch/proprietary/liblistenjni.so:system/lib/liblistenjni.so:qcom \
     vendor/qcom/crosshatch/proprietary/liblistensoundmodel2.so:system/lib/liblistensoundmodel2.so:qcom \
+    vendor/qcom/crosshatch/proprietary/liblogwrap.so:system/lib/liblogwrap.so:qcom \
+    vendor/qcom/crosshatch/proprietary/libmdsprpc_system.so:system/lib/libmdsprpc_system.so:qcom \
+    vendor/qcom/crosshatch/proprietary/libminui.so:system/lib/libminui.so:qcom \
+    vendor/qcom/crosshatch/proprietary/libprotobuf-cpp-full.so:system/lib/libprotobuf-cpp-full.so:qcom \
     vendor/qcom/crosshatch/proprietary/libqct_resampler.so:system/lib/libqct_resampler.so:qcom \
+    vendor/qcom/crosshatch/proprietary/libQTEEConnector_system.so:system/lib/libQTEEConnector_system.so:qcom \
     vendor/qcom/crosshatch/proprietary/librcc.so:system/lib/librcc.so:qcom \
     vendor/qcom/crosshatch/proprietary/libsdm-disp-apis.so:system/lib/libsdm-disp-apis.so:qcom \
+    vendor/qcom/crosshatch/proprietary/libsdsprpc_system.so:system/lib/libsdsprpc_system.so:qcom \
     vendor/qcom/crosshatch/proprietary/libsecureuisvc_jni.so:system/lib/libsecureuisvc_jni.so:qcom \
+    vendor/qcom/crosshatch/proprietary/libsecureui_svcsock_system.so:system/lib/libsecureui_svcsock_system.so:qcom \
     vendor/qcom/crosshatch/proprietary/libsensorslog.so:system/lib/libsensorslog.so:qcom \
-    vendor/qcom/crosshatch/proprietary/libsns_low_lat_stream_stub.so:system/lib/libsns_low_lat_stream_stub.so:qcom \
     vendor/qcom/crosshatch/proprietary/libsns_low_lat_stream_skel.so:system/lib/rfsa/adsp/libsns_low_lat_stream_skel.so:qcom \
+    vendor/qcom/crosshatch/proprietary/libsns_low_lat_stream_stub.so:system/lib/libsns_low_lat_stream_stub.so:qcom \
+    vendor/qcom/crosshatch/proprietary/lpa.xml:system/etc/permissions/lpa.xml:qcom \
+    vendor/qcom/crosshatch/proprietary/LteDirectDiscoveryLibrary.jar:system/framework/LteDirectDiscoveryLibrary.jar:qcom \
+    vendor/qcom/crosshatch/proprietary/LteDirectDiscovery.xml:system/etc/permissions/LteDirectDiscovery.xml:qcom \
+    vendor/qcom/crosshatch/proprietary/music_detector.descriptor:system/etc/firmware/music_detector.descriptor:qcom \
+    vendor/qcom/crosshatch/proprietary/music_detector.sound_model:system/etc/firmware/music_detector.sound_model:qcom \
+    vendor/qcom/crosshatch/proprietary/qcrilhook.jar:system/framework/qcrilhook.jar:qcom \
+    vendor/qcom/crosshatch/proprietary/qcrilhook.xml:system/etc/permissions/qcrilhook.xml:qcom \
+    vendor/qcom/crosshatch/proprietary/QtiTelephonyServicelibrary.jar:system/framework/QtiTelephonyServicelibrary.jar:qcom \
+    vendor/qcom/crosshatch/proprietary/radioconfiginterfacelibrary.jar:system/framework/radioconfiginterfacelibrary.jar:qcom \
+    vendor/qcom/crosshatch/proprietary/radioconfiginterface.xml:system/etc/permissions/radioconfiginterface.xml:qcom \
+    vendor/qcom/crosshatch/proprietary/radioconfiglibrary.jar:system/framework/radioconfiglibrary.jar:qcom \
+    vendor/qcom/crosshatch/proprietary/radioconfig.xml:system/etc/permissions/radioconfig.xml:qcom \
+    vendor/qcom/crosshatch/proprietary/RemoteSimlock.xml:system/etc/permissions/RemoteSimlock.xml:qcom \
+    vendor/qcom/crosshatch/proprietary/telephonyservice.xml:system/etc/permissions/telephonyservice.xml:qcom \
+    vendor/qcom/crosshatch/proprietary/uimlpalibrary.jar:system/framework/uimlpalibrary.jar:qcom \
+    vendor/qcom/crosshatch/proprietary/uimremoteclientlibrary.jar:system/framework/uimremoteclientlibrary.jar:qcom \
+    vendor/qcom/crosshatch/proprietary/uimremoteclient.xml:system/etc/permissions/uimremoteclient.xml:qcom \
+    vendor/qcom/crosshatch/proprietary/uimremoteserverlibrary.jar:system/framework/uimremoteserverlibrary.jar:qcom \
+    vendor/qcom/crosshatch/proprietary/uimremoteserver.xml:system/etc/permissions/uimremoteserver.xml:qcom \
+    vendor/qcom/crosshatch/proprietary/uimremotesimlocklibrary.jar:system/framework/uimremotesimlocklibrary.jar:qcom \
+    vendor/qcom/crosshatch/proprietary/UimService.xml:system/etc/permissions/UimService.xml:qcom \
+    vendor/qcom/crosshatch/proprietary/vendor.qti.hardware.alarm-V1.0-java.jar:system/framework/vendor.qti.hardware.alarm-V1.0-java.jar:qcom \
+    vendor/qcom/crosshatch/proprietary/vendor.qti.hardware.data.latency-V1.0-java.jar:system/framework/vendor.qti.hardware.data.latency-V1.0-java.jar:qcom \
+    vendor/qcom/crosshatch/proprietary/vendor.qti.hardware.soter-V1.0-java.jar:system/framework/vendor.qti.hardware.soter-V1.0-java.jar:qcom \
+
diff --git a/self-extractors_blueline/extract-lists.txt b/self-extractors_blueline/extract-lists.txt
index b8ba57d..54d1f4c 100644
--- a/self-extractors_blueline/extract-lists.txt
+++ b/self-extractors_blueline/extract-lists.txt
@@ -11,6 +11,7 @@
             system/etc/firmware/music_detector.sound_model \
             system/etc/init/init-persist.rc \
             system/etc/permissions/cneapiclient.xml \
+            system/etc/permissions/com.google.android.factoryota.xml \
             system/etc/permissions/com.qualcomm.qti.imscmservice.xml \
             system/etc/permissions/com.quicinc.cne.xml \
             system/etc/permissions/embms.xml \
@@ -23,6 +24,7 @@
             system/etc/permissions/telephonyservice.xml \
             system/etc/permissions/uimremoteclient.xml \
             system/etc/permissions/uimremoteserver.xml \
+            system/etc/permissions/UimService.xml \
             system/framework/com.qualcomm.qti.uceservice-V2.0-java.jar \
             system/framework/embmslibrary.jar \
             system/framework/LteDirectDiscoveryLibrary.jar \
@@ -36,32 +38,57 @@
             system/framework/uimremotesimlocklibrary.jar \
             system/framework/vendor.qti.hardware.alarm-V1.0-java.jar \
             system/framework/vendor.qti.hardware.data.latency-V1.0-java.jar \
+            system/framework/vendor.qti.hardware.soter-V1.0-java.jar \
+            system/lib64/libadsprpc_system.so \
+            system/lib64/libcdsprpc_system.so \
             system/lib64/libDiagService.so \
+            system/lib64/libdiag_system.so \
+            system/lib64/libGPQTEEC_system.so \
+            system/lib64/libGPTEE_system.so \
             system/lib64/libimscamera_jni.so \
             system/lib64/libimsmedia_jni.so \
             system/lib64/lib-imsvideocodec.so \
             system/lib64/lib-imsvtextutils.so \
             system/lib64/lib-imsvt.so \
             system/lib64/lib-imsvtutils.so \
+            system/lib64/libiperf.so \
             system/lib64/liblistenjni.so \
             system/lib64/liblistensoundmodel2.so \
+            system/lib64/libmdsprpc_system.so \
+            system/lib64/libminui.so \
+            system/lib64/libQTEEConnector_system.so \
             system/lib64/librcc.so \
             system/lib64/libsdm-disp-apis.so \
+            system/lib64/libsdsprpc_system.so \
             system/lib64/libsecureuisvc_jni.so \
+            system/lib64/libsecureui_svcsock_system.so \
             system/lib64/libsensorslog.so \
             system/lib64/libsns_low_lat_stream_stub.so \
+            system/lib/libadsprpc_system.so \
+            system/lib/libcdsprpc_system.so \
+            system/lib/libdiag_system.so \
+            system/lib/libGPQTEEC_system.so \
+            system/lib/libGPTEE_system.so \
             system/lib/libimscamera_jni.so \
             system/lib/libimsmedia_jni.so \
             system/lib/lib-imsvideocodec.so \
             system/lib/lib-imsvtextutils.so \
             system/lib/lib-imsvt.so \
             system/lib/lib-imsvtutils.so \
+            system/lib/libiperf.so \
             system/lib/liblistenjni.so \
             system/lib/liblistensoundmodel2.so \
+            system/lib/liblogwrap.so \
+            system/lib/libmdsprpc_system.so \
+            system/lib/libminui.so \
+            system/lib/libprotobuf-cpp-full.so \
             system/lib/libqct_resampler.so \
+            system/lib/libQTEEConnector_system.so \
             system/lib/librcc.so \
             system/lib/libsdm-disp-apis.so \
+            system/lib/libsdsprpc_system.so \
             system/lib/libsecureuisvc_jni.so \
+            system/lib/libsecureui_svcsock_system.so \
             system/lib/libsensorslog.so \
             system/lib/libsns_low_lat_stream_stub.so \
             system/lib/rfsa/adsp/libsns_low_lat_stream_skel.so \
diff --git a/self-extractors_blueline/qcom/staging/device-partial.mk b/self-extractors_blueline/qcom/staging/device-partial.mk
index e7c9b0d..efaa376 100644
--- a/self-extractors_blueline/qcom/staging/device-partial.mk
+++ b/self-extractors_blueline/qcom/staging/device-partial.mk
@@ -19,63 +19,91 @@
 
 #  blob(s) necessary for blueline hardware
 PRODUCT_COPY_FILES := \
+    vendor/qcom/blueline/proprietary/cneapiclient.xml:system/etc/permissions/cneapiclient.xml:qcom \
+    vendor/qcom/blueline/proprietary/com.google.android.factoryota.xml:system/etc/permissions/com.google.android.factoryota.xml:qcom \
+    vendor/qcom/blueline/proprietary/com.qualcomm.qti.imscmservice.xml:system/etc/permissions/com.qualcomm.qti.imscmservice.xml:qcom \
+    vendor/qcom/blueline/proprietary/com.qualcomm.qti.uceservice-V2.0-java.jar:system/framework/com.qualcomm.qti.uceservice-V2.0-java.jar:qcom \
+    vendor/qcom/blueline/proprietary/com.quicinc.cne.xml:system/etc/permissions/com.quicinc.cne.xml:qcom \
     vendor/qcom/blueline/proprietary/dnd.descriptor:system/etc/firmware/dnd.descriptor:qcom \
     vendor/qcom/blueline/proprietary/dnd.sound_model:system/etc/firmware/dnd.sound_model:qcom \
-    vendor/qcom/blueline/proprietary/music_detector.descriptor:system/etc/firmware/music_detector.descriptor:qcom \
-    vendor/qcom/blueline/proprietary/music_detector.sound_model:system/etc/firmware/music_detector.sound_model:qcom \
-    vendor/qcom/blueline/proprietary/init-persist.rc:system/etc/init/init-persist.rc:qcom \
-    vendor/qcom/blueline/proprietary/cneapiclient.xml:system/etc/permissions/cneapiclient.xml:qcom \
-    vendor/qcom/blueline/proprietary/com.qualcomm.qti.imscmservice.xml:system/etc/permissions/com.qualcomm.qti.imscmservice.xml:qcom \
-    vendor/qcom/blueline/proprietary/com.quicinc.cne.xml:system/etc/permissions/com.quicinc.cne.xml:qcom \
-    vendor/qcom/blueline/proprietary/embms.xml:system/etc/permissions/embms.xml:qcom \
-    vendor/qcom/blueline/proprietary/lpa.xml:system/etc/permissions/lpa.xml:qcom \
-    vendor/qcom/blueline/proprietary/LteDirectDiscovery.xml:system/etc/permissions/LteDirectDiscovery.xml:qcom \
-    vendor/qcom/blueline/proprietary/qcrilhook.xml:system/etc/permissions/qcrilhook.xml:qcom \
-    vendor/qcom/blueline/proprietary/radioconfiginterface.xml:system/etc/permissions/radioconfiginterface.xml:qcom \
-    vendor/qcom/blueline/proprietary/radioconfig.xml:system/etc/permissions/radioconfig.xml:qcom \
-    vendor/qcom/blueline/proprietary/RemoteSimlock.xml:system/etc/permissions/RemoteSimlock.xml:qcom \
-    vendor/qcom/blueline/proprietary/telephonyservice.xml:system/etc/permissions/telephonyservice.xml:qcom \
-    vendor/qcom/blueline/proprietary/uimremoteclient.xml:system/etc/permissions/uimremoteclient.xml:qcom \
-    vendor/qcom/blueline/proprietary/uimremoteserver.xml:system/etc/permissions/uimremoteserver.xml:qcom \
-    vendor/qcom/blueline/proprietary/com.qualcomm.qti.uceservice-V2.0-java.jar:system/framework/com.qualcomm.qti.uceservice-V2.0-java.jar:qcom \
     vendor/qcom/blueline/proprietary/embmslibrary.jar:system/framework/embmslibrary.jar:qcom \
-    vendor/qcom/blueline/proprietary/LteDirectDiscoveryLibrary.jar:system/framework/LteDirectDiscoveryLibrary.jar:qcom \
-    vendor/qcom/blueline/proprietary/qcrilhook.jar:system/framework/qcrilhook.jar:qcom \
-    vendor/qcom/blueline/proprietary/QtiTelephonyServicelibrary.jar:system/framework/QtiTelephonyServicelibrary.jar:qcom \
-    vendor/qcom/blueline/proprietary/radioconfiginterfacelibrary.jar:system/framework/radioconfiginterfacelibrary.jar:qcom \
-    vendor/qcom/blueline/proprietary/radioconfiglibrary.jar:system/framework/radioconfiglibrary.jar:qcom \
-    vendor/qcom/blueline/proprietary/uimlpalibrary.jar:system/framework/uimlpalibrary.jar:qcom \
-    vendor/qcom/blueline/proprietary/uimremoteclientlibrary.jar:system/framework/uimremoteclientlibrary.jar:qcom \
-    vendor/qcom/blueline/proprietary/uimremoteserverlibrary.jar:system/framework/uimremoteserverlibrary.jar:qcom \
-    vendor/qcom/blueline/proprietary/uimremotesimlocklibrary.jar:system/framework/uimremotesimlocklibrary.jar:qcom \
-    vendor/qcom/blueline/proprietary/vendor.qti.hardware.alarm-V1.0-java.jar:system/framework/vendor.qti.hardware.alarm-V1.0-java.jar:qcom \
-    vendor/qcom/blueline/proprietary/vendor.qti.hardware.data.latency-V1.0-java.jar:system/framework/vendor.qti.hardware.data.latency-V1.0-java.jar:qcom \
+    vendor/qcom/blueline/proprietary/embms.xml:system/etc/permissions/embms.xml:qcom \
+    vendor/qcom/blueline/proprietary/init-persist.rc:system/etc/init/init-persist.rc:qcom \
+    vendor/qcom/blueline/proprietary/lib64/libadsprpc_system.so:system/lib64/libadsprpc_system.so:qcom \
+    vendor/qcom/blueline/proprietary/lib64/libcdsprpc_system.so:system/lib64/libcdsprpc_system.so:qcom \
     vendor/qcom/blueline/proprietary/lib64/libDiagService.so:system/lib64/libDiagService.so:qcom \
+    vendor/qcom/blueline/proprietary/lib64/libdiag_system.so:system/lib64/libdiag_system.so:qcom \
+    vendor/qcom/blueline/proprietary/lib64/libGPQTEEC_system.so:system/lib64/libGPQTEEC_system.so:qcom \
+    vendor/qcom/blueline/proprietary/lib64/libGPTEE_system.so:system/lib64/libGPTEE_system.so:qcom \
     vendor/qcom/blueline/proprietary/lib64/libimscamera_jni.so:system/lib64/libimscamera_jni.so:qcom \
     vendor/qcom/blueline/proprietary/lib64/libimsmedia_jni.so:system/lib64/libimsmedia_jni.so:qcom \
     vendor/qcom/blueline/proprietary/lib64/lib-imsvideocodec.so:system/lib64/lib-imsvideocodec.so:qcom \
     vendor/qcom/blueline/proprietary/lib64/lib-imsvtextutils.so:system/lib64/lib-imsvtextutils.so:qcom \
     vendor/qcom/blueline/proprietary/lib64/lib-imsvt.so:system/lib64/lib-imsvt.so:qcom \
     vendor/qcom/blueline/proprietary/lib64/lib-imsvtutils.so:system/lib64/lib-imsvtutils.so:qcom \
+    vendor/qcom/blueline/proprietary/lib64/libiperf.so:system/lib64/libiperf.so:qcom \
     vendor/qcom/blueline/proprietary/lib64/liblistenjni.so:system/lib64/liblistenjni.so:qcom \
     vendor/qcom/blueline/proprietary/lib64/liblistensoundmodel2.so:system/lib64/liblistensoundmodel2.so:qcom \
+    vendor/qcom/blueline/proprietary/lib64/libmdsprpc_system.so:system/lib64/libmdsprpc_system.so:qcom \
+    vendor/qcom/blueline/proprietary/lib64/libminui.so:system/lib64/libminui.so:qcom \
+    vendor/qcom/blueline/proprietary/lib64/libQTEEConnector_system.so:system/lib64/libQTEEConnector_system.so:qcom \
     vendor/qcom/blueline/proprietary/lib64/librcc.so:system/lib64/librcc.so:qcom \
     vendor/qcom/blueline/proprietary/lib64/libsdm-disp-apis.so:system/lib64/libsdm-disp-apis.so:qcom \
+    vendor/qcom/blueline/proprietary/lib64/libsdsprpc_system.so:system/lib64/libsdsprpc_system.so:qcom \
     vendor/qcom/blueline/proprietary/lib64/libsecureuisvc_jni.so:system/lib64/libsecureuisvc_jni.so:qcom \
+    vendor/qcom/blueline/proprietary/lib64/libsecureui_svcsock_system.so:system/lib64/libsecureui_svcsock_system.so:qcom \
     vendor/qcom/blueline/proprietary/lib64/libsensorslog.so:system/lib64/libsensorslog.so:qcom \
     vendor/qcom/blueline/proprietary/lib64/libsns_low_lat_stream_stub.so:system/lib64/libsns_low_lat_stream_stub.so:qcom \
+    vendor/qcom/blueline/proprietary/libadsprpc_system.so:system/lib/libadsprpc_system.so:qcom \
+    vendor/qcom/blueline/proprietary/libcdsprpc_system.so:system/lib/libcdsprpc_system.so:qcom \
+    vendor/qcom/blueline/proprietary/libdiag_system.so:system/lib/libdiag_system.so:qcom \
+    vendor/qcom/blueline/proprietary/libGPQTEEC_system.so:system/lib/libGPQTEEC_system.so:qcom \
+    vendor/qcom/blueline/proprietary/libGPTEE_system.so:system/lib/libGPTEE_system.so:qcom \
     vendor/qcom/blueline/proprietary/libimscamera_jni.so:system/lib/libimscamera_jni.so:qcom \
     vendor/qcom/blueline/proprietary/libimsmedia_jni.so:system/lib/libimsmedia_jni.so:qcom \
     vendor/qcom/blueline/proprietary/lib-imsvideocodec.so:system/lib/lib-imsvideocodec.so:qcom \
     vendor/qcom/blueline/proprietary/lib-imsvtextutils.so:system/lib/lib-imsvtextutils.so:qcom \
     vendor/qcom/blueline/proprietary/lib-imsvt.so:system/lib/lib-imsvt.so:qcom \
     vendor/qcom/blueline/proprietary/lib-imsvtutils.so:system/lib/lib-imsvtutils.so:qcom \
+    vendor/qcom/blueline/proprietary/libiperf.so:system/lib/libiperf.so:qcom \
     vendor/qcom/blueline/proprietary/liblistenjni.so:system/lib/liblistenjni.so:qcom \
     vendor/qcom/blueline/proprietary/liblistensoundmodel2.so:system/lib/liblistensoundmodel2.so:qcom \
+    vendor/qcom/blueline/proprietary/liblogwrap.so:system/lib/liblogwrap.so:qcom \
+    vendor/qcom/blueline/proprietary/libmdsprpc_system.so:system/lib/libmdsprpc_system.so:qcom \
+    vendor/qcom/blueline/proprietary/libminui.so:system/lib/libminui.so:qcom \
+    vendor/qcom/blueline/proprietary/libprotobuf-cpp-full.so:system/lib/libprotobuf-cpp-full.so:qcom \
     vendor/qcom/blueline/proprietary/libqct_resampler.so:system/lib/libqct_resampler.so:qcom \
+    vendor/qcom/blueline/proprietary/libQTEEConnector_system.so:system/lib/libQTEEConnector_system.so:qcom \
     vendor/qcom/blueline/proprietary/librcc.so:system/lib/librcc.so:qcom \
     vendor/qcom/blueline/proprietary/libsdm-disp-apis.so:system/lib/libsdm-disp-apis.so:qcom \
+    vendor/qcom/blueline/proprietary/libsdsprpc_system.so:system/lib/libsdsprpc_system.so:qcom \
     vendor/qcom/blueline/proprietary/libsecureuisvc_jni.so:system/lib/libsecureuisvc_jni.so:qcom \
+    vendor/qcom/blueline/proprietary/libsecureui_svcsock_system.so:system/lib/libsecureui_svcsock_system.so:qcom \
     vendor/qcom/blueline/proprietary/libsensorslog.so:system/lib/libsensorslog.so:qcom \
-    vendor/qcom/blueline/proprietary/libsns_low_lat_stream_stub.so:system/lib/libsns_low_lat_stream_stub.so:qcom \
     vendor/qcom/blueline/proprietary/libsns_low_lat_stream_skel.so:system/lib/rfsa/adsp/libsns_low_lat_stream_skel.so:qcom \
+    vendor/qcom/blueline/proprietary/libsns_low_lat_stream_stub.so:system/lib/libsns_low_lat_stream_stub.so:qcom \
+    vendor/qcom/blueline/proprietary/lpa.xml:system/etc/permissions/lpa.xml:qcom \
+    vendor/qcom/blueline/proprietary/LteDirectDiscoveryLibrary.jar:system/framework/LteDirectDiscoveryLibrary.jar:qcom \
+    vendor/qcom/blueline/proprietary/LteDirectDiscovery.xml:system/etc/permissions/LteDirectDiscovery.xml:qcom \
+    vendor/qcom/blueline/proprietary/music_detector.descriptor:system/etc/firmware/music_detector.descriptor:qcom \
+    vendor/qcom/blueline/proprietary/music_detector.sound_model:system/etc/firmware/music_detector.sound_model:qcom \
+    vendor/qcom/blueline/proprietary/qcrilhook.jar:system/framework/qcrilhook.jar:qcom \
+    vendor/qcom/blueline/proprietary/qcrilhook.xml:system/etc/permissions/qcrilhook.xml:qcom \
+    vendor/qcom/blueline/proprietary/QtiTelephonyServicelibrary.jar:system/framework/QtiTelephonyServicelibrary.jar:qcom \
+    vendor/qcom/blueline/proprietary/radioconfiginterfacelibrary.jar:system/framework/radioconfiginterfacelibrary.jar:qcom \
+    vendor/qcom/blueline/proprietary/radioconfiginterface.xml:system/etc/permissions/radioconfiginterface.xml:qcom \
+    vendor/qcom/blueline/proprietary/radioconfiglibrary.jar:system/framework/radioconfiglibrary.jar:qcom \
+    vendor/qcom/blueline/proprietary/radioconfig.xml:system/etc/permissions/radioconfig.xml:qcom \
+    vendor/qcom/blueline/proprietary/RemoteSimlock.xml:system/etc/permissions/RemoteSimlock.xml:qcom \
+    vendor/qcom/blueline/proprietary/telephonyservice.xml:system/etc/permissions/telephonyservice.xml:qcom \
+    vendor/qcom/blueline/proprietary/uimlpalibrary.jar:system/framework/uimlpalibrary.jar:qcom \
+    vendor/qcom/blueline/proprietary/uimremoteclientlibrary.jar:system/framework/uimremoteclientlibrary.jar:qcom \
+    vendor/qcom/blueline/proprietary/uimremoteclient.xml:system/etc/permissions/uimremoteclient.xml:qcom \
+    vendor/qcom/blueline/proprietary/uimremoteserverlibrary.jar:system/framework/uimremoteserverlibrary.jar:qcom \
+    vendor/qcom/blueline/proprietary/uimremoteserver.xml:system/etc/permissions/uimremoteserver.xml:qcom \
+    vendor/qcom/blueline/proprietary/uimremotesimlocklibrary.jar:system/framework/uimremotesimlocklibrary.jar:qcom \
+    vendor/qcom/blueline/proprietary/UimService.xml:system/etc/permissions/UimService.xml:qcom \
+    vendor/qcom/blueline/proprietary/vendor.qti.hardware.alarm-V1.0-java.jar:system/framework/vendor.qti.hardware.alarm-V1.0-java.jar:qcom \
+    vendor/qcom/blueline/proprietary/vendor.qti.hardware.data.latency-V1.0-java.jar:system/framework/vendor.qti.hardware.data.latency-V1.0-java.jar:qcom \
+    vendor/qcom/blueline/proprietary/vendor.qti.hardware.soter-V1.0-java.jar:system/framework/vendor.qti.hardware.soter-V1.0-java.jar:qcom \
+
diff --git a/thermal-engine-blueline-vr-evt.conf b/thermal-engine-blueline-vr-evt.conf
index 501917e..2248c81 100644
--- a/thermal-engine-blueline-vr-evt.conf
+++ b/thermal-engine-blueline-vr-evt.conf
@@ -5,4 +5,4 @@
 thresholds 52000 60000
 thresholds_clr 48000 59000
 actions			cpu0+cpu4+gpu			shutdown
-action_info		979200+1056000+342000000	1
\ No newline at end of file
+action_info		825600+902400+257000000	1
\ No newline at end of file
diff --git a/thermal-engine-blueline-vr-prod.conf b/thermal-engine-blueline-vr-prod.conf
index 7104d23..5798cf2 100644
--- a/thermal-engine-blueline-vr-prod.conf
+++ b/thermal-engine-blueline-vr-prod.conf
@@ -5,4 +5,4 @@
 thresholds		49000				55000
 thresholds_clr		45000				54000
 actions			cpu0+cpu4+gpu			shutdown
-action_info		979200+1056000+342000000	1
+action_info		825600+902400+257000000	1
diff --git a/thermal-engine-crosshatch-vr-evt.conf b/thermal-engine-crosshatch-vr-evt.conf
index 501917e..2248c81 100644
--- a/thermal-engine-crosshatch-vr-evt.conf
+++ b/thermal-engine-crosshatch-vr-evt.conf
@@ -5,4 +5,4 @@
 thresholds 52000 60000
 thresholds_clr 48000 59000
 actions			cpu0+cpu4+gpu			shutdown
-action_info		979200+1056000+342000000	1
\ No newline at end of file
+action_info		825600+902400+257000000	1
\ No newline at end of file
diff --git a/thermal-engine-crosshatch-vr-prod.conf b/thermal-engine-crosshatch-vr-prod.conf
index 7104d23..5798cf2 100644
--- a/thermal-engine-crosshatch-vr-prod.conf
+++ b/thermal-engine-crosshatch-vr-prod.conf
@@ -5,4 +5,4 @@
 thresholds		49000				55000
 thresholds_clr		45000				54000
 actions			cpu0+cpu4+gpu			shutdown
-action_info		979200+1056000+342000000	1
+action_info		825600+902400+257000000	1