Migrate IUsbGadget implementation to AIDL am: d6d0b7d2ca am: a912032b9d

Original change: https://android-review.googlesource.com/c/device/google/gs101/+/2361897

Change-Id: I49efae705114ff4145a8b3ab0c930c4fbc40e52f
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/BoardConfig-common.mk b/BoardConfig-common.mk
index bcfd7bb..fa3d102 100644
--- a/BoardConfig-common.mk
+++ b/BoardConfig-common.mk
@@ -51,11 +51,7 @@
 
 TARGET_NO_BOOTLOADER := true
 TARGET_NO_RADIOIMAGE := true
-ifneq (,$(filter userdebug eng,$(TARGET_BUILD_VARIANT)))
 BOARD_PREBUILT_BOOTIMAGE := $(wildcard $(TARGET_KERNEL_DIR)/boot.img)
-else
-BOARD_PREBUILT_BOOTIMAGE := $(wildcard $(TARGET_KERNEL_DIR)/boot-user.img)
-endif
 ifneq (,$(BOARD_PREBUILT_BOOTIMAGE))
 TARGET_NO_KERNEL := true
 else
@@ -168,6 +164,8 @@
 BOARD_USE_ENC_SW_CSC := true
 BOARD_SUPPORT_MFC_ENC_RGB := true
 BOARD_USE_BLOB_ALLOCATOR := false
+BOARD_SUPPORT_MFC_ENC_BT2020 := true
+
 ########################
 
 BOARD_SUPER_PARTITION_SIZE := 8531214336
@@ -351,11 +349,20 @@
 
 BOARD_VENDOR_KERNEL_MODULES_BLOCKLIST_FILE := $(KERNEL_MODULE_DIR)/vendor_dlkm.modules.blocklist
 
-BOARD_VENDOR_RAMDISK_KERNEL_MODULES_LOAD := $(strip $(shell cat $(KERNEL_MODULE_DIR)/vendor_boot.modules.load))
-ifndef BOARD_VENDOR_RAMDISK_KERNEL_MODULES_LOAD
+# Prebuilt kernel modules that are *not* listed in vendor_boot.modules.load
+BOARD_PREBUILT_VENDOR_RAMDISK_KERNEL_MODULES = fips140/fips140.ko
+BOARD_VENDOR_RAMDISK_KERNEL_MODULES_LOAD_EXTRA = $(foreach k,$(BOARD_PREBUILT_VENDOR_RAMDISK_KERNEL_MODULES),$(if $(wildcard $(KERNEL_MODULE_DIR)/$(k)), $(k)))
+KERNEL_MODULES += $(addprefix $(KERNEL_MODULE_DIR)/, $(BOARD_VENDOR_RAMDISK_KERNEL_MODULES_LOAD_EXTRA))
+
+# Kernel modules that are listed in vendor_boot.modules.load
+BOARD_VENDOR_RAMDISK_KERNEL_MODULES_LOAD_FILE := $(strip $(shell cat $(KERNEL_MODULE_DIR)/vendor_boot.modules.load))
+ifndef BOARD_VENDOR_RAMDISK_KERNEL_MODULES_LOAD_FILE
 $(error vendor_boot.modules.load not found or empty)
 endif
-BOARD_VENDOR_RAMDISK_KERNEL_MODULES := $(addprefix $(KERNEL_MODULE_DIR)/, $(notdir $(BOARD_VENDOR_RAMDISK_KERNEL_MODULES_LOAD)))
+BOARD_VENDOR_RAMDISK_KERNEL_MODULES_LOAD := $(BOARD_VENDOR_RAMDISK_KERNEL_MODULES_LOAD_EXTRA)
+BOARD_VENDOR_RAMDISK_KERNEL_MODULES_LOAD += $(BOARD_VENDOR_RAMDISK_KERNEL_MODULES_LOAD_FILE)
+BOARD_VENDOR_RAMDISK_KERNEL_MODULES := $(addprefix $(KERNEL_MODULE_DIR)/, $(BOARD_VENDOR_RAMDISK_KERNEL_MODULES_LOAD_EXTRA))
+BOARD_VENDOR_RAMDISK_KERNEL_MODULES += $(addprefix $(KERNEL_MODULE_DIR)/, $(notdir $(BOARD_VENDOR_RAMDISK_KERNEL_MODULES_LOAD_FILE)))
 
 BOARD_VENDOR_KERNEL_MODULES_LOAD := $(strip $(shell cat $(KERNEL_MODULE_DIR)/vendor_dlkm.modules.load))
 ifndef BOARD_VENDOR_KERNEL_MODULES_LOAD
diff --git a/conf/init.gs101.rc b/conf/init.gs101.rc
index 7b3bc8b..f83d49e 100644
--- a/conf/init.gs101.rc
+++ b/conf/init.gs101.rc
@@ -10,6 +10,9 @@
     # CPU0 cannot be offline
     chmod 0444 /sys/devices/system/cpu/cpu0/online
 
+    # Set teo as cpu idle governor
+    write /sys/devices/system/cpu/cpuidle/current_governor teo
+
     # Boot time fs tuning
     write /sys/block/sda/queue/iostats 0
     write /sys/block/sda/queue/scheduler bfq
@@ -223,6 +226,7 @@
     chown system system /dev/logbuffer_wireless
     chown system system /dev/logbuffer_pca9468
     chown system system /dev/logbuffer_cpm
+    chown system system /dev/logbuffer_bd
 
     # Dump maxfg
     chown system system /sys/class/power_supply/maxfg/m5_model_state
