Merge Android 14 QPR3 to AOSP main

Bug: 346855327
Merged-In: I35ba2f25b5f0489fca026b315df3d4a4c09b3991
Change-Id: I50962568785ff4f6db23ff993034132a40ae928f
diff --git a/audio/oriole/config/audio_policy_configuration.xml b/audio/oriole/config/audio_policy_configuration.xml
index f91a44d..b40204e 100644
--- a/audio/oriole/config/audio_policy_configuration.xml
+++ b/audio/oriole/config/audio_policy_configuration.xml
@@ -94,7 +94,7 @@
                              samplingRates="8000 11025 12000 16000 22050 24000 32000 44100 48000"
                              channelMasks="AUDIO_CHANNEL_IN_MONO AUDIO_CHANNEL_IN_STEREO"/>
                 </mixPort>
-                <mixPort name="incall capture" role="sink">
+                <mixPort name="incall capture" role="sink" maxActiveCount="2" maxOpenCount="2">
                     <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
                              samplingRates="48000"
                              channelMasks="AUDIO_CHANNEL_IN_MONO"/>
diff --git a/audio/oriole/config/audio_policy_configuration_a2dp_offload_disabled.xml b/audio/oriole/config/audio_policy_configuration_a2dp_offload_disabled.xml
index bc18a46..0f85d74 100644
--- a/audio/oriole/config/audio_policy_configuration_a2dp_offload_disabled.xml
+++ b/audio/oriole/config/audio_policy_configuration_a2dp_offload_disabled.xml
@@ -94,7 +94,7 @@
                              samplingRates="8000 11025 12000 16000 22050 24000 32000 44100 48000"
                              channelMasks="AUDIO_CHANNEL_IN_MONO AUDIO_CHANNEL_IN_STEREO"/>
                 </mixPort>
-                <mixPort name="incall capture" role="sink">
+                <mixPort name="incall capture" role="sink" maxActiveCount="2" maxOpenCount="2">
                     <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
                              samplingRates="48000"
                              channelMasks="AUDIO_CHANNEL_IN_MONO"/>
diff --git a/audio/oriole/config/audio_policy_configuration_bluetooth_legacy_hal.xml b/audio/oriole/config/audio_policy_configuration_bluetooth_legacy_hal.xml
index 90e4a16..a55b5d1 100644
--- a/audio/oriole/config/audio_policy_configuration_bluetooth_legacy_hal.xml
+++ b/audio/oriole/config/audio_policy_configuration_bluetooth_legacy_hal.xml
@@ -90,7 +90,7 @@
                              samplingRates="8000 11025 12000 16000 22050 24000 32000 44100 48000"
                              channelMasks="AUDIO_CHANNEL_IN_MONO AUDIO_CHANNEL_IN_STEREO"/>
                 </mixPort>
-                <mixPort name="incall capture" role="sink">
+                <mixPort name="incall capture" role="sink" maxActiveCount="2" maxOpenCount="2">
                     <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
                              samplingRates="48000"
                              channelMasks="AUDIO_CHANNEL_IN_MONO"/>
diff --git a/audio/oriole/config/audio_policy_configuration_le_offload_disabled.xml b/audio/oriole/config/audio_policy_configuration_le_offload_disabled.xml
index a96e6b3..72748dd 100644
--- a/audio/oriole/config/audio_policy_configuration_le_offload_disabled.xml
+++ b/audio/oriole/config/audio_policy_configuration_le_offload_disabled.xml
@@ -94,7 +94,7 @@
                              samplingRates="8000 11025 12000 16000 22050 24000 32000 44100 48000"
                              channelMasks="AUDIO_CHANNEL_IN_MONO AUDIO_CHANNEL_IN_STEREO"/>
                 </mixPort>
-                <mixPort name="incall capture" role="sink">
+                <mixPort name="incall capture" role="sink" maxActiveCount="2" maxOpenCount="2">
                     <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
                              samplingRates="48000"
                              channelMasks="AUDIO_CHANNEL_IN_MONO"/>
diff --git a/audio/raven/config/audio_policy_configuration.xml b/audio/raven/config/audio_policy_configuration.xml
index f91a44d..b40204e 100644
--- a/audio/raven/config/audio_policy_configuration.xml
+++ b/audio/raven/config/audio_policy_configuration.xml
@@ -94,7 +94,7 @@
                              samplingRates="8000 11025 12000 16000 22050 24000 32000 44100 48000"
                              channelMasks="AUDIO_CHANNEL_IN_MONO AUDIO_CHANNEL_IN_STEREO"/>
                 </mixPort>
-                <mixPort name="incall capture" role="sink">
+                <mixPort name="incall capture" role="sink" maxActiveCount="2" maxOpenCount="2">
                     <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
                              samplingRates="48000"
                              channelMasks="AUDIO_CHANNEL_IN_MONO"/>
diff --git a/audio/raven/config/audio_policy_configuration_a2dp_offload_disabled.xml b/audio/raven/config/audio_policy_configuration_a2dp_offload_disabled.xml
index bc18a46..0f85d74 100644
--- a/audio/raven/config/audio_policy_configuration_a2dp_offload_disabled.xml
+++ b/audio/raven/config/audio_policy_configuration_a2dp_offload_disabled.xml
@@ -94,7 +94,7 @@
                              samplingRates="8000 11025 12000 16000 22050 24000 32000 44100 48000"
                              channelMasks="AUDIO_CHANNEL_IN_MONO AUDIO_CHANNEL_IN_STEREO"/>
                 </mixPort>
-                <mixPort name="incall capture" role="sink">
+                <mixPort name="incall capture" role="sink" maxActiveCount="2" maxOpenCount="2">
                     <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
                              samplingRates="48000"
                              channelMasks="AUDIO_CHANNEL_IN_MONO"/>
