Merge Android 14 QPR3 to AOSP main

Bug: 346855327
Merged-In: I085b9bae6ea33c255634fe4406b41bf9f3502efe
Change-Id: I959a2858902be421dc9adf137bf5bc22f6a152bd
diff --git a/audio/bluejay/config/audio_policy_configuration.xml b/audio/bluejay/config/audio_policy_configuration.xml
index e19268f..266bf4e 100644
--- a/audio/bluejay/config/audio_policy_configuration.xml
+++ b/audio/bluejay/config/audio_policy_configuration.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/bluejay/config/audio_policy_configuration_a2dp_offload_disabled.xml b/audio/bluejay/config/audio_policy_configuration_a2dp_offload_disabled.xml
index 6a4a2be..84869ab 100644
--- a/audio/bluejay/config/audio_policy_configuration_a2dp_offload_disabled.xml
+++ b/audio/bluejay/config/audio_policy_configuration_a2dp_offload_disabled.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/bluejay/config/audio_policy_configuration_bluetooth_legacy_hal.xml b/audio/bluejay/config/audio_policy_configuration_bluetooth_legacy_hal.xml
index 2c08723..c2e949e 100644
--- a/audio/bluejay/config/audio_policy_configuration_bluetooth_legacy_hal.xml
+++ b/audio/bluejay/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/bluejay/BoardConfig.mk b/bluejay/BoardConfig.mk
index 714c9c3..94dea6a 100644
--- a/bluejay/BoardConfig.mk
+++ b/bluejay/BoardConfig.mk
@@ -23,7 +23,7 @@
 RELEASE_GOOGLE_PRODUCT_RADIO_DIR := $(RELEASE_GOOGLE_BLUEJAY_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/bluejay/overlay/frameworks/base/packages/SystemUI/res/values/dimens.xml b/bluejay/overlay/frameworks/base/packages/SystemUI/res/values/dimens.xml
index 5e4f716..de39800 100644
--- a/bluejay/overlay/frameworks/base/packages/SystemUI/res/values/dimens.xml
+++ b/bluejay/overlay/frameworks/base/packages/SystemUI/res/values/dimens.xml
@@ -51,5 +51,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">56.5</item>
 </resources>
 
diff --git a/bluejay/rro_overlays/NfcOverlay/res/values/config.xml b/bluejay/rro_overlays/NfcOverlay/res/values/config.xml
index 5610991..88f9db8 100644
--- a/bluejay/rro_overlays/NfcOverlay/res/values/config.xml
+++ b/bluejay/rro_overlays/NfcOverlay/res/values/config.xml
@@ -32,4 +32,5 @@
   <integer-array name="antenna_y">
     <item>83</item>
   </integer-array>
+  <bool name="nfc_observe_mode_supported">true</bool>
 </resources>
diff --git a/conf/init.bluejay.rc b/conf/init.bluejay.rc
index 7378c6e..3c256bc 100644
--- a/conf/init.bluejay.rc
+++ b/conf/init.bluejay.rc
@@ -35,15 +35,15 @@
     chown system system /mnt/vendor/persist/haptics
     chown system system /mnt/vendor/persist/haptics/cs40l26.cal
 
-    chown system system /sys/bus/i2c/devices/i2c-cs40l26a/calibration/f0_stored
-    chown system system /sys/bus/i2c/devices/i2c-cs40l26a/calibration/q_stored
-    chown system system /sys/bus/i2c/devices/i2c-cs40l26a/calibration/redc_stored
-    chown system system /sys/bus/i2c/devices/i2c-cs40l26a/default/vibe_state
-    chown system system /sys/bus/i2c/devices/i2c-cs40l26a/default/num_waves
-    chown system system /sys/bus/i2c/devices/i2c-cs40l26a/default/f0_offset
-    chown system system /sys/bus/i2c/devices/i2c-cs40l26a/default/owt_free_space
-    chown system system /sys/bus/i2c/devices/i2c-cs40l26a/default/f0_comp_enable
-    chown system system /sys/bus/i2c/devices/i2c-cs40l26a/default/redc_comp_enable
-    chown system system /sys/bus/i2c/devices/i2c-cs40l26a/default/delay_before_stop_playback_us
+    chown system system /sys/bus/i2c/devices/8-0043/calibration/f0_stored
+    chown system system /sys/bus/i2c/devices/8-0043/calibration/q_stored
+    chown system system /sys/bus/i2c/devices/8-0043/calibration/redc_stored
+    chown system system /sys/bus/i2c/devices/8-0043/default/vibe_state
+    chown system system /sys/bus/i2c/devices/8-0043/default/num_waves
+    chown system system /sys/bus/i2c/devices/8-0043/default/f0_offset
+    chown system system /sys/bus/i2c/devices/8-0043/default/owt_free_space
+    chown system system /sys/bus/i2c/devices/8-0043/default/f0_comp_enable
+    chown system system /sys/bus/i2c/devices/8-0043/default/redc_comp_enable
+    chown system system /sys/bus/i2c/devices/8-0043/default/delay_before_stop_playback_us
 
     enable vendor.vibrator.cs40l26
diff --git a/conf/init.blueport.rc b/conf/init.blueport.rc
index bd69d18..5f411f8 100644
--- a/conf/init.blueport.rc
+++ b/conf/init.blueport.rc
@@ -6,11 +6,8 @@
     import /vendor/etc/init/hw/init.factory.rc
 
 on init
-    # logbuffer
-    chown system system /dev/logbuffer_2-0057
-    chown system system /dev/logbuffer_6-0057
     # register/nvmem dump
-    chown system system /sys/bus/nvmem/devices/5-00500/nvmem
+    chown system system /sys/bus/nvmem/devices/8-00500/nvmem
     # NFC streset tool name
     setprop persist.vendor.nfc.streset libstreset21
     setprop persist.vendor.se.streset libstreset21
diff --git a/device-bluejay.mk b/device-bluejay.mk
index a19829d..cf444ea 100644
--- a/device-bluejay.mk
+++ b/device-bluejay.mk
@@ -20,6 +20,15 @@
 TARGET_KERNEL_DIR ?= device/google/bluejay-kernel
 TARGET_BOARD_KERNEL_HEADERS := device/google/bluejay-kernel/kernel-headers
 
+ifdef RELEASE_GOOGLE_BLUEJAY_KERNEL_VERSION
+TARGET_LINUX_KERNEL_VERSION := $(RELEASE_GOOGLE_BLUEJAY_KERNEL_VERSION)
+endif
+
+ifdef RELEASE_GOOGLE_BLUEJAY_KERNEL_DIR
+TARGET_KERNEL_DIR := $(RELEASE_GOOGLE_BLUEJAY_KERNEL_DIR)
+TARGET_BOARD_KERNEL_HEADERS := $(RELEASE_GOOGLE_BLUEJAY_KERNEL_DIR)/kernel-headers
+endif
+
 $(call inherit-product-if-exists, vendor/google_devices/bluejay/prebuilts/device-vendor-bluejay.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)
@@ -42,7 +51,7 @@
 GOODIX_CONFIG_BUILD_VERSION := g7_trusty
 ifneq (,$(filter AP1%,$(RELEASE_PLATFORM_VERSION)))
 PRODUCT_SOONG_NAMESPACES += vendor/google_devices/bluejay/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/bluejay/prebuilts/firmware/fingerprint/24Q2
 else
 PRODUCT_SOONG_NAMESPACES += vendor/google_devices/bluejay/prebuilts/firmware/fingerprint/trunk
@@ -135,7 +144,7 @@
 
 # Increment the SVN for any official public releases
 PRODUCT_VENDOR_PROPERTIES += \
-    ro.vendor.build.svn=54
+    ro.vendor.build.svn=61
 
 # DCK properties based on target
 PRODUCT_PROPERTY_OVERRIDES += \
@@ -146,7 +155,7 @@
 PRODUCT_SOONG_NAMESPACES += vendor/google_devices/bluejay/prebuilts
 ifneq (,$(filter AP1%,$(RELEASE_PLATFORM_VERSION)))
 PRODUCT_SOONG_NAMESPACES += vendor/google_devices/bluejay/prebuilts/trusty/24Q1
-else ifneq (,$(filter AP2%,$(RELEASE_PLATFORM_VERSION)))
+else ifneq (,$(filter AP2% AP3%,$(RELEASE_PLATFORM_VERSION)))
 PRODUCT_SOONG_NAMESPACES += vendor/google_devices/bluejay/prebuilts/trusty/24Q2
 else
 PRODUCT_SOONG_NAMESPACES += vendor/google_devices/bluejay/prebuilts/trusty/trunk
diff --git a/gps.xml.b3 b/gps.xml.b3
index bed707a..999e86b 100644
--- a/gps.xml.b3
+++ b/gps.xml.b3
@@ -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"
@@ -89,6 +89,8 @@
        MinGpsWeekNumber="2216"
        OnChipAccMask="50"
        EnableB1C="false"
+
+       RTICacheTimeoutSec="3600"
   />
 
   <gll_features
diff --git a/gps_user.xml.b3 b/gps_user.xml.b3
index ca7ae02..fb4a5ea 100644
--- a/gps_user.xml.b3
+++ b/gps_user.xml.b3
@@ -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"
@@ -88,6 +88,8 @@
        MinGpsWeekNumber="2216"
        OnChipAccMask="50"
        EnableB1C="false"
+
+       RTICacheTimeoutSec="3600"
   />
 
   <gll_features
diff --git a/nfc/libnfc-hal-st-GB17L.conf b/nfc/libnfc-hal-st-GB17L.conf
index ef1a858..251410c 100644
--- a/nfc/libnfc-hal-st-GB17L.conf
+++ b/nfc/libnfc-hal-st-GB17L.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/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/powerstats/bluejay/service.cpp b/powerstats/bluejay/service.cpp
index 2138fa3..7649d8e 100644
--- a/powerstats/bluejay/service.cpp
+++ b/powerstats/bluejay/service.cpp
@@ -34,17 +34,24 @@
 
 void addDisplay(std::shared_ptr<PowerStats> p) {
     // Add display residency stats
-    std::vector<std::string> states = {
-        "Off",
-        "LP: 1080x2400@30",
-        "On: 1080x2400@60",
-        "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",
+            "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));
+    }
 
     // Add display energy consumer
     p->addEnergyConsumer(PowerStatsEnergyConsumer::createMeterAndEntityConsumer(
@@ -66,18 +73,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/self-extractors/google_devices/staging/Android.mk.template b/self-extractors/google_devices/staging/Android.mk.template
index 4bb909d..6c380d9 100644
--- a/self-extractors/google_devices/staging/Android.mk.template
+++ b/self-extractors/google_devices/staging/Android.mk.template
@@ -48,7 +48,7 @@
 LOCAL_MODULE_OWNER := samsung
 LOCAL_MODULE_CLASS := APPS
 LOCAL_SRC_FILES := $(LOCAL_MODULE).apk
-LOCAL_CERTIFICATE := platform
+LOCAL_CERTIFICATE := PRESIGNED
 LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0
 LOCAL_LICENSE_CONDITIONS := notice
 LOCAL_NOTICE_FILE := $(LOCAL_PATH)/../COPYRIGHT $(LOCAL_PATH)/../LICENSE