@@ -306,9 +310,7 @@
     chown system system /sys/devices/platform/google,cpm/dc_ctl
     # Important to include dd_state as it's used in battery defender in charger mode
     chown system system /sys/devices/platform/google,charger/dd_state
-    # Disable dock-defend by default
     chown system system /sys/devices/platform/google,charger/dd_settings
-    write /sys/devices/platform/google,charger/dd_settings -1
 
     # Power Stats HAL
     chown system system /dev/bbd_pwrstat
@@ -411,6 +413,7 @@
 
 # Permissions Camera
     mkdir /data/vendor/camera 0770 system camera
+    mkdir /data/vendor/camera/catpipe 0770 system camera
     chmod 0755 /sys/kernel/debug/tracing
     restorecon /sys/kernel/debug/tracing/trace_marker
 
@@ -746,7 +749,6 @@
     setprop vendor.powerhal.init 1
 
     # Setup final cpu.uclamp
-    write /proc/vendor_sched/uclamp_threshold 8
     write /proc/vendor_sched/ta_uclamp_min 1
     write /proc/vendor_sched/fg_uclamp_min 0
     write /proc/vendor_sched/sys_prefer_idle 0
diff --git a/default-permissions.xml b/default-permissions.xml
index d65d7aa..425b93f 100644
--- a/default-permissions.xml
+++ b/default-permissions.xml
@@ -162,5 +162,9 @@
         <!-- Notifications -->
         <permission name="android.permission.POST_NOTIFICATIONS" fixed="false"/>
     </exception>
+    <exception
+        package="com.google.android.euicc">
+        <!-- Notifications -->
+        <permission name="android.permission.POST_NOTIFICATIONS" fixed="false"/>
+    </exception>
 </exceptions>
-
diff --git a/device-common.mk b/device-common.mk
index cc37346..d952298 100644
--- a/device-common.mk
+++ b/device-common.mk
@@ -47,3 +47,7 @@
 
 # ZramWriteback
 -include hardware/google/pixel/mm/device_gki.mk
+
+# Set thermal warm reset
+PRODUCT_PRODUCT_PROPERTIES += \
+    ro.thermal_warmreset = true
diff --git a/device.mk b/device.mk
index 9c32677..6dd8634 100644
--- a/device.mk
+++ b/device.mk
@@ -214,7 +214,7 @@
 
 PRODUCT_COPY_FILES += \
 	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.vulkan.version-1_1.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.vulkan.version.xml \
+	frameworks/native/data/etc/android.hardware.vulkan.version-1_3.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.vulkan.version.xml \
 	frameworks/native/data/etc/android.hardware.vulkan.level-1.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.vulkan.level.xml \
 	frameworks/native/data/etc/android.hardware.vulkan.compute-0.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.hardware.vulkan.compute.xml \
 	frameworks/native/data/etc/android.software.vulkan.deqp.level-2022-03-01.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/android.software.vulkan.deqp.level.xml \
@@ -645,6 +645,7 @@
 	debug.hwc.winupdate=1
 
 # hw composer HAL
+$(call soong_config_set,google_displaycolor,displaycolor_platform,gs101)
 PRODUCT_PACKAGES += \
 	libdisplaycolor \
 	hwcomposer.$(TARGET_BOARD_PLATFORM)
@@ -739,10 +740,6 @@
 
 $(call soong_config_set,bigo,soc,gs101)
 
-# MFC firmware
-PRODUCT_COPY_FILES += \
-	device/google/gs101/firmware/mfc/mfc_fw.bin:$(TARGET_COPY_OUT_VENDOR)/firmware/mfc_fw.bin
-
 # 1. Codec 2.0
 # exynos service
 PRODUCT_SOONG_NAMESPACES += vendor/samsung_slsi/codec2
@@ -1008,7 +1005,7 @@
 	android.hardware.audio.effect@7.0-impl \
 	android.hardware.bluetooth.audio-impl \
 	android.hardware.soundtrigger@2.3-impl \
-	vendor.google.whitechapel.audio.audioext@3.0-impl
+	vendor.google.whitechapel.audio.audioext@4.0-impl
 
 #Audio HAL libraries
 PRODUCT_PACKAGES += \
diff --git a/device_framework_matrix_product.xml b/device_framework_matrix_product.xml
index a9f026e..d938aec 100644
--- a/device_framework_matrix_product.xml
+++ b/device_framework_matrix_product.xml
@@ -74,7 +74,7 @@
     </hal>
     <hal format="aidl" optional="true">
       <name>com.google.hardware.pixel.display</name>
-        <version>6</version>
+        <version>7</version>
         <interface>
             <name>IDisplay</name>
             <instance>default</instance>
@@ -154,7 +154,7 @@
     </hal>
     <hal format="hidl">
        <name>vendor.google.whitechapel.audio.audioext</name>
-       <version>3.0</version>
+       <version>4.0</version>
        <interface>
            <name>IAudioExt</name>
            <instance>default</instance>
diff --git a/dumpstate/DumpstateDevice.cpp b/dumpstate/DumpstateDevice.cpp
index cbe997e..f391032 100644
--- a/dumpstate/DumpstateDevice.cpp
+++ b/dumpstate/DumpstateDevice.cpp
@@ -33,6 +33,7 @@
 
 #define MODEM_LOG_DIRECTORY "/data/vendor/radio/logs/always-on"
 #define MODEM_EXTENDED_LOG_DIRECTORY "/data/vendor/radio/extended_logs"