diff --git a/audio/raven/config/audio_policy_configuration_bluetooth_legacy_hal.xml b/audio/raven/config/audio_policy_configuration_bluetooth_legacy_hal.xml
index 90e4a16..a55b5d1 100644
--- a/audio/raven/config/audio_policy_configuration_bluetooth_legacy_hal.xml
+++ b/audio/raven/config/audio_policy_configuration_bluetooth_legacy_hal.xml
@@ -90,7 +90,7 @@
                              samplingRates="8000 11025 12000 16000 22050 24000 32000 44100 48000"
                              channelMasks="AUDIO_CHANNEL_IN_MONO AUDIO_CHANNEL_IN_STEREO"/>
                 </mixPort>
-                <mixPort name="incall capture" role="sink">
+                <mixPort name="incall capture" role="sink" maxActiveCount="2" maxOpenCount="2">
                     <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
                              samplingRates="48000"
                              channelMasks="AUDIO_CHANNEL_IN_MONO"/>
diff --git a/audio/raven/config/audio_policy_configuration_le_offload_disabled.xml b/audio/raven/config/audio_policy_configuration_le_offload_disabled.xml
index a96e6b3..72748dd 100644
--- a/audio/raven/config/audio_policy_configuration_le_offload_disabled.xml
+++ b/audio/raven/config/audio_policy_configuration_le_offload_disabled.xml
@@ -94,7 +94,7 @@
                              samplingRates="8000 11025 12000 16000 22050 24000 32000 44100 48000"
                              channelMasks="AUDIO_CHANNEL_IN_MONO AUDIO_CHANNEL_IN_STEREO"/>
                 </mixPort>
-                <mixPort name="incall capture" role="sink">
+                <mixPort name="incall capture" role="sink" maxActiveCount="2" maxOpenCount="2">
                     <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
                              samplingRates="48000"
                              channelMasks="AUDIO_CHANNEL_IN_MONO"/>
diff --git a/conf/init.oriole.rc b/conf/init.oriole.rc
index 23d1bff..a68876f 100644
--- a/conf/init.oriole.rc
+++ b/conf/init.oriole.rc
@@ -3,10 +3,8 @@
 import /vendor/etc/init/hw/init.raviole.rc
 
 on init
-    # logbuffer
-    chown system system /dev/logbuffer_5-0057
     # nvmem dump
-    chown system system /sys/bus/nvmem/devices/4-00500/nvmem
+    chown system system /sys/bus/nvmem/devices/8-00500/nvmem
 
 on init && property:ro.boot.vh_sched_available=0
     setprop vendor.powerhal.config powerhint-mainline.json
diff --git a/conf/init.raven.rc b/conf/init.raven.rc
index 816e368..b3776ae 100644
--- a/conf/init.raven.rc
+++ b/conf/init.raven.rc
@@ -3,10 +3,8 @@
 import /vendor/etc/init/hw/init.raviole.rc
 
 on init
-    # logbuffer
-    chown system system /dev/logbuffer_5-0057
     # nvmem dump
-    chown system system /sys/bus/nvmem/devices/5-00500/nvmem
+    chown system system /sys/bus/nvmem/devices/8-00500/nvmem
 
     # Power Stats HAL
     chown system system /sys/devices/platform/10d30000.spi/spi_master/spi10/spi10.0/uwb/power_stats
diff --git a/conf/init.slider.rc b/conf/init.slider.rc
index af4a484..49c20ea 100644
--- a/conf/init.slider.rc
+++ b/conf/init.slider.rc
@@ -10,10 +10,6 @@
 on init && property:ro.build.flavor=factory_slider-userdebug
     import /vendor/etc/init/hw/init.factory.rc
 
-on init
-    # logbuffer
-    chown system system /dev/logbuffer_6-0057
-
 on early-boot
     # Wait for insmod_sh to finish all common modules
     wait_for_prop vendor.common.modules.ready 1
diff --git a/device-oriole.mk b/device-oriole.mk
index bba4d97..2857ba3 100644
--- a/device-oriole.mk
+++ b/device-oriole.mk
@@ -20,6 +20,15 @@
 TARGET_KERNEL_DIR ?= device/google/raviole-kernel
 TARGET_BOARD_KERNEL_HEADERS := device/google/raviole-kernel/kernel-headers
 
+ifdef RELEASE_GOOGLE_ORIOLE_KERNEL_VERSION
+TARGET_LINUX_KERNEL_VERSION := $(RELEASE_GOOGLE_ORIOLE_KERNEL_VERSION)
+endif
+
+ifdef RELEASE_GOOGLE_ORIOLE_KERNEL_DIR
+TARGET_KERNEL_DIR := $(RELEASE_GOOGLE_ORIOLE_KERNEL_DIR)
+TARGET_BOARD_KERNEL_HEADERS := $(RELEASE_GOOGLE_ORIOLE_KERNEL_DIR)/kernel-headers
+endif
+
 $(call inherit-product-if-exists, vendor/google_devices/raviole/prebuilts/device-vendor-oriole.mk)
 $(call inherit-product-if-exists, vendor/google_devices/gs101/prebuilts/device-vendor.mk)
 $(call inherit-product-if-exists, vendor/google_devices/gs101/proprietary/device-vendor.mk)
@@ -41,7 +50,7 @@
 GOODIX_CONFIG_BUILD_VERSION := g6_trusty
 ifneq (,$(filter AP1%,$(RELEASE_PLATFORM_VERSION)))
 PRODUCT_SOONG_NAMESPACES += vendor/google_devices/raviole/prebuilts/firmware/fingerprint/24Q1