+#define MODEM_LOG_HISTORY_DIRECTORY "/data/vendor/radio/logs/history"
 #define RIL_LOG_DIRECTORY "/data/vendor/radio"
 #define RIL_LOG_DIRECTORY_PROPERTY "persist.vendor.ril.log.base_dir"
 #define RIL_LOG_NUMBER_PROPERTY "persist.vendor.ril.log.num_file"
@@ -252,7 +253,6 @@
 DumpstateDevice::DumpstateDevice()
   : mTextSections{
         { "pre-touch", [this](int fd) { dumpPreTouchSection(fd); } },
-        { "wlan", [this](int fd) { dumpWlanSection(fd); } },
         { "soc", [this](int fd) { dumpSocSection(fd); } },
         { "storage", [this](int fd) { dumpStorageSection(fd); } },
         { "memory", [this](int fd) { dumpMemorySection(fd); } },
@@ -270,6 +270,7 @@
         { "camera", [this](int fd) { dumpCameraSection(fd); } },
         { "trusty", [this](int fd) { dumpTrustySection(fd); } },
         { "modem", [this](int fd) { dumpModemSection(fd); } },
+        { "perf-metrics", [this](int fd) { dumpPerfMetricsSection(fd); } },
     } {
 }
 
@@ -304,12 +305,6 @@
                                    "not avalable from the command line.\n", fd);
 }
 
-// Dump items related to wlan
-void DumpstateDevice::dumpWlanSection(int fd) {
-    RunCommandToFd(fd, "WLAN Debug Dump", {"/vendor/bin/sh", "-c",
-                   "cat /sys/wifi/dump_start"});
-}
-
 // Dump items related to power and battery
 void DumpstateDevice::dumpPowerSection(int fd) {
     struct stat buffer;
@@ -386,6 +381,7 @@
     DumpFileToFd(fd, "TTF stats", "/sys/class/power_supply/battery/ttf_stats");
     DumpFileToFd(fd, "maxq", "/dev/logbuffer_maxq");
     DumpFileToFd(fd, "aacr_state", "/sys/class/power_supply/battery/aacr_state");
+    DumpFileToFd(fd, "TEMP/DOCK-DEFEND", "/dev/logbuffer_bd");
 
     RunCommandToFd(fd, "TRICKLE-DEFEND Config", {"/vendor/bin/sh", "-c",
                         " cd /sys/devices/platform/google,battery/power_supply/battery/;"
@@ -525,6 +521,7 @@
     DumpFileToFd(fd, "TMU_TOP fall thresholds:", "/sys/module/gs101_thermal/parameters/tmu_top_reg_dump_fall_thres");
     DumpFileToFd(fd, "TMU_SUB rise thresholds:", "/sys/module/gs101_thermal/parameters/tmu_sub_reg_dump_rise_thres");
     DumpFileToFd(fd, "TMU_SUB fall thresholds:", "/sys/module/gs101_thermal/parameters/tmu_sub_reg_dump_fall_thres");
+    DumpFileToFd(fd, "Temperature Residency Metrics:", "/sys/kernel/metrics/temp_residency/temp_residency_all/stats");
 }
 
 // Dump items related to touch
@@ -1088,6 +1085,7 @@
 static void *dumpModemThread(void *data) {
     std::string modemLogDir = MODEM_LOG_DIRECTORY;
     std::string extendedLogDir = MODEM_EXTENDED_LOG_DIRECTORY;
+    std::string modemLogHistoryDir = MODEM_LOG_HISTORY_DIRECTORY;
     std::string tcpdumpLogDir = TCPDUMP_LOG_DIRECTORY;
     static const std::string sectionName = "modem";
 
@@ -1150,6 +1148,7 @@
         }
 
         dumpLogs(STDOUT_FILENO, extendedLogDir, modemLogAllDir, 50, EXTENDED_LOG_PREFIX);
+        dumpLogs(STDOUT_FILENO, modemLogHistoryDir, modemLogAllDir, 2, "Logging");
         dumpRilLogs(STDOUT_FILENO, modemLogAllDir);
         dumpNetmgrLogs(modemLogAllDir);
         dumpModemEFS(modemLogAllDir);
@@ -1194,6 +1193,11 @@
     return NULL;
 }
 
+void DumpstateDevice::dumpPerfMetricsSection(int fd) {
+    DumpFileToFd(fd, "Long running IRQ metrics", "/sys/kernel/metrics/irq/long_irq_metrics");
+    DumpFileToFd(fd, "Resume latency metrics", "/sys/kernel/metrics/resume_latency/resume_latency_metrics");
+}
+
 // Methods from ::android::hardware::dumpstate::V1_0::IDumpstateDevice follow.
 Return<void> DumpstateDevice::dumpstateBoard(const hidl_handle &handle) {
 // Ignore return value, just return an empty status.
diff --git a/dumpstate/DumpstateDevice.h b/dumpstate/DumpstateDevice.h
index 5cc3249..f42ec19 100644
--- a/dumpstate/DumpstateDevice.h
+++ b/dumpstate/DumpstateDevice.h
@@ -61,7 +61,6 @@
 
     // Text sections that can be dumped individually on the command line in
     // addition to being included in full dumps
-    void dumpWlanSection(int fd);
     void dumpPowerSection(int fd);
     void dumpThermalSection(int fd);
     void dumpPreTouchSection(int fd);
@@ -80,6 +79,7 @@
     void dumpCameraSection(int fd);
     void dumpTrustySection(int fd);
     void dumpModemSection(int fd);
+    void dumpPerfMetricsSection(int fd);
 };
 
 }  // namespace implementation
diff --git a/firmware/mfc/mfc_fw.bin b/firmware/mfc/mfc_fw.bin
deleted file mode 100644
index 4a5c070..0000000
--- a/firmware/mfc/mfc_fw.bin
+++ /dev/null
Binary files differ
diff --git a/firmware/mfc/signed/mfc_fw.bin b/firmware/mfc/signed/mfc_fw.bin
deleted file mode 100644
index 6f60c16..0000000
--- a/firmware/mfc/signed/mfc_fw.bin
+++ /dev/null
Binary files differ
diff --git a/gnss/47765/bin/android.hardware.gnss@2.1-impl-google.so b/gnss/47765/bin/android.hardware.gnss@2.1-impl-google.so
index 729c29e..e63acda 100755
--- a/gnss/47765/bin/android.hardware.gnss@2.1-impl-google.so
+++ b/gnss/47765/bin/android.hardware.gnss@2.1-impl-google.so
Binary files differ
diff --git a/gnss/47765/bin/android.hardware.gnss@2.1-service-brcm b/gnss/47765/bin/android.hardware.gnss@2.1-service-brcm
index 57c040b..1ae69f1 100755
--- a/gnss/47765/bin/android.hardware.gnss@2.1-service-brcm
+++ b/gnss/47765/bin/android.hardware.gnss@2.1-service-brcm
Binary files differ
diff --git a/gnss/47765/bin/flp.default.so b/gnss/47765/bin/flp.default.so
index 5580503..728b67c 100755
--- a/gnss/47765/bin/flp.default.so
+++ b/gnss/47765/bin/flp.default.so
Binary files differ
diff --git a/gnss/47765/bin/gps.default.so b/gnss/47765/bin/gps.default.so
index 37d378f..061ad5c 100755
--- a/gnss/47765/bin/gps.default.so
+++ b/gnss/47765/bin/gps.default.so
Binary files differ
diff --git a/gnss/47765/bin/gpsd b/gnss/47765/bin/gpsd
index ca2001c..73a0c5e 100755
--- a/gnss/47765/bin/gpsd
+++ b/gnss/47765/bin/gpsd
Binary files differ
diff --git a/gnss/47765/bin/lhd b/gnss/47765/bin/lhd
index b1789ec..ed83fc7 100755
--- a/gnss/47765/bin/lhd
+++ b/gnss/47765/bin/lhd
Binary files differ
diff --git a/gnss/47765/bin/scd b/gnss/47765/bin/scd
index 22d5791..f64cc25 100755
--- a/gnss/47765/bin/scd
+++ b/gnss/47765/bin/scd
Binary files differ
diff --git a/gnss/47765/config/gps.xml b/gnss/47765/config/gps.xml
index 40dcd36..8b531e0 100644
--- a/gnss/47765/config/gps.xml
+++ b/gnss/47765/config/gps.xml
@@ -35,6 +35,7 @@
        SuplVersion="2"
        SuplMinorVersion="0"
        SuplOtdoaCapable="true"
+       SuplOtdoaCapable2="true"
        SuplGlonassCapable = "true"
        SuplGalileoCapable = "true"
        SuplBdsCapable = "true"
diff --git a/gnss/47765/config/gps.xml.oriole b/gnss/47765/config/gps.xml.oriole
index 2e59b78..d2550af 100644
--- a/gnss/47765/config/gps.xml.oriole
+++ b/gnss/47765/config/gps.xml.oriole
@@ -35,6 +35,7 @@
        SuplVersion="2"
        SuplMinorVersion="0"
        SuplOtdoaCapable="true"
+       SuplOtdoaCapable2="true"
        SuplGlonassCapable = "true"
        SuplGalileoCapable = "true"
        SuplBdsCapable = "true"
diff --git a/gnss/47765/config/gps.xml.raven b/gnss/47765/config/gps.xml.raven
index c4a25b4..1b748e2 100644
--- a/gnss/47765/config/gps.xml.raven
+++ b/gnss/47765/config/gps.xml.raven
@@ -35,6 +35,7 @@
        SuplVersion="2"
        SuplMinorVersion="0"
        SuplOtdoaCapable="true"
+       SuplOtdoaCapable2="true"
        SuplGlonassCapable = "true"
        SuplGalileoCapable = "true"
        SuplBdsCapable = "true"
diff --git a/gnss/47765/config/gps_user.xml b/gnss/47765/config/gps_user.xml
index 16c1230..f125fe0 100644
--- a/gnss/47765/config/gps_user.xml
+++ b/gnss/47765/config/gps_user.xml
@@ -34,6 +34,7 @@
        SuplVersion="2"
        SuplMinorVersion="0"
        SuplOtdoaCapable="true"
+       SuplOtdoaCapable2="true"
        SuplGlonassCapable = "true"
        SuplGalileoCapable = "true"
        SuplBdsCapable = "true"
diff --git a/gnss/47765/config/gps_user.xml.oriole b/gnss/47765/config/gps_user.xml.oriole
index 47ba3d1..0f8ff32 100644
--- a/gnss/47765/config/gps_user.xml.oriole
+++ b/gnss/47765/config/gps_user.xml.oriole
@@ -34,6 +34,7 @@
        SuplVersion="2"
        SuplMinorVersion="0"
        SuplOtdoaCapable="true"
+       SuplOtdoaCapable2="true"
        SuplGlonassCapable = "true"
        SuplGalileoCapable = "true"
        SuplBdsCapable = "true"
diff --git a/gnss/47765/config/gps_user.xml.raven b/gnss/47765/config/gps_user.xml.raven
index 3a0cb55..664aa94 100644
--- a/gnss/47765/config/gps_user.xml.raven
+++ b/gnss/47765/config/gps_user.xml.raven
@@ -34,6 +34,7 @@
        SuplVersion="2"
        SuplMinorVersion="0"
        SuplOtdoaCapable="true"