-else ifneq (,$(filter AP2%,$(RELEASE_PLATFORM_VERSION)))
+else ifneq (,$(filter AP2% AP3%,$(RELEASE_PLATFORM_VERSION)))
 PRODUCT_SOONG_NAMESPACES += vendor/google_devices/raviole/prebuilts/firmware/fingerprint/24Q2
 else
 PRODUCT_SOONG_NAMESPACES += vendor/google_devices/raviole/prebuilts/firmware/fingerprint/trunk
@@ -199,7 +208,7 @@
 
 # Increment the SVN for any official public releases
 PRODUCT_VENDOR_PROPERTIES += \
-    ro.vendor.build.svn=75
+    ro.vendor.build.svn=82
 
 # Set support hide display cutout feature
 PRODUCT_PRODUCT_PROPERTIES += \
@@ -239,7 +248,7 @@
 PRODUCT_SOONG_NAMESPACES += vendor/google_devices/raviole/prebuilts
 ifneq (,$(filter AP1%,$(RELEASE_PLATFORM_VERSION)))
 PRODUCT_SOONG_NAMESPACES += vendor/google_devices/raviole/prebuilts/trusty/24Q1
-else ifneq (,$(filter AP2%,$(RELEASE_PLATFORM_VERSION)))
+else ifneq (,$(filter AP2% AP3%,$(RELEASE_PLATFORM_VERSION)))
 PRODUCT_SOONG_NAMESPACES += vendor/google_devices/raviole/prebuilts/trusty/24Q2
 else
 PRODUCT_SOONG_NAMESPACES += vendor/google_devices/raviole/prebuilts/trusty/trunk
diff --git a/device-raven.mk b/device-raven.mk
index 815da0a..7568074 100644
--- a/device-raven.mk
+++ b/device-raven.mk
@@ -20,6 +20,15 @@
 TARGET_KERNEL_DIR ?= device/google/raviole-kernel
 TARGET_BOARD_KERNEL_HEADERS := device/google/raviole-kernel/kernel-headers
 
+ifdef RELEASE_GOOGLE_RAVEN_KERNEL_VERSION
+TARGET_LINUX_KERNEL_VERSION := $(RELEASE_GOOGLE_RAVEN_KERNEL_VERSION)
+endif
+
+ifdef RELEASE_GOOGLE_RAVEN_KERNEL_DIR
+TARGET_KERNEL_DIR := $(RELEASE_GOOGLE_RAVEN_KERNEL_DIR)
+TARGET_BOARD_KERNEL_HEADERS := $(RELEASE_GOOGLE_RAVEN_KERNEL_DIR)/kernel-headers
+endif
+
 $(call inherit-product, device/google/raviole/uwb/uwb_calibration_country.mk)
 $(call inherit-product-if-exists, vendor/google_devices/raviole/prebuilts/device-vendor-raven.mk)
 $(call inherit-product-if-exists, vendor/google_devices/gs101/prebuilts/device-vendor.mk)
@@ -41,7 +50,7 @@
 GOODIX_CONFIG_BUILD_VERSION := g6_trusty
 ifneq (,$(filter AP1%,$(RELEASE_PLATFORM_VERSION)))
 PRODUCT_SOONG_NAMESPACES += vendor/google_devices/raviole/prebuilts/firmware/fingerprint/24Q1
-else ifneq (,$(filter AP2%,$(RELEASE_PLATFORM_VERSION)))
+else ifneq (,$(filter AP2% AP3%,$(RELEASE_PLATFORM_VERSION)))
 PRODUCT_SOONG_NAMESPACES += vendor/google_devices/raviole/prebuilts/firmware/fingerprint/24Q2
 else
 PRODUCT_SOONG_NAMESPACES += vendor/google_devices/raviole/prebuilts/firmware/fingerprint/trunk
@@ -203,7 +212,7 @@
 
 # Increment the SVN for any official public releases
 PRODUCT_VENDOR_PROPERTIES += \
-    ro.vendor.build.svn=75
+    ro.vendor.build.svn=82
 
 # Set support hide display cutout feature
 PRODUCT_PRODUCT_PROPERTIES += \
@@ -247,7 +256,7 @@
 PRODUCT_SOONG_NAMESPACES += vendor/google_devices/raviole/prebuilts
 ifneq (,$(filter AP1%,$(RELEASE_PLATFORM_VERSION)))
 PRODUCT_SOONG_NAMESPACES += vendor/google_devices/raviole/prebuilts/trusty/24Q1
-else ifneq (,$(filter AP2%,$(RELEASE_PLATFORM_VERSION)))
+else ifneq (,$(filter AP2% AP3%,$(RELEASE_PLATFORM_VERSION)))
 PRODUCT_SOONG_NAMESPACES += vendor/google_devices/raviole/prebuilts/trusty/24Q2
 else
 PRODUCT_SOONG_NAMESPACES += vendor/google_devices/raviole/prebuilts/trusty/trunk
diff --git a/device-slider.mk b/device-slider.mk
index 100a715..946c508 100644
--- a/device-slider.mk
+++ b/device-slider.mk
@@ -107,7 +107,7 @@
 PRODUCT_SOONG_NAMESPACES += vendor/google_devices/raviole/prebuilts
 ifneq (,$(filter AP1%,$(RELEASE_PLATFORM_VERSION)))
 PRODUCT_SOONG_NAMESPACES += vendor/google_devices/raviole/prebuilts/trusty/24Q1
-else ifneq (,$(filter AP2%,$(RELEASE_PLATFORM_VERSION)))
+else ifneq (,$(filter AP2% AP3%,$(RELEASE_PLATFORM_VERSION)))
 PRODUCT_SOONG_NAMESPACES += vendor/google_devices/raviole/prebuilts/trusty/24Q2
 else
 PRODUCT_SOONG_NAMESPACES += vendor/google_devices/raviole/prebuilts/trusty/trunk