+       SuplOtdoaCapable2="true"
        SuplGlonassCapable = "true"
        SuplGalileoCapable = "true"
        SuplBdsCapable = "true"
diff --git a/gnss/47765/firmware/SensorHub.patch b/gnss/47765/firmware/SensorHub.patch
index 9d7016b..cee5c46 100644
--- a/gnss/47765/firmware/SensorHub.patch
+++ b/gnss/47765/firmware/SensorHub.patch
@@ -1,9 +1,9 @@
 <FormatVersion=0x00010003>
 
-<Crc=94>
+<Crc=122>
 <BlobLength=161839>
 <AsicVersion=0x004776A0>
-<ChangeList=547844>
+<ChangeList=557990>
 <PatchLevel=0>
 <PostPatchLevel=1>
 <CustomerVersion=None>
@@ -79,7 +79,7 @@
 009102A101F438F703B000BD4170700080BD8900708989
 00805D8A006905800025643A2564095374617274206368
 70704170705461736B0A00000000633A5C77735C626F64
-5F3437373631313336315F3534373834345C637573746F
+5F3437373631323239305F3535373939305C637573746F
 6D6572735C676F6F676C655C503231466C61677461696C
 6D63755C64656C69766572795C53656E736F724875625F
 5032315C7372635C6875625F636F6E74726F6C6C65722E
@@ -390,7 +390,7 @@
 F22046FEF700FF07E002464FF4D1630FF2F4518F2011F4
 5FF2FEF769FC04F5A6620A23C2E9000105F0F00006F00F
 0101433A462046BDE8F041FFF7BDBB0000633A5C77735C
-626F645F3437373631313336315F3534373834345C6375
+626F645F3437373631323239305F3535373939305C6375
 73746F6D6572735C676F6F676C655C503231466C616774
 61696C6D63755C64656C69766572795C53656E736F7248
 75625F5032315C7372635C636870705C7472616E73706F
@@ -526,7 +526,7 @@
 25210378204626F4F1F510B010BD000025643A25640948
 232568687520756E6B6E6F776E20726571756573742E20
 636D643D2523782C2049443D256868750A00633A5C7773
-5C626F645F3437373631313336315F3534373834345C63
+5C626F645F3437373631323239305F3535373939305C63
 7573746F6D6572735C676F6F676C655C503231466C6167
 7461696C6D63755C64656C69766572795C53656E736F72
 4875625F5032315C7372F19403502E8000635C63687070
@@ -585,7 +585,7 @@
 D803B000BDF07E8A000C53890028878A00113280009D32
 800025643A256409434850502042617564726174652069
 732073657420746F20256C640A0A00633A5C77735C626F
-645F3437373631313336315F3534373834345C63757374
+645F3437373631323239305F3535373939305C63757374
 6F6D6572735C676F6F676C655C503231466C6167746169
 6C6D63755C64656C69766572795C53656E736F72487562
 5F5032315C7372635C73656E736F725F6875622E630000
@@ -679,13 +679,13 @@
 B5C90382B0A0F5A86419D500F65C552846FDF7F6DD0600
 12D00020009069462846FDF712DE761E012804DB024600
 992046FEF79EF82846FDF76FDD002EECD173BD70470000
-633A5C77735C626F645F3437373631313336315F353437
-3834345C637573746F6D6572735C676F6F676C655C5032
+633A5C77735C626F645F3437373631323239305F353537
+3939305C637573746F6D6572735C676F6F676C655C5032
 31466C61677461696C6D63755C64656C69766572795C53
 656E736F724875625F5032315C7372635C636870705C69
 6E636C7564655C636870702F7472616E73706F72742E68
-00633A5C77735C626F645F3437373631313336315F3534
-373834345C637573746F6D6572735C676F6F676C655C50
+00633A5C77735C626F645F3437373631323239305F3535
+373939305C637573746F6D6572735C676F6F676C655C50
 3231466C61677461696C6D63755C64656C69766572795C
 53656E736F724875625F5032315C7372635C636870705C
 706C6174666F726D5C62636D5C42434D343737785C6C69
@@ -695,8 +695,8 @@
 138EA4B29C42EBD2D26A04EB440302EBC306327C012AF1
 D1D6E90223D0E918679F42E7D8E8D39642E4D2E5E7D0E9
 1823CDE900230FF27C010FF2100240F21E238F200FF4B1
-F403B0F0BD0000633A5C77735C626F645F343737363131
-3336315F3534373834345C637573746F6D6572735C676F
+F403B0F0BD0000633A5C77735C626F645F343737363132
+3239305F3535373939305C637573746F6D6572735C676F
 6F676C655C503231466C61677461696C6D63755C64656C
 69766572795C53656E736F724875625F5032315C737263
 5C636870705C636C69656E74732E630000000025643A25
@@ -706,7 +706,7 @@
 21FEF75DF80AE03246294625F420F40120787032462068
 3946FEF718F8012003B0F0BD25643A2564094F4F4D2061
 742025733A25640A00633A5C77735C626F645F34373736
-31313336315F3534373834345C637573746F6D6572735C
+31323239305F3535373939305C637573746F6D6572735C
 676F6F676C655C503231466C61677461696C6D63755C64
 656C69766572795C53656E736F724875625F5032315C73
 72635C636870705C73657276696365735C6C6F6F706261
@@ -718,8 +718,8 @@
 0122460E2000908F200FF2B0010FF4C3F32868314604B0
 BDE870400E22FDF78CBF10B58B880124012B02D1FFF7BE
 FF00E00024204610BD25643A2564094F4F4D2061742025