diff --git a/device-whitefin.mk b/device-whitefin.mk
index 41197dd..3edde0d 100644
--- a/device-whitefin.mk
+++ b/device-whitefin.mk
@@ -90,7 +90,7 @@
 PRODUCT_SOONG_NAMESPACES += vendor/google_devices/raviole/prebuilts
 ifneq (,$(filter AP1%,$(RELEASE_PLATFORM_VERSION)))
 PRODUCT_SOONG_NAMESPACES += vendor/google_devices/raviole/prebuilts/trusty/24Q1
-else ifneq (,$(filter AP2%,$(RELEASE_PLATFORM_VERSION)))
+else ifneq (,$(filter AP2% AP3%,$(RELEASE_PLATFORM_VERSION)))
 PRODUCT_SOONG_NAMESPACES += vendor/google_devices/raviole/prebuilts/trusty/24Q2
 else
 PRODUCT_SOONG_NAMESPACES += vendor/google_devices/raviole/prebuilts/trusty/trunk
diff --git a/init.insmod.oriole.cfg b/init.insmod.oriole.cfg
index 6617a28..0ab8ad5 100644
--- a/init.insmod.oriole.cfg
+++ b/init.insmod.oriole.cfg
@@ -9,6 +9,7 @@
 modprobe|bcmdhd4389.ko
 modprobe|ftm5.ko
 modprobe|sec_touch.ko
+modprobe|st33spi.ko
 
 # All device specific modules loaded
 setprop|vendor.device.modules.ready
diff --git a/init.insmod.raven.cfg b/init.insmod.raven.cfg
index d12fc88..84b3239 100644
--- a/init.insmod.raven.cfg
+++ b/init.insmod.raven.cfg
@@ -8,6 +8,7 @@
 # Modules here will be loaded *after* all common modules
 modprobe|bcmdhd4389.ko
 modprobe|sec_touch.ko
+modprobe|st33spi.ko
 
 # All device specific modules loaded
 setprop|vendor.device.modules.ready
diff --git a/location/gps.xml b/location/gps.xml
index 97c7d8b..f98c248 100644
--- a/location/gps.xml
+++ b/location/gps.xml
@@ -35,7 +35,7 @@
        SuplVersion="2"
        SuplMinorVersion="0"
        SuplOtdoaCapable="true"
-       SuplOtdoaCapable2="true"
+       SuplOtdoaCapable2="false"
        SuplGlonassCapable = "true"
        SuplGalileoCapable = "true"
        SuplBdsCapable = "true"
@@ -59,7 +59,7 @@
        CpLppeCancelDbhOnAgnssProvideLoc="true"
        CpLppeUseAgnssLocForEmptyDbh="true"
        ReAidingOnHotStart="false"
-       ReAidingIntervalSec="1200"
+       ReAidingIntervalSec="3600"
        PpsDevice="/sys/class/pps/pps0/assert_elapsed"
        SensorsMask="0x244"
        MaxThreadNum="13"
@@ -92,6 +92,8 @@
        MinGpsWeekNumber="2216"
        OnChipAccMask="50"
        EnableB1C="false"
+
+       RTICacheTimeoutSec="3600"
   />
 
   <gll_features
diff --git a/location/gps.xml.oriole b/location/gps.xml.oriole
index a76f153..6781e32 100644
--- a/location/gps.xml.oriole
+++ b/location/gps.xml.oriole
@@ -35,7 +35,7 @@
        SuplVersion="2"
        SuplMinorVersion="0"
        SuplOtdoaCapable="true"
-       SuplOtdoaCapable2="true"
+       SuplOtdoaCapable2="false"
        SuplGlonassCapable = "true"
        SuplGalileoCapable = "true"
        SuplBdsCapable = "true"
@@ -59,7 +59,7 @@
        CpLppeCancelDbhOnAgnssProvideLoc="true"
        CpLppeUseAgnssLocForEmptyDbh="true"
        ReAidingOnHotStart="false"
-       ReAidingIntervalSec="1200"
+       ReAidingIntervalSec="3600"
        PpsDevice="/sys/class/pps/pps0/assert_elapsed"
        SensorsMask="0x244"
        MaxThreadNum="13"
@@ -92,6 +92,8 @@
        MinGpsWeekNumber="2216"
        OnChipAccMask="50"
        EnableB1C="false"
+
+       RTICacheTimeoutSec="3600"
   />
 
   <gll_features
diff --git a/location/gps.xml.raven b/location/gps.xml.raven
index 9a64d97..681edc5 100644
--- a/location/gps.xml.raven
+++ b/location/gps.xml.raven
@@ -35,7 +35,7 @@
        SuplVersion="2"
        SuplMinorVersion="0"
        SuplOtdoaCapable="true"
-       SuplOtdoaCapable2="true"
+       SuplOtdoaCapable2="false"
        SuplGlonassCapable = "true"
        SuplGalileoCapable = "true"
        SuplBdsCapable = "true"
@@ -59,7 +59,7 @@
        CpLppeCancelDbhOnAgnssProvideLoc="true"
        CpLppeUseAgnssLocForEmptyDbh="true"
        ReAidingOnHotStart="false"
-       ReAidingIntervalSec="1200"
+       ReAidingIntervalSec="3600"
        PpsDevice="/sys/class/pps/pps0/assert_elapsed"
        SensorsMask="0x244"
        MaxThreadNum="13"
@@ -92,6 +92,8 @@
        MinGpsWeekNumber="2216"
        OnChipAccMask="50"
        EnableB1C="false"
+
+       RTICacheTimeoutSec="3600"
   />
 
   <gll_features