-733A25640A00633A5C77735C626F645F34373736313133
-36315F3534373834345C637573746F6D6572735C676F6F
+733A25640A00633A5C77735C626F645F34373736313232
+39305F3535373939305C637573746F6D6572735C676F6F
 676C655C503231466C61677461696C6D63755C64656C69
 766572795C53656E736F724875625F5032315C7372635C
 636870705C73657276696365735C74696D6573796E632E
@@ -734,7 +734,7 @@
 314603B0BDE8F043FDF7E2BE10B58A880124012A02D1FF
 F7BAFF00E00024204610BD25643A2564094F4F4D206174
 2025733A25640A00633A5C77735C626F645F3437373631
-313336315F3534373834345C637573746F6D6572735C67
+323239305F3535373939305C637573746F6D6572735C67
 6F6F676C655C503231466C61677461696C6D63755C6465
 6C69766572795C53656E736F724875625F5032315C7372
 635C636870705C73657276696365735C646973636F7665
@@ -761,7 +761,7 @@
 05CDE90445AD230FF2AC118F200FF4D8F106B0BDE87083
 70B50446084615461E46FFF7BEFF3246294620680068BD
 E87040FDF797BD00000000633A5C77735C626F645F3437
-373631313336315F3534373834345C637573746F6D6572
+373631323239305F3535373939305C637573746F6D6572
 735C676F6F676C655C503231466C61677461696C6D6375
 5C64656C69766572795C53656E736F724875625F503231
 5C7372635C636870705C73657276696365732E63000000
@@ -788,8 +788,8 @@
 230FF240020FF22C018E2007E001A8009042230FF22C02
 0FF218018F200FF49DF00DF5027D10BC5DF80CFB0FF284
 014160704725643A25640950414C3A2025730A0000633A
-5C77735C626F645F3437373631313336315F3534373834
-345C637573746F6D6572735C676F6F676C655C50323146
+5C77735C626F645F3437373631323239305F3535373939
+305C637573746F6D6572735C676F6F676C655C50323146
 6C61677461696C6D63755C64656C69766572795C53656E
 736F724875625F5032315C7372635C636870705C706C61
 74666F726D5C70616C5F6170692E6300000000000001C9
@@ -848,7 +848,7 @@
 32BD13460A4601460248007810F469B000001453890055
 47800065478000687B890060D09100354780002B488000
 436870704C696E6B5461736B00000000633A5C77735C62
-6F645F3437373631313336315F3534373834345C637573
+6F645F3437373631323239305F3535373939305C637573
 746FF19403D04A80006D6572735C676F6F676C655C5032
 31466C61677461696C6D63755C64656C69766572795C53
 656E736F724875625F5032315C7372635C636870705C70
@@ -914,7 +914,7 @@
 0023002240F293210FF2380001B0BDE83040FBF732BB31
 BD0000D088890025643A256409474E5353207365727669
 636520616C7265616479206F70656E0A00000000633A5C
-77735C626F645F3437373631313336315F353437383434
+77735C626F645F3437373631323239305F353537393930
 5C637573746F6D6572735C676F6F676C655C503231466C
 61677461696C6D63755C64656C69766572795C53656E73
 6F724875625F5032315C7372635C636870705C73657276
@@ -965,7 +965,7 @@
 0023002295210FF23000FBF7EFF836B90023002296210F
 F22000FBF7E7F83620FEF78EF9286030B1811D2046FFF7
 99FF36203060012070BD633A5C77735C626F645F343737
-3631313336315F3534373834345C637573746F6D657273
+3631323239305F3535373939305C637573746F6D657273
 5C676F6F676C655C503231466C61677461696C6D63755C
 64656C69766572795C53656E736F724875625F5032315C
 7372635C636870705C636F6D6D6F6E5C676E73735F63F1
@@ -1020,7 +1020,7 @@
 0025643A2564095B25735D204D6561737572656D656E74
 2064617461206576656E74203A206D6561737572656D65
 6E745F636F756E74203D20282564290A000000633A5C77
-735C626F645F3437373631313336315F3534373834345C
+735C626F645F3437373631323239305F3535373939305C
 637573746F6D6572735C676F6F676C655C503231466C61
 677461696C6D63755C64656C69766572795C53656E736F
 724875625F5032315C7372635C636870705C706C617466
@@ -1229,9 +1229,9 @@
 8891FBF0F111FB00F008E0B08838B1A88070BD00291CBF
 F088002800D0A08070BD0B480170704700000948007870
 4700000848017070470000064800787047000001484161
-70470000787B8900045C080099CB91009ACB91002F2F64
+70470000787B8900A683080099CB91009ACB91002F2F64
 65706F742F636C69656E742F636F72652F72656C2F476F
-6F676C652F5032322F3534353339302F2E2E2E0000007E
+6F676C652F5032322F3535343830332F2E2E2E0000007E
 24247E5056542044756D70203A20474C4C207665722E20
 256C7520666C61677461696C3A25730A000000007E2424
 7E5056542044756D70203A2054203D20256C752C204E54
@@ -2433,54 +2433,54 @@
 D25738CFE77F1CFFB2072F93DB0322314607A022F423F6
 002805D1F01C05F0E2FEDFF8481908607AE707B0BDE8F0
 8F574E3A006946A6F4BFB4000068467AF4CDB500002DE9
-F0430D46C1B00446A868410911F0010114BFDFF814294F
-F0FF32A36893431040184304F59856A060A23609B9E889
-308000F00DFA002800F06F817DF4AEF5DCF4C2F1806818
-B94FF4CF7100F004FA288A40B17DF4A2F5DCF4B6F18168
-288A29F400F504E07DF499F5DCF4ADF18068708000F0ED
-F93188D1F4DAF400F0E8F97188D1F4DDF400F0E3F90268
-217AD2F8942001F001019047207A00F0810081280CBF01
-26002600F0D3F93146D0F4BAF700F0CEF90268A168D2F8
-A020890801F00101904700F0C4F90268A168D2F8A42049
-0801F00101904700F0BAF90268A168D2F8B020490A01F0
-0101904700F0B0F90268A168D2F8AC20C90801F0010190
-4700F0A6F90268A168D2F8B820890A01F00101904700F0
-9CF9A989CFF439F100F097F9A168CA09CB064CBF022300
-23CE034CBF10260026490302F001024CBF202100211A43
-324311430268D2F8F1940350D980009020904700F07EF9
-0268A168D2F8BC20090A01F00101904700F074F9A168DE
-F439F6A068800004D500F06CF90121D4F481F007A826F4
-C8F220680FF62409CBF4A7F5DEF431F606460020002159
-F821201043491C0729F9D3A16810EA010808BF4FF49018
-002759F8270018EA000F51D004F598503946A830A0F404
-F501461BA89FF434F715E08DF8000001A87AF4DEF49DF8
-0000512801DB562807DB684656F471F518B1694607A827
-F424F61BA89FF423F71BA89FF422F760BB1BA89FF420F7
-C1B202A890F422F60246394601A8A6F4CDF30246314668
-469FF4B6F401A876F4B9F402A87AF4B2F4684656F44BF5
-0028CED11BA89FF404F7C1B201A890F406F69FF400F79A
-F47AF3C11D0E2934BF3B300020B8E77F1C072FA5D30026
-03A829F465F2324607A911A826F490F211A91BA829F4B4
-F712E01BA901A829F4B5F73146684626F473F19DF80400
-9DF80010411A03A829F4D1F01BA829F4AEF71BA829F4AD
-F70028E7D0761C072ED7DB00F0C4F807A989F463F300F0
-C5F8D1F4C5F300F0C1F8FBF74FF800F0BDF8D1F49FF3A0
-6880010CD500F0B0F8D5F49CF4064600F0ABF846F00401
-0268D2F888209047A068400004D500F0A6F80121FAF731
-FCA068002804D500F09EF80121FAF72DFCA068010504D5
-DBF4EEF141F288311AE0C10404D5DBF4E7F14FF47A6113
-E0810404D5DBF4E0F140F6B8310CE0410404D5DBF4D9F1
-4FF4FA6105E0000405D5DBF4D2F14FF47A71DBF4EAF700
-F074F850B1A079297B00F0010001F00101884218BF4FF0
-010801D14FF0000800F064F848B1A079297B00F0040001
-F00401884218BF012700D1002700F056F850B1A079297B
-00F0020001F00201884218BF4FF0010901D14FF0000900
-F046F848B1A079297B00F0100001F01001884218BF0126
-00D10026A889E08000F030F828B100F02DF80268E18852
-6E9047B8F1000F03D000F02AF8CDF414F41FB100F025F8
-FBF7DFFBB9F1000F03D000F01EF8FBF7F6FB1EB100F019
-F8CDF42DF400F015F848B1DFF8FC542868012804DB00F0
-0DF82968FEF7E2F841B0BDE8F08300002068D5F4E7B300
+F0430D46C1B00446A86881064CBFDFF818194FF0FF31A2
+688A4308401043A06004F59856E889A23618B1B0F5C87F
+B8BF308000F00CFA002800F06F817DF4ADF5DCF4C1F180
+6818B94FF4CF7100F003FA288A40B17DF4A1F5DCF4B5F1
+8168288A29F4FFF404E07DF498F5DCF4ACF18068708000
+F0ECF93188D1F4D9F400F0E7F97188D1F4DCF400F0E2F9
+0268217AD2F8942001F001019047207A00F0810081280C
+BF0126002600F0D2F93146D0F4B9F700F0CDF90268A168
+D2F8A020890801F00101904700F0C3F90268A168D2F8A4
+20490801F00101904700F0B9F90268A168D2F8B020490A
+01F00101904700F0AFF90268A168D2F8AC20C90801F001
+01904700F0A5F90268A168D2F8B820890A01F001019047
+00F09BF9A989CFF438F100F096F9A168CA09CB064CBF02
+230023CE034CBF10260026490302F001024CBF20210021
+1A43324311430268F1940350D98000D2F89020904700F0
+7DF90268A168D2F8BC20090A01F00101904700F073F9A1
+68DEF438F6A068800004D500F06BF90121D4F480F007A8
+26F4C7F220680FF62009CBF4A6F5DEF430F60646002000
+2159F821201043491C0729F9D3A16810EA010808BF4FF4
+9018002759F8270018EA000F51D004F598503946A830A0
+F403F501461BA89FF433F715E08DF8000001A87AF4DDF4
+9DF80000512801DB562807DB684656F470F518B1694607
+A827F423F61BA89FF422F71BA89FF421F760BB1BA89FF4
+1FF7C1B202A890F421F60246394601A8A6F4CCF3024631
+4668469FF4B5F401A876F4B8F402A87AF4B1F4684656F4
+4AF50028CED11BA89FF403F7C1B201A890F405F69FF4FF
+F69AF479F3C11D0E2934BF3B300020B8E77F1C072FA5D3
+002603A829F464F2324607A911A826F48FF211A91BA829
+F4B3F712E01BA901A829F4B4F73146684626F472F19DF8
+04009DF80010411A03A829F4D0F01BA829F4ADF71BA829
+F4ACF70028E7D0761C072ED7DB00F0C3F807A989F462F3
+00F0C4F8D1F4C4F300F0C0F8FBF74EF800F0BCF8D1F49E
+F3A06880010CD500F0AFF8D5F49BF4064600F0AAF846F0
+04010268D2F888209047A068400004D500F0A5F80121FA
+F730FCA068002804D500F09DF80121FAF72CFCA0680105
+04D5DBF4EDF141F288311AE0C10404D5DBF4E6F14FF47A
+6113E0810404D5DBF4DFF140F6B8310CE0410404D5DBF4
+D8F14FF4FA6105E0000405D5DBF4D1F14FF47A71DBF4E9
+F700F073F850B1A079297B00F0010001F00101884218BF
+4FF0010801D14FF0000800F063F848B1A079297B00F004
+0001F00401884218BF012700D1002700F055F850B1A079
+297B00F0020001F00201884218BF4FF0010901D14FF000
+0900F045F848B1A079297B00F0100001F01001884218BF
+012600D10026A889E08000F02FF828B100F02CF80268E1
+88526E9047B8F1000F03D000F029F8CDF413F41FB100F0
+24F8FBF7DEFBB9F1000F03D000F01DF8FBF7F5FB1EB100
+F018F8CDF42CF400F014F848B1DFF8FC542868012804DB
+00F00CF82968FEF7E1F841B0BDE8F0832068D5F4E7B300
 00ADF800002068CBF443B400000FF22C50F2F71EBD0268
 0A60406848607047000038B5846842F02005AC43114021
 4300F59852816022F8A23F049951800021BDE83440D5F4