diff --git a/location/gps_user.xml b/location/gps_user.xml
index c2184c2..c5241bc 100644
--- a/location/gps_user.xml
+++ b/location/gps_user.xml
@@ -34,7 +34,7 @@
        SuplVersion="2"
        SuplMinorVersion="0"
        SuplOtdoaCapable="true"
-       SuplOtdoaCapable2="true"
+       SuplOtdoaCapable2="false"
        SuplGlonassCapable = "true"
        SuplGalileoCapable = "true"
        SuplBdsCapable = "true"
@@ -58,7 +58,7 @@
        CpLppeCancelDbhOnAgnssProvideLoc="true"
        CpLppeUseAgnssLocForEmptyDbh="true"
        ReAidingOnHotStart="false"
-       ReAidingIntervalSec="1200"
+       ReAidingIntervalSec="3600"
        PpsDevice="/sys/class/pps/pps0/assert_elapsed"
        SensorsMask="0x244"
        MaxThreadNum="13"
@@ -91,6 +91,8 @@
        MinGpsWeekNumber="2216"
        OnChipAccMask="50"
        EnableB1C="false"
+
+       RTICacheTimeoutSec="3600"
   />
 
   <gll_features
diff --git a/location/gps_user.xml.oriole b/location/gps_user.xml.oriole
index f09913a..1cb18fd 100644
--- a/location/gps_user.xml.oriole
+++ b/location/gps_user.xml.oriole
@@ -34,7 +34,7 @@
        SuplVersion="2"
        SuplMinorVersion="0"
        SuplOtdoaCapable="true"
-       SuplOtdoaCapable2="true"
+       SuplOtdoaCapable2="false"
        SuplGlonassCapable = "true"
        SuplGalileoCapable = "true"
        SuplBdsCapable = "true"
@@ -58,7 +58,7 @@
        CpLppeCancelDbhOnAgnssProvideLoc="true"
        CpLppeUseAgnssLocForEmptyDbh="true"
        ReAidingOnHotStart="false"
-       ReAidingIntervalSec="1200"
+       ReAidingIntervalSec="3600"
        PpsDevice="/sys/class/pps/pps0/assert_elapsed"
        SensorsMask="0x244"
        MaxThreadNum="13"
@@ -91,6 +91,8 @@
        MinGpsWeekNumber="2216"
        OnChipAccMask="50"
        EnableB1C="false"
+
+       RTICacheTimeoutSec="3600"
   />
 
   <gll_features
diff --git a/location/gps_user.xml.raven b/location/gps_user.xml.raven
index 858732d..109472d 100644
--- a/location/gps_user.xml.raven
+++ b/location/gps_user.xml.raven
@@ -34,7 +34,7 @@
        SuplVersion="2"
        SuplMinorVersion="0"
        SuplOtdoaCapable="true"
-       SuplOtdoaCapable2="true"
+       SuplOtdoaCapable2="false"
        SuplGlonassCapable = "true"
        SuplGalileoCapable = "true"
        SuplBdsCapable = "true"
@@ -58,7 +58,7 @@
        CpLppeCancelDbhOnAgnssProvideLoc="true"
        CpLppeUseAgnssLocForEmptyDbh="true"
        ReAidingOnHotStart="false"
-       ReAidingIntervalSec="1200"
+       ReAidingIntervalSec="3600"
        PpsDevice="/sys/class/pps/pps0/assert_elapsed"
        SensorsMask="0x244"
        MaxThreadNum="13"
@@ -91,6 +91,8 @@
        MinGpsWeekNumber="2216"
        OnChipAccMask="50"
        EnableB1C="false"
+
+       RTICacheTimeoutSec="3600"
   />
 
   <gll_features
diff --git a/nfc/libnfc-hal-st.conf b/nfc/libnfc-hal-st.conf
index b7599c7..7300e21 100644
--- a/nfc/libnfc-hal-st.conf
+++ b/nfc/libnfc-hal-st.conf
@@ -8,7 +8,7 @@
 
 ###############################################################################
 # Vendor specific mode to enable FW (RF & SWP) traces.
-STNFC_FW_DEBUG_ENABLED=0
+STNFC_FW_DEBUG_ENABLED=1
 
 ###############################################################################
 # File used for NFA storage
diff --git a/oriole/BoardConfig.mk b/oriole/BoardConfig.mk
index 5176a54..a138bc2 100644
--- a/oriole/BoardConfig.mk
+++ b/oriole/BoardConfig.mk
@@ -26,7 +26,7 @@
 RELEASE_GOOGLE_PRODUCT_RADIO_DIR := $(RELEASE_GOOGLE_ORIOLE_RADIO_DIR)
 ifneq (,$(filter AP1%,$(RELEASE_PLATFORM_VERSION)))
 RELEASE_GOOGLE_PRODUCT_BOOTLOADER_DIR := bootloader/24Q1
-else ifneq (,$(filter AP2%,$(RELEASE_PLATFORM_VERSION)))
+else ifneq (,$(filter AP2% AP3%,$(RELEASE_PLATFORM_VERSION)))
 RELEASE_GOOGLE_PRODUCT_BOOTLOADER_DIR := bootloader/24Q2
 else
 RELEASE_GOOGLE_PRODUCT_BOOTLOADER_DIR := bootloader/trunk
diff --git a/oriole/overlay/frameworks/base/packages/SystemUI/res/values/dimens.xml b/oriole/overlay/frameworks/base/packages/SystemUI/res/values/dimens.xml
index fa178a8..8e6ed37 100644
--- a/oriole/overlay/frameworks/base/packages/SystemUI/res/values/dimens.xml
+++ b/oriole/overlay/frameworks/base/packages/SystemUI/res/values/dimens.xml
@@ -52,5 +52,8 @@
 
     <!-- Offset should not be more than 1mm -->
     <dimen name="udfps_burn_in_offset_y">16px</dimen>