diff --git a/manifest.xml b/manifest.xml
index bc4c300..09fbd8a 100644
--- a/manifest.xml
+++ b/manifest.xml
@@ -136,7 +136,7 @@
     <hal format="hidl">
        <name>vendor.google.whitechapel.audio.audioext</name>
        <transport>hwbinder</transport>
-       <version>3.0</version>
+       <version>4.0</version>
        <interface>
            <name>IAudioExt</name>
            <instance>default</instance>
diff --git a/manifest_64.xml b/manifest_64.xml
index 4d67efc..4edb2e9 100644
--- a/manifest_64.xml
+++ b/manifest_64.xml
@@ -63,15 +63,6 @@
         </interface>
     </hal>
     <hal format="hidl">
-        <name>android.hardware.bluetooth.audio</name>
-        <transport>hwbinder</transport>
-        <version>2.1</version>
-        <interface>
-            <name>IBluetoothAudioProvidersFactory</name>
-            <instance>default</instance>
-        </interface>
-    </hal>
-    <hal format="hidl">
         <name>android.hardware.boot</name>
         <transport>hwbinder</transport>
         <fqname>@1.2::IBootControl/default</fqname>
@@ -128,7 +119,7 @@
     <hal format="hidl">
        <name>vendor.google.whitechapel.audio.audioext</name>
        <transport>hwbinder</transport>
-       <version>3.0</version>
+       <version>4.0</version>
        <interface>
            <name>IAudioExt</name>
            <instance>default</instance>
diff --git a/pixelstats/service.cpp b/pixelstats/service.cpp
index a1fe772..eb71d45 100644
--- a/pixelstats/service.cpp
+++ b/pixelstats/service.cpp
@@ -45,6 +45,8 @@
         .SpeakerTemperaturePath = "/sys/devices/platform/audiometrics/speaker_temp",
         .SpeakerExcursionPath = "/sys/devices/platform/audiometrics/speaker_excursion",
         .SpeakerHeartBeatPath = "/sys/devices/platform/audiometrics/speaker_heartbeat",
+        .ResumeLatencyMetricsPath = "/sys/kernel/metrics/resume_latency/resume_latency_metrics",
+        .LongIRQMetricsPath = "/sys/kernel/metrics/irq/long_irq_metrics",
         .UFSErrStatsPath = {
             UFS_ERR_PATH(pa_err_count),
             UFS_ERR_PATH(dl_err_count),
@@ -55,6 +57,7 @@
             UFS_ERR_PATH(auto_hibern8_err_count)
         },
         .AmsRatePath = "/sys/devices/platform/audiometrics/ams_rate_read_once",
+        .TempResidencyPath = "/sys/kernel/metrics/temp_residency/temp_residency_all/stats",
 };
 
 const struct UeventListener::UeventPaths ueventPaths = {
diff --git a/radio/config/Pixel_stability.nprf b/radio/config/Pixel_stability.nprf
index c2ce485..fc03188 100644
--- a/radio/config/Pixel_stability.nprf
+++ b/radio/config/Pixel_stability.nprf
Binary files differ
diff --git a/rro_overlays/WifiOverlay/res/values/config.xml b/rro_overlays/WifiOverlay/res/values/config.xml
index c63ff26..4addce8 100644
--- a/rro_overlays/WifiOverlay/res/values/config.xml
+++ b/rro_overlays/WifiOverlay/res/values/config.xml
@@ -141,4 +141,7 @@
 
     <!-- Enable aggregation of Wifi link layer radio stats from all radios -->
     <bool translatable="false" name="config_wifiLinkLayerAllRadiosStatsAggregationEnabled">true</bool>
+
+    <!-- Enable WPA2 to WPA3 auto-upgrade offload to capable Driver/Firmware -->
+    <bool translatable="false" name="config_wifiSaeUpgradeOffloadEnabled">true</bool>
 </resources>