+
+    <!-- Pixel pitch of the device. um/px -->
+    <item name="pixel_pitch" format="float" type="dimen">61.8</item>
 </resources>
 
diff --git a/oriole/rro_overlays/NfcOverlay/res/values/config.xml b/oriole/rro_overlays/NfcOverlay/res/values/config.xml
index d1f5832..1b70812 100644
--- a/oriole/rro_overlays/NfcOverlay/res/values/config.xml
+++ b/oriole/rro_overlays/NfcOverlay/res/values/config.xml
@@ -32,4 +32,5 @@
   <integer-array name="antenna_y">
     <item>106</item>
   </integer-array>
+  <bool name="nfc_observe_mode_supported">true</bool>
 </resources>
diff --git a/powerhint-oriole.json b/powerhint-oriole.json
index 7161acd..47e6bf1 100644
--- a/powerhint-oriole.json
+++ b/powerhint-oriole.json
@@ -122,7 +122,7 @@
     },
     {
       "Name": "CPUBigClusterDownRateLimitUs",
-      "Path": "/sys/devices/system/cpu/cpu8/cpufreq/sched_pixel/down_rate_limit_us",
+      "Path": "/sys/devices/system/cpu/cpu6/cpufreq/sched_pixel/down_rate_limit_us",
       "Values": [
         "20000",
         "3000"
diff --git a/powerhint-raven.json b/powerhint-raven.json
index 1dc065c..ebd95a5 100644
--- a/powerhint-raven.json
+++ b/powerhint-raven.json
@@ -121,7 +121,7 @@
     },
     {
       "Name": "CPUBigClusterDownRateLimitUs",
-      "Path": "/sys/devices/system/cpu/cpu8/cpufreq/sched_pixel/down_rate_limit_us",
+      "Path": "/sys/devices/system/cpu/cpu6/cpufreq/sched_pixel/down_rate_limit_us",
       "Values": [
         "20000",
         "3000"
diff --git a/powerhint-slider.json b/powerhint-slider.json
index d8755b1..5726aa9 100644
--- a/powerhint-slider.json
+++ b/powerhint-slider.json
@@ -121,7 +121,7 @@
     },
     {
       "Name": "CPUBigClusterDownRateLimitUs",
-      "Path": "/sys/devices/system/cpu/cpu8/cpufreq/sched_pixel/down_rate_limit_us",
+      "Path": "/sys/devices/system/cpu/cpu6/cpufreq/sched_pixel/down_rate_limit_us",
       "Values": [
         "20000",
         "3000"
diff --git a/powerhint-whitefin.json b/powerhint-whitefin.json
index 8576d18..d44d6f9 100644
--- a/powerhint-whitefin.json
+++ b/powerhint-whitefin.json
@@ -121,7 +121,7 @@
     },
     {
       "Name": "CPUBigClusterDownRateLimitUs",
-      "Path": "/sys/devices/system/cpu/cpu8/cpufreq/sched_pixel/down_rate_limit_us",
+      "Path": "/sys/devices/system/cpu/cpu6/cpufreq/sched_pixel/down_rate_limit_us",
       "Values": [
         "20000",
         "3000"
diff --git a/powerstats/oriole/service.cpp b/powerstats/oriole/service.cpp
index af936a3..fadc674 100644
--- a/powerstats/oriole/service.cpp
+++ b/powerstats/oriole/service.cpp
@@ -41,17 +41,24 @@
 
 void addDisplay(std::shared_ptr<PowerStats> p) {
     // Add display residency stats
-    std::vector<std::string> states = {
-        "Off",
-        "LP: 1080x2400@30",
-        "On: 1080x2400@60",
-        "On: 1080x2400@90",
-        "HBM: 1080x2400@60",
-    };
+    struct stat buffer;
+    if (!stat("/sys/class/drm/card0/device/primary-panel/time_in_state", &buffer)) {
+        // time_in_state exists
+        addDisplayMrr(p);
+    } else {
+        // time_in_state doesn't exist
+        std::vector<std::string> states = {
+            "Off",
+            "LP: 1080x2400@30",
+            "On: 1080x2400@60",
+            "On: 1080x2400@90",
+            "HBM: 1080x2400@60",
+        };
 
-    p->addStateResidencyDataProvider(std::make_unique<DisplayStateResidencyDataProvider>("Display",
-            "/sys/class/backlight/panel0-backlight/state",
-            states));
+        p->addStateResidencyDataProvider(std::make_unique<DisplayStateResidencyDataProvider>("Display",
+                "/sys/class/backlight/panel0-backlight/state",
+                states));
+    }
 
     std::string rev = android::base::GetProperty(kBootRevision, "");
 
@@ -87,18 +94,8 @@
 
     addGs101CommonDataProviders(p);
     addDisplay(p);
-    if (!stat("/sys/devices/platform/10960000.hsi2c/i2c-3/i2c-st21nfc/power_stats", &buffer)) {
-        addNFC(p, "/sys/devices/platform/10960000.hsi2c/i2c-3/i2c-st21nfc/power_stats");
-    } else if (!stat("/sys/devices/platform/10960000.hsi2c/i2c-4/i2c-st21nfc/power_stats", &buffer)) {
-        addNFC(p, "/sys/devices/platform/10960000.hsi2c/i2c-4/i2c-st21nfc/power_stats");
-    } else if (!stat("/sys/devices/platform/10960000.hsi2c/i2c-5/i2c-st21nfc/power_stats", &buffer)) {
-        addNFC(p, "/sys/devices/platform/10960000.hsi2c/i2c-5/i2c-st21nfc/power_stats");
-    } else if (!stat("/sys/devices/platform/10960000.hsi2c/i2c-6/i2c-st21nfc/power_stats", &buffer)) {
-        addNFC(p, "/sys/devices/platform/10960000.hsi2c/i2c-6/i2c-st21nfc/power_stats");
-    } else if (!stat("/sys/devices/platform/10960000.hsi2c/i2c-7/i2c-st21nfc/power_stats", &buffer)) {
-        addNFC(p, "/sys/devices/platform/10960000.hsi2c/i2c-7/i2c-st21nfc/power_stats");
-    } else {
-        addNFC(p, "/sys/devices/platform/10960000.hsi2c/i2c-8/i2c-st21nfc/power_stats");
+    if (!stat("/sys/devices/platform/10960000.hsi2c/i2c-7/7-0008/power_stats", &buffer)) {
+        addNFC(p, "/sys/devices/platform/10960000.hsi2c/i2c-7/7-0008/power_stats");
     }
     const std::string instance = std::string() + PowerStats::descriptor + "/default";
     binder_status_t status = AServiceManager_addService(p->asBinder().get(), instance.c_str());
diff --git a/powerstats/raven/service.cpp b/powerstats/raven/service.cpp
index 10bf17e..56fc6fd 100644
--- a/powerstats/raven/service.cpp
+++ b/powerstats/raven/service.cpp
@@ -43,21 +43,28 @@
 
 void addDisplay(std::shared_ptr<PowerStats> p) {
     // Add display residency stats
-    std::vector<std::string> states = {
-        "Off",
-        "LP: 1440x3120@10",
-        "LP: 1440x3120@30",
-        "On: 1440x3120@10",
-        "On: 1440x3120@30",
-        "On: 1440x3120@60",
-        "On: 1440x3120@90",
-        "On: 1440x3120@120",
-        "HBM: 1440x3120@60",
-    };
+    struct stat buffer;
+    if (!stat("/sys/class/drm/card0/device/primary-panel/time_in_state", &buffer)) {
+        // time_in_state exists
+        addDisplayMrr(p);
+    } else {
+        // time_in_state doesn't exist
+        std::vector<std::string> states = {
+            "Off",
+            "LP: 1440x3120@10",
+            "LP: 1440x3120@30",
+            "On: 1440x3120@10",
+            "On: 1440x3120@30",
+            "On: 1440x3120@60",
+            "On: 1440x3120@90",
+            "On: 1440x3120@120",
+            "HBM: 1440x3120@60",
+        };
 
-    p->addStateResidencyDataProvider(std::make_unique<DisplayStateResidencyDataProvider>("Display",
-            "/sys/class/backlight/panel0-backlight/state",
-            states));
+        p->addStateResidencyDataProvider(std::make_unique<DisplayStateResidencyDataProvider>("Display",
+                "/sys/class/backlight/panel0-backlight/state",
+                states));
+    }
 
     std::string rev = android::base::GetProperty(kBootRevision, "");
 
@@ -129,18 +136,8 @@
 
     addGs101CommonDataProviders(p);
     addDisplay(p);
-    if (!stat("/sys/devices/platform/10960000.hsi2c/i2c-3/i2c-st21nfc/power_stats", &buffer)) {
-        addNFC(p, "/sys/devices/platform/10960000.hsi2c/i2c-3/i2c-st21nfc/power_stats");
-    } else if (!stat("/sys/devices/platform/10960000.hsi2c/i2c-4/i2c-st21nfc/power_stats", &buffer)) {
-        addNFC(p, "/sys/devices/platform/10960000.hsi2c/i2c-4/i2c-st21nfc/power_stats");
-    } else if (!stat("/sys/devices/platform/10960000.hsi2c/i2c-5/i2c-st21nfc/power_stats", &buffer)) {
-        addNFC(p, "/sys/devices/platform/10960000.hsi2c/i2c-5/i2c-st21nfc/power_stats");
-    } else if (!stat("/sys/devices/platform/10960000.hsi2c/i2c-6/i2c-st21nfc/power_stats", &buffer)) {
-        addNFC(p, "/sys/devices/platform/10960000.hsi2c/i2c-6/i2c-st21nfc/power_stats");
-    } else if (!stat("/sys/devices/platform/10960000.hsi2c/i2c-7/i2c-st21nfc/power_stats", &buffer)) {
-        addNFC(p, "/sys/devices/platform/10960000.hsi2c/i2c-7/i2c-st21nfc/power_stats");
-    } else {
-        addNFC(p, "/sys/devices/platform/10960000.hsi2c/i2c-8/i2c-st21nfc/power_stats");
+    if (!stat("/sys/devices/platform/10960000.hsi2c/i2c-7/7-0008/power_stats", &buffer)) {
+        addNFC(p, "/sys/devices/platform/10960000.hsi2c/i2c-7/7-0008/power_stats");
     }
     const std::string instance = std::string() + PowerStats::descriptor + "/default";
     binder_status_t status = AServiceManager_addService(p->asBinder().get(), instance.c_str());
diff --git a/powerstats/slider/service.cpp b/powerstats/slider/service.cpp
index 6969cc0..1d7966d 100644
--- a/powerstats/slider/service.cpp
+++ b/powerstats/slider/service.cpp
@@ -70,18 +70,8 @@
 
     addGs101CommonDataProviders(p);
     addDisplay(p);
-    if (!stat("/sys/devices/platform/10960000.hsi2c/i2c-3/i2c-st21nfc/power_stats", &buffer)) {
-        addNFC(p, "/sys/devices/platform/10960000.hsi2c/i2c-3/i2c-st21nfc/power_stats");
-    } else if (!stat("/sys/devices/platform/10960000.hsi2c/i2c-4/i2c-st21nfc/power_stats", &buffer)) {
-        addNFC(p, "/sys/devices/platform/10960000.hsi2c/i2c-4/i2c-st21nfc/power_stats");
-    } else if (!stat("/sys/devices/platform/10960000.hsi2c/i2c-5/i2c-st21nfc/power_stats", &buffer)) {
-        addNFC(p, "/sys/devices/platform/10960000.hsi2c/i2c-5/i2c-st21nfc/power_stats");
-    } else if (!stat("/sys/devices/platform/10960000.hsi2c/i2c-6/i2c-st21nfc/power_stats", &buffer)) {
-        addNFC(p, "/sys/devices/platform/10960000.hsi2c/i2c-6/i2c-st21nfc/power_stats");
-    } else if (!stat("/sys/devices/platform/10960000.hsi2c/i2c-7/i2c-st21nfc/power_stats", &buffer)) {
-        addNFC(p, "/sys/devices/platform/10960000.hsi2c/i2c-7/i2c-st21nfc/power_stats");
-    } else {
-        addNFC(p, "/sys/devices/platform/10960000.hsi2c/i2c-8/i2c-st21nfc/power_stats");
+    if (!stat("/sys/devices/platform/10960000.hsi2c/i2c-7/7-0008/power_stats", &buffer)) {
+        addNFC(p, "/sys/devices/platform/10960000.hsi2c/i2c-7/7-0008/power_stats");
     }
     const std::string instance = std::string() + PowerStats::descriptor + "/default";
     binder_status_t status = AServiceManager_addService(p->asBinder().get(), instance.c_str());
diff --git a/raven/BoardConfig.mk b/raven/BoardConfig.mk
index 0fc37e8..70f7077 100644
--- a/raven/BoardConfig.mk
+++ b/raven/BoardConfig.mk
@@ -26,7 +26,7 @@
 RELEASE_GOOGLE_PRODUCT_RADIO_DIR := $(RELEASE_GOOGLE_RAVEN_RADIO_DIR)
 ifneq (,$(filter AP1%,$(RELEASE_PLATFORM_VERSION)))
 RELEASE_GOOGLE_PRODUCT_BOOTLOADER_DIR := bootloader/24Q1
-else ifneq (,$(filter AP2%,$(RELEASE_PLATFORM_VERSION)))
+else ifneq (,$(filter AP2% AP3%,$(RELEASE_PLATFORM_VERSION)))
 RELEASE_GOOGLE_PRODUCT_BOOTLOADER_DIR := bootloader/24Q2
 else
 RELEASE_GOOGLE_PRODUCT_BOOTLOADER_DIR := bootloader/trunk
diff --git a/raven/overlay/frameworks/base/packages/SystemUI/res/values/dimens.xml b/raven/overlay/frameworks/base/packages/SystemUI/res/values/dimens.xml
index bc7aab2..78e96da 100644
--- a/raven/overlay/frameworks/base/packages/SystemUI/res/values/dimens.xml
+++ b/raven/overlay/frameworks/base/packages/SystemUI/res/values/dimens.xml
@@ -59,5 +59,8 @@
 
     <!-- Padding for the lock icon on the keyguard. In pixels - should not scale with display size. -->
     <dimen name="lock_icon_padding">68px</dimen>
+
+    <!-- Pixel pitch of the device. um/px -->
+    <item name="pixel_pitch" format="float" type="dimen">49.6</item>
 </resources>
 
diff --git a/raven/rro_overlays/NfcOverlay/res/values/config.xml b/raven/rro_overlays/NfcOverlay/res/values/config.xml
index e17a0a2..9545f18 100644
--- a/raven/rro_overlays/NfcOverlay/res/values/config.xml
+++ b/raven/rro_overlays/NfcOverlay/res/values/config.xml
@@ -32,4 +32,5 @@
   <integer-array name="antenna_y">
     <item>106</item>
   </integer-array>
+  <bool name="nfc_observe_mode_supported">true</bool>
 </resources>
diff --git a/slider/BoardConfig.mk b/slider/BoardConfig.mk
index 70a80b1..0c3d11f 100644
--- a/slider/BoardConfig.mk
+++ b/slider/BoardConfig.mk
@@ -17,7 +17,7 @@
 TARGET_BOOTLOADER_BOARD_NAME := slider
 ifneq (,$(filter AP1%,$(RELEASE_PLATFORM_VERSION)))
 RELEASE_GOOGLE_PRODUCT_BOOTLOADER_DIR := bootloader/24Q1
-else ifneq (,$(filter AP2%,$(RELEASE_PLATFORM_VERSION)))
+else ifneq (,$(filter AP2% AP3%,$(RELEASE_PLATFORM_VERSION)))
 RELEASE_GOOGLE_PRODUCT_BOOTLOADER_DIR := bootloader/24Q2
 else
 RELEASE_GOOGLE_PRODUCT_BOOTLOADER_DIR := bootloader/trunk
diff --git a/whitefin/BoardConfig.mk b/whitefin/BoardConfig.mk
index f78f6c8..e824c17 100644
--- a/whitefin/BoardConfig.mk
+++ b/whitefin/BoardConfig.mk
@@ -17,7 +17,7 @@
 TARGET_BOOTLOADER_BOARD_NAME := whitefin
 ifneq (,$(filter AP1%,$(RELEASE_PLATFORM_VERSION)))
 RELEASE_GOOGLE_PRODUCT_BOOTLOADER_DIR := bootloader/24Q1
-else ifneq (,$(filter AP2%,$(RELEASE_PLATFORM_VERSION)))
+else ifneq (,$(filter AP2% AP3%,$(RELEASE_PLATFORM_VERSION)))
 RELEASE_GOOGLE_PRODUCT_BOOTLOADER_DIR := bootloader/24Q2
 else
 RELEASE_GOOGLE_PRODUCT_BOOTLOADER_DIR := bootloader/trunk