Update Felix SVN to 18 am: b3193d2db4

Original change: https://googleplex-android-review.googlesource.com/c/device/google/felix/+/23722149

Change-Id: Ied93d75fe55b0d72d521b98933e85bcbda19f17e
Signed-off-by: Automerger Merge Worker <[email protected]>
diff --git a/OWNERS b/OWNERS
index 1451bd8..79003ba 100644
--- a/OWNERS
+++ b/OWNERS
@@ -1 +1,4 @@
 per-file powerhint.json = [email protected],[email protected],[email protected],[email protected]
+
+# per-file for Pixel device makefiles, see go/pixel-device-mk-owner-checklist for details.
+per-file *.mk,*/BoardConfig.mk=file:device/google/gs-common:master:/OWNERS
diff --git a/audio/felix/audio-tables.mk b/audio/felix/audio-tables.mk
index 8fdb81a..8fb6642 100644
--- a/audio/felix/audio-tables.mk
+++ b/audio/felix/audio-tables.mk
@@ -20,6 +20,7 @@
 PRODUCT_COPY_FILES += \
     device/google/felix/audio/$(AUDIO_TABLE_FOLDER)/config/audio_policy_configuration_bluetooth_legacy_hal.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_policy_configuration_bluetooth_legacy_hal.xml \
     device/google/felix/audio/$(AUDIO_TABLE_FOLDER)/config/audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_policy_configuration.xml \
+    device/google/felix/audio/$(AUDIO_TABLE_FOLDER)/config/audio_policy_configuration_le_offload_disabled.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_policy_configuration_le_offload_disabled.xml \
     device/google/felix/audio/$(AUDIO_TABLE_FOLDER)/config/audio_policy_configuration_a2dp_offload_disabled.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_policy_configuration_a2dp_offload_disabled.xml \
     device/google/felix/audio/$(AUDIO_TABLE_FOLDER)/config/audio_platform_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_platform_configuration.xml \
     device/google/felix/audio/$(AUDIO_TABLE_FOLDER)/config/sound_trigger_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/sound_trigger_configuration.xml \
@@ -43,6 +44,7 @@
 # Audio tuning
 PRODUCT_COPY_FILES += \
     device/google/felix/audio/$(AUDIO_TABLE_FOLDER)/tuning/bluenote/recording.gatf:$(TARGET_COPY_OUT_VENDOR)/etc/aoc/recording.gatf \
+    device/google/felix/audio/$(AUDIO_TABLE_FOLDER)/tuning/bluenote/smartfeature.gstf:$(TARGET_COPY_OUT_VENDOR)/etc/aoc/smartfeature.gstf \
     device/google/felix/audio/$(AUDIO_TABLE_FOLDER)/tuning/fortemedia/BLUETOOTH.dat:$(TARGET_COPY_OUT_VENDOR)/etc/aoc/BLUETOOTH.dat \
     device/google/felix/audio/$(AUDIO_TABLE_FOLDER)/tuning/fortemedia/HANDSFREE.dat:$(TARGET_COPY_OUT_VENDOR)/etc/aoc/HANDSFREE.dat \
     device/google/felix/audio/$(AUDIO_TABLE_FOLDER)/tuning/fortemedia/HANDSET.dat:$(TARGET_COPY_OUT_VENDOR)/etc/aoc/HANDSET.dat \
diff --git a/audio/felix/config/audio_platform_configuration.xml b/audio/felix/config/audio_platform_configuration.xml
index 16976b4..bd62349 100644
--- a/audio/felix/config/audio_platform_configuration.xml
+++ b/audio/felix/config/audio_platform_configuration.xml
@@ -295,7 +295,7 @@
 
     <device_handle>
         <handler libname="audio_bt_aoc.so"/>
-        <handler libname="audio_usb_aoc.so" argu="MaxSamplingRate=96000,UnsupportedFormat=S24_LE"/>
+        <handler libname="audio_usb_aoc.so" argu="MaxSamplingRate=192000,UnsupportedFormat=S24_LE,MaxCapPacketInterval=125,MaxCapSampleRate=192000,MaxCapBitWidth=32,MaxCapChannel=2,EnableHifi192kMultichannel=0"/>
     </device_handle>
 
     <external_module>
diff --git a/audio/felix/config/audio_policy_configuration.xml b/audio/felix/config/audio_policy_configuration.xml
index 41b91bb..1b44390 100644
--- a/audio/felix/config/audio_policy_configuration.xml
+++ b/audio/felix/config/audio_policy_configuration.xml
@@ -166,6 +166,18 @@
                     <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
                              samplingRates="44100 48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
                 </devicePort>
+                <devicePort tagName="BT BLE Headset" type="AUDIO_DEVICE_OUT_BLE_HEADSET" role="sink"
+                            encodedFormats="AUDIO_FORMAT_LC3">
+                    <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+                             samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
+                </devicePort>
+                <devicePort tagName="BT BLE Speaker" type="AUDIO_DEVICE_OUT_BLE_SPEAKER" role="sink"
+                            encodedFormats="AUDIO_FORMAT_LC3">
+                    <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+                             samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
+                </devicePort>
+                <devicePort tagName="BLE Headset Mic" type="AUDIO_DEVICE_IN_BLE_HEADSET" role="source">
+                </devicePort>
                 <devicePort tagName="USB Device In" type="AUDIO_DEVICE_IN_USB_DEVICE" role="source">
                 </devicePort>
                 <devicePort tagName="USB Headset In" type="AUDIO_DEVICE_IN_USB_HEADSET" role="source">
@@ -183,34 +195,38 @@
                 <route type="mix" sink="Earpiece"
                        sources="primary output,deep buffer,haptic,raw,compressed_offload,mmap_no_irq_out,voip_rx"/>
                 <route type="mix" sink="BT A2DP Out"
-                       sources="primary output,deep buffer,haptic,compressed_offload,voip_rx,immersive_out"/>
+                       sources="primary output,deep buffer,haptic,compressed_offload,voip_rx,immersive_out,raw,mmap_no_irq_out"/>
                 <route type="mix" sink="BT A2DP Headphones"
-                       sources="primary output,deep buffer,haptic,compressed_offload,voip_rx,immersive_out"/>
+                       sources="primary output,deep buffer,haptic,compressed_offload,voip_rx,immersive_out,raw,mmap_no_irq_out"/>
                 <route type="mix" sink="BT A2DP Speaker"
-                       sources="primary output,deep buffer,haptic,compressed_offload,voip_rx,immersive_out"/>
+                       sources="primary output,deep buffer,haptic,compressed_offload,voip_rx,immersive_out,raw,mmap_no_irq_out"/>
+                <route type="mix" sink="BT BLE Headset"
+                       sources="primary output,deep buffer,haptic,compressed_offload,voip_rx,immersive_out,raw,mmap_no_irq_out"/>
+                <route type="mix" sink="BT BLE Speaker"
+                       sources="primary output,deep buffer,haptic,compressed_offload,voip_rx,immersive_out,raw,mmap_no_irq_out"/>
                 <route type="mix" sink="USB Device Out"
                        sources="primary output,deep buffer,haptic,raw,compressed_offload,mmap_no_irq_out,voip_rx,hifi_playback,immersive_out"/>
                 <route type="mix" sink="USB Headset Out"
                        sources="primary output,deep buffer,haptic,raw,compressed_offload,mmap_no_irq_out,voip_rx,hifi_playback,immersive_out"/>
                 <route type="mix" sink="BT SCO"
-                       sources="primary output,deep buffer,haptic,compressed_offload,voip_rx"/>
+                       sources="primary output,deep buffer,haptic,compressed_offload,voip_rx,raw,mmap_no_irq_out"/>
                 <route type="mix" sink="BT SCO Headset"
-                       sources="primary output,deep buffer,haptic,compressed_offload,voip_rx"/>
+                       sources="primary output,deep buffer,haptic,compressed_offload,voip_rx,raw,mmap_no_irq_out"/>
                 <route type="mix" sink="BT SCO Car Kit"
-                       sources="primary output,deep buffer,haptic,compressed_offload,voip_rx"/>
+                       sources="primary output,deep buffer,haptic,compressed_offload,voip_rx,raw,mmap_no_irq_out"/>
                 <route type="mix" sink="Telephony Tx" sources="incall playback,voice call tx" />
                 <route type="mix" sink="primary input"
-                       sources="Built-In Mic,Built-In Back Mic,USB Device In,USB Headset In,BT SCO Headset Mic"/>
+                       sources="Built-In Mic,Built-In Back Mic,USB Device In,USB Headset In,BT SCO Headset Mic,BLE Headset Mic"/>
                 <route type="mix" sink="hotword input"
-                       sources="Built-In Mic,Built-In Back Mic,USB Device In,USB Headset In,BT SCO Headset Mic"/>
+                       sources="Built-In Mic,Built-In Back Mic,USB Device In,USB Headset In,BT SCO Headset Mic,BLE Headset Mic"/>
                 <route type="mix" sink="incall capture" sources="Voice Call And Telephony Rx" />
                 <route type="mix" sink="voice call rx" sources="Voice Call And Telephony Rx" />
                 <route type="mix" sink="voip_tx"
-                       sources="Built-In Mic,Built-In Back Mic,USB Device In,USB Headset In,BT SCO Headset Mic"/>
+                       sources="Built-In Mic,Built-In Back Mic,USB Device In,USB Headset In,BT SCO Headset Mic,BLE Headset Mic"/>
                 <route type="mix" sink="fast input"
-                       sources="Built-In Mic,Built-In Back Mic,USB Device In,USB Headset In"/>
+                       sources="Built-In Mic,Built-In Back Mic,USB Device In,USB Headset In,BT SCO Headset Mic"/>
                 <route type="mix" sink="mmap_no_irq_in"
-                       sources="Built-In Mic,Built-In Back Mic,USB Device In,USB Headset In"/>
+                       sources="Built-In Mic,Built-In Back Mic,USB Device In,USB Headset In,BT SCO Headset Mic"/>
                 <route type="mix" sink="hifi_input" sources="USB Device In,USB Headset In" />
                 <route type="mix" sink="echo_ref_input" sources="Echo Ref In"/>
             </routes>
diff --git a/audio/felix/config/audio_policy_configuration_a2dp_offload_disabled.xml b/audio/felix/config/audio_policy_configuration_a2dp_offload_disabled.xml
index b4eaf0c..eb8560c 100644
--- a/audio/felix/config/audio_policy_configuration_a2dp_offload_disabled.xml
+++ b/audio/felix/config/audio_policy_configuration_a2dp_offload_disabled.xml
@@ -173,11 +173,11 @@
                 <route type="mix" sink="USB Headset Out"
                        sources="primary output,deep buffer,haptic,raw,compressed_offload,mmap_no_irq_out,voip_rx,hifi_playback,immersive_out"/>
                 <route type="mix" sink="BT SCO"
-                       sources="primary output,deep buffer,haptic,compressed_offload,voip_rx"/>
+                       sources="primary output,deep buffer,haptic,compressed_offload,voip_rx,raw,mmap_no_irq_out"/>
                 <route type="mix" sink="BT SCO Headset"
-                       sources="primary output,deep buffer,haptic,compressed_offload,voip_rx"/>
+                       sources="primary output,deep buffer,haptic,compressed_offload,voip_rx,raw,mmap_no_irq_out"/>
                 <route type="mix" sink="BT SCO Car Kit"
-                       sources="primary output,deep buffer,haptic,compressed_offload,voip_rx"/>
+                       sources="primary output,deep buffer,haptic,compressed_offload,voip_rx,raw,mmap_no_irq_out"/>
                 <route type="mix" sink="Telephony Tx" sources="incall playback,voice call tx" />
                 <route type="mix" sink="primary input"
                        sources="Built-In Mic,Built-In Back Mic,USB Device In,USB Headset In,BT SCO Headset Mic"/>
@@ -188,9 +188,9 @@
                 <route type="mix" sink="voip_tx"
                        sources="Built-In Mic,Built-In Back Mic,USB Device In,USB Headset In,BT SCO Headset Mic"/>
                 <route type="mix" sink="fast input"
-                       sources="Built-In Mic,Built-In Back Mic,USB Device In,USB Headset In"/>
+                       sources="Built-In Mic,Built-In Back Mic,USB Device In,USB Headset In,BT SCO Headset Mic"/>
                 <route type="mix" sink="mmap_no_irq_in"
-                       sources="Built-In Mic,Built-In Back Mic,USB Device In,USB Headset In"/>
+                       sources="Built-In Mic,Built-In Back Mic,USB Device In,USB Headset In,BT SCO Headset Mic"/>
                 <route type="mix" sink="hifi_input" sources="USB Device In,USB Headset In" />
                 <route type="mix" sink="echo_ref_input" sources="Echo Ref In"/>
             </routes>
diff --git a/audio/felix/config/audio_policy_configuration_bluetooth_legacy_hal.xml b/audio/felix/config/audio_policy_configuration_bluetooth_legacy_hal.xml
index 7fd7f28..1863d5a 100644
--- a/audio/felix/config/audio_policy_configuration_bluetooth_legacy_hal.xml
+++ b/audio/felix/config/audio_policy_configuration_bluetooth_legacy_hal.xml
@@ -169,11 +169,11 @@
                 <route type="mix" sink="USB Headset Out"
                        sources="primary output,deep buffer,haptic,raw,compressed_offload,mmap_no_irq_out,voip_rx,hifi_playback,immersive_out"/>
                 <route type="mix" sink="BT SCO"
-                       sources="primary output,deep buffer,haptic,compressed_offload,voip_rx"/>
+                       sources="primary output,deep buffer,haptic,compressed_offload,voip_rx,raw,mmap_no_irq_out"/>
                 <route type="mix" sink="BT SCO Headset"
-                       sources="primary output,deep buffer,haptic,compressed_offload,voip_rx"/>
+                       sources="primary output,deep buffer,haptic,compressed_offload,voip_rx,raw,mmap_no_irq_out"/>
                 <route type="mix" sink="BT SCO Car Kit"
-                       sources="primary output,deep buffer,haptic,compressed_offload,voip_rx"/>
+                       sources="primary output,deep buffer,haptic,compressed_offload,voip_rx,raw,mmap_no_irq_out"/>
                 <route type="mix" sink="Telephony Tx" sources="incall playback,voice call tx" />
                 <route type="mix" sink="primary input"
                        sources="Built-In Mic,Built-In Back Mic,USB Device In,USB Headset In,BT SCO Headset Mic"/>
@@ -184,9 +184,9 @@
                 <route type="mix" sink="voip_tx"
                        sources="Built-In Mic,Built-In Back Mic,USB Device In,USB Headset In,BT SCO Headset Mic"/>
                 <route type="mix" sink="fast input"
-                       sources="Built-In Mic,Built-In Back Mic,USB Device In,USB Headset In"/>
+                       sources="Built-In Mic,Built-In Back Mic,USB Device In,USB Headset In,BT SCO Headset Mic"/>
                 <route type="mix" sink="mmap_no_irq_in"
-                       sources="Built-In Mic,Built-In Back Mic,USB Device In,USB Headset In"/>
+                       sources="Built-In Mic,Built-In Back Mic,USB Device In,USB Headset In,BT SCO Headset Mic"/>
                 <route type="mix" sink="hifi_input" sources="USB Device In,USB Headset In" />
                 <route type="mix" sink="echo_ref_input" sources="Echo Ref In"/>
             </routes>
diff --git a/audio/felix/config/audio_policy_configuration_le_offload_disabled.xml b/audio/felix/config/audio_policy_configuration_le_offload_disabled.xml
new file mode 100644
index 0000000..bf54670
--- /dev/null
+++ b/audio/felix/config/audio_policy_configuration_le_offload_disabled.xml
@@ -0,0 +1,249 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<!-- Copyright (C) 2020 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.
+-->
+<audioPolicyConfiguration version="7.0" xmlns:xi="http://www.w3.org/2001/XInclude">
+    <globalConfiguration speaker_drc_enabled="false" call_screen_mode_supported="true" />
+    <modules>
+        <!-- Primary Audio HAL -->
+        <module name="primary" halVersion="2.0">
+            <attachedDevices>
+                <item>Speaker</item>
+                <item>Speaker Safe</item>
+                <item>Earpiece</item>
+                <item>Built-In Mic</item>
+                <item>Built-In Back Mic</item>
+                <item>Telephony Tx</item>
+                <item>Voice Call And Telephony Rx</item>
+                <item>Echo Ref In</item>
+            </attachedDevices>
+            <defaultOutputDevice>Speaker</defaultOutputDevice>
+            <mixPorts>
+                <mixPort name="primary output" role="source" flags="AUDIO_OUTPUT_FLAG_PRIMARY AUDIO_OUTPUT_FLAG_FAST">
+                    <profile name="" format="AUDIO_FORMAT_PCM_FLOAT"
+                             samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
+                </mixPort>
+                <mixPort name="deep buffer" role="source" flags="AUDIO_OUTPUT_FLAG_DEEP_BUFFER">
+                    <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+                             samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
+                </mixPort>
+                <mixPort name="compressed_offload" role="source"
+                         flags="AUDIO_OUTPUT_FLAG_DIRECT AUDIO_OUTPUT_FLAG_COMPRESS_OFFLOAD AUDIO_OUTPUT_FLAG_NON_BLOCKING">
+                    <profile name="" format="AUDIO_FORMAT_MP3"
+                             samplingRates="8000 16000 24000 32000 44100 48000"
+                             channelMasks="AUDIO_CHANNEL_OUT_STEREO AUDIO_CHANNEL_OUT_MONO"/>
+                    <profile name="" format="AUDIO_FORMAT_AAC_LC"
+                             samplingRates="8000 16000 24000 32000 44100 48000"
+                             channelMasks="AUDIO_CHANNEL_OUT_STEREO AUDIO_CHANNEL_OUT_MONO"/>
+                    <profile name="" format="AUDIO_FORMAT_AAC_HE_V1"
+                             samplingRates="8000 16000 24000 32000 44100 48000"
+                             channelMasks="AUDIO_CHANNEL_OUT_STEREO AUDIO_CHANNEL_OUT_MONO"/>
+                    <profile name="" format="AUDIO_FORMAT_AAC_HE_V2"
+                             samplingRates="8000 16000 24000 32000 44100 48000"
+                             channelMasks="AUDIO_CHANNEL_OUT_STEREO AUDIO_CHANNEL_OUT_MONO"/>
+                </mixPort>
+                <mixPort name="haptic" role="source">
+                    <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+                             samplingRates="48000"
+                             channelMasks="AUDIO_CHANNEL_OUT_STEREO_HAPTIC_AB" />
+                </mixPort>
+                <mixPort name="raw" role="source" flags="AUDIO_OUTPUT_FLAG_RAW AUDIO_OUTPUT_FLAG_FAST">
+                    <profile name="" format="AUDIO_FORMAT_PCM_32_BIT"
+                             samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
+                </mixPort>
+                <mixPort name="mmap_no_irq_out" role="source" flags="AUDIO_OUTPUT_FLAG_DIRECT AUDIO_OUTPUT_FLAG_MMAP_NOIRQ">
+                    <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+                             samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
+                </mixPort>
+                <mixPort name="immersive_out" role="source" flags="AUDIO_OUTPUT_FLAG_SPATIALIZER">
+                    <profile name="" format="AUDIO_FORMAT_PCM_32_BIT"
+                             samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
+                </mixPort>
+                <mixPort name="incall playback" role="source"
+                         flags="AUDIO_OUTPUT_FLAG_INCALL_MUSIC">
+                    <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+                             samplingRates="48000"
+                             channelMasks="AUDIO_CHANNEL_OUT_STEREO" />
+                </mixPort>
+                <mixPort name="voice call tx" role="source">
+                    <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+                             samplingRates="48000"
+                             channelMasks="AUDIO_CHANNEL_OUT_STEREO" />
+                </mixPort>
+                <mixPort name="voip_rx" role="source"
+                         flags="AUDIO_OUTPUT_FLAG_VOIP_RX">
+                    <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+                           samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
+                </mixPort>
+                <mixPort name="primary input" role="sink">
+                    <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+                             samplingRates="48000"
+                             channelMasks="AUDIO_CHANNEL_IN_MONO AUDIO_CHANNEL_IN_STEREO AUDIO_CHANNEL_INDEX_MASK_3"/>
+                </mixPort>
+                <mixPort name="hotword input" role="sink" flags="AUDIO_INPUT_FLAG_HW_HOTWORD" maxActiveCount="0" >
+                    <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+                             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">
+                    <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+                             samplingRates="48000"
+                             channelMasks="AUDIO_CHANNEL_IN_MONO"/>
+                </mixPort>
+                <mixPort name="voice call rx" role="sink">
+                    <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+                             samplingRates="48000"
+                             channelMasks="AUDIO_CHANNEL_IN_MONO"/>
+                </mixPort>
+                <mixPort name="voip_tx" role="sink"
+                         flags="AUDIO_INPUT_FLAG_VOIP_TX">
+                    <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+                             samplingRates="48000" channelMasks="AUDIO_CHANNEL_IN_MONO"/>
+                </mixPort>
+                <mixPort name="fast input" role="sink" flags="AUDIO_INPUT_FLAG_RAW AUDIO_INPUT_FLAG_FAST">
+                    <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+                             samplingRates="48000"
+                             channelMasks="AUDIO_CHANNEL_IN_MONO AUDIO_CHANNEL_IN_STEREO"/>
+                </mixPort>
+                <mixPort name="mmap_no_irq_in" role="sink" flags="AUDIO_INPUT_FLAG_MMAP_NOIRQ">
+                    <profile name="" format="AUDIO_FORMAT_PCM_32_BIT"
+                             samplingRates="48000"
+                             channelMasks="AUDIO_CHANNEL_IN_MONO AUDIO_CHANNEL_IN_STEREO"/>
+                </mixPort>
+                <mixPort name="hifi_playback" role="source" />
+                <mixPort name="hifi_input" role="sink" />
+                <mixPort name="echo_ref_input" role="sink">
+                    <profile name="" format="AUDIO_FORMAT_PCM_32_BIT"
+                             samplingRates="48000"
+                             channelMasks="AUDIO_CHANNEL_IN_STEREO"/>
+                </mixPort>
+            </mixPorts>
+            <devicePorts>
+                <!-- Output devices declaration, i.e. Sink DEVICE PORT -->
+                <devicePort tagName="Earpiece" type="AUDIO_DEVICE_OUT_EARPIECE" role="sink">
+                </devicePort>
+                <devicePort tagName="Speaker" type="AUDIO_DEVICE_OUT_SPEAKER" role="sink">
+                </devicePort>
+                <devicePort tagName="Speaker Safe" type="AUDIO_DEVICE_OUT_SPEAKER_SAFE" role="sink">
+                </devicePort>
+                <devicePort tagName="BT SCO" type="AUDIO_DEVICE_OUT_BLUETOOTH_SCO" role="sink">
+                </devicePort>
+                <devicePort tagName="BT SCO Headset" type="AUDIO_DEVICE_OUT_BLUETOOTH_SCO_HEADSET" role="sink">
+                </devicePort>
+                <devicePort tagName="BT SCO Car Kit" type="AUDIO_DEVICE_OUT_BLUETOOTH_SCO_CARKIT" role="sink">
+                </devicePort>
+                <devicePort tagName="USB Device Out" type="AUDIO_DEVICE_OUT_USB_DEVICE" role="sink">
+                </devicePort>
+                <devicePort tagName="USB Headset Out" type="AUDIO_DEVICE_OUT_USB_HEADSET" role="sink">
+                </devicePort>
+                <devicePort tagName="Telephony Tx" type="AUDIO_DEVICE_OUT_TELEPHONY_TX" role="sink">
+                </devicePort>
+                <!-- Input devices declaration, i.e. Source DEVICE PORT -->
+                <devicePort tagName="Built-In Mic" type="AUDIO_DEVICE_IN_BUILTIN_MIC" role="source">
+                </devicePort>
+                <devicePort tagName="Built-In Back Mic" type="AUDIO_DEVICE_IN_BACK_MIC" role="source">
+                </devicePort>
+                <devicePort tagName="BT SCO Headset Mic" type="AUDIO_DEVICE_IN_BLUETOOTH_SCO_HEADSET" role="source">
+                </devicePort>
+                <devicePort tagName="BT A2DP Out" type="AUDIO_DEVICE_OUT_BLUETOOTH_A2DP" role="sink"
+                            encodedFormats="AUDIO_FORMAT_OPUS AUDIO_FORMAT_AAC AUDIO_FORMAT_SBC">
+                    <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+                             samplingRates="44100 48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
+                </devicePort>
+                <devicePort tagName="BT A2DP Headphones" type="AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_HEADPHONES" role="sink"
+                            encodedFormats="AUDIO_FORMAT_OPUS AUDIO_FORMAT_AAC AUDIO_FORMAT_SBC">
+                    <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+                             samplingRates="44100 48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
+                </devicePort>
+                <devicePort tagName="BT A2DP Speaker" type="AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_SPEAKER" role="sink"
+                            encodedFormats="AUDIO_FORMAT_OPUS AUDIO_FORMAT_AAC AUDIO_FORMAT_SBC">
+                    <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+                             samplingRates="44100 48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
+                </devicePort>
+                <devicePort tagName="USB Device In" type="AUDIO_DEVICE_IN_USB_DEVICE" role="source">
+                </devicePort>
+                <devicePort tagName="USB Headset In" type="AUDIO_DEVICE_IN_USB_HEADSET" role="source">
+                </devicePort>
+                <!-- AUDIO_DEVICE_IN_VOICE_CALL and AUDIO_DEVICE_IN_TELEPHONY_RX are in the same value -->
+                <devicePort tagName="Voice Call And Telephony Rx" type="AUDIO_DEVICE_IN_VOICE_CALL" role="source">
+                </devicePort>
+                <devicePort tagName="Echo Ref In" type="AUDIO_DEVICE_IN_ECHO_REFERENCE" role="source">
+                </devicePort>
+            </devicePorts>
+            <!-- route declaration, i.e. list all available sources for a given sink -->
+            <routes>
+                <route type="mix" sink="Speaker"
+                       sources="primary output,deep buffer,haptic,raw,compressed_offload,mmap_no_irq_out,voip_rx,immersive_out"/>
+                <route type="mix" sink="Earpiece"
+                       sources="primary output,deep buffer,haptic,raw,compressed_offload,mmap_no_irq_out,voip_rx"/>
+                <route type="mix" sink="BT A2DP Out"
+                       sources="primary output,deep buffer,haptic,compressed_offload,voip_rx,immersive_out,raw,mmap_no_irq_out"/>
+                <route type="mix" sink="BT A2DP Headphones"
+                       sources="primary output,deep buffer,haptic,compressed_offload,voip_rx,immersive_out,raw,mmap_no_irq_out"/>
+                <route type="mix" sink="BT A2DP Speaker"
+                       sources="primary output,deep buffer,haptic,compressed_offload,voip_rx,immersive_out,raw,mmap_no_irq_out"/>
+                <route type="mix" sink="USB Device Out"
+                       sources="primary output,deep buffer,haptic,raw,compressed_offload,mmap_no_irq_out,voip_rx,hifi_playback,immersive_out"/>
+                <route type="mix" sink="USB Headset Out"
+                       sources="primary output,deep buffer,haptic,raw,compressed_offload,mmap_no_irq_out,voip_rx,hifi_playback,immersive_out"/>
+                <route type="mix" sink="BT SCO"
+                       sources="primary output,deep buffer,haptic,compressed_offload,voip_rx,raw,mmap_no_irq_out"/>
+                <route type="mix" sink="BT SCO Headset"
+                       sources="primary output,deep buffer,haptic,compressed_offload,voip_rx,raw,mmap_no_irq_out"/>
+                <route type="mix" sink="BT SCO Car Kit"
+                       sources="primary output,deep buffer,haptic,compressed_offload,voip_rx,raw,mmap_no_irq_out"/>
+                <route type="mix" sink="Telephony Tx" sources="incall playback,voice call tx" />
+                <route type="mix" sink="primary input"
+                       sources="Built-In Mic,Built-In Back Mic,USB Device In,USB Headset In,BT SCO Headset Mic"/>
+                <route type="mix" sink="hotword input"
+                       sources="Built-In Mic,Built-In Back Mic,USB Device In,USB Headset In,BT SCO Headset Mic"/>
+                <route type="mix" sink="incall capture" sources="Voice Call And Telephony Rx" />
+                <route type="mix" sink="voice call rx" sources="Voice Call And Telephony Rx" />
+                <route type="mix" sink="voip_tx"
+                       sources="Built-In Mic,Built-In Back Mic,USB Device In,USB Headset In,BT SCO Headset Mic"/>
+                <route type="mix" sink="fast input"
+                       sources="Built-In Mic,Built-In Back Mic,USB Device In,USB Headset In,BT SCO Headset Mic"/>
+                <route type="mix" sink="mmap_no_irq_in"
+                       sources="Built-In Mic,Built-In Back Mic,USB Device In,USB Headset In,BT SCO Headset Mic"/>
+                <route type="mix" sink="hifi_input" sources="USB Device In,USB Headset In" />
+                <route type="mix" sink="echo_ref_input" sources="Echo Ref In"/>
+            </routes>
+        </module>
+        <!-- Bluetooth Audio HAL -->
+        <xi:include href="bluetooth_audio_policy_configuration_7_0.xml"/>
+        <!-- Usb Audio HAL -->
+        <module name="usbv2" halVersion="2.0">
+            <mixPorts>
+                <mixPort name="usb_accessory output" role="source">
+                    <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+                             samplingRates="44100" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
+                </mixPort>
+            </mixPorts>
+            <devicePorts>
+                <devicePort tagName="USB Host Out" type="AUDIO_DEVICE_OUT_USB_ACCESSORY" role="sink">
+                    <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+                             samplingRates="44100" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
+                </devicePort>
+            </devicePorts>
+            <routes>
+                <route type="mix" sink="USB Host Out"
+                       sources="usb_accessory output"/>
+            </routes>
+        </module>
+        <!-- Remote Submix Audio HAL -->
+        <xi:include href="r_submix_audio_policy_configuration.xml"/>
+    </modules>
+    <!-- End of Modules section -->
+    <!-- Volume section -->
+    <xi:include href="audio_policy_volumes.xml"/>
+    <xi:include href="default_volume_tables.xml"/>
+    <!-- End of Volume section -->
+</audioPolicyConfiguration>
diff --git a/audio/felix/config/mixer_paths.xml b/audio/felix/config/mixer_paths.xml
index ca5f366..35f399f 100644
--- a/audio/felix/config/mixer_paths.xml
+++ b/audio/felix/config/mixer_paths.xml
@@ -175,6 +175,7 @@
     <ctl name="BT_RX Mixer NoHost1" value="0"/>
     <ctl name="BT_RX Mixer VOIP" value="0"/>
     <ctl name="BT_RX Mixer IMSV" value="0"/>
+    <ctl name="BT_RX Mixer RAW" value="0"/>
 
     <ctl name="INCALL_RX Mixer EP1" value="0"/>
     <ctl name="INCALL_RX Mixer EP2" value="0"/>
@@ -409,6 +410,10 @@
         <ctl name="USB_RX Mixer RAW" value="1"/>
     </path>
 
+    <path name="raw-playbackP bt">
+        <ctl name="BT_RX Mixer RAW" value="1"/>
+    </path>
+
     <path name="raw-playbackP hearing-aid">
     </path>
 
@@ -423,6 +428,10 @@
         <ctl name="USB_RX Mixer EP1" value="1"/>
     </path>
 
+    <path name="mmap-playbackP bt">
+        <ctl name="BT_RX Mixer EP1" value="1"/>
+    </path>
+
     <path name="mmap-playbackP hearing-aid">
     </path>
 
@@ -620,6 +629,10 @@
         <ctl name="EP3 TX Mixer USB_TX" value="1"/>
     </path>
 
+    <path name="low-latency-recordC bt-mic">
+        <ctl name="EP3 TX Mixer BT_TX" value="1"/>
+    </path>
+
     <path name="mmap-recordC">
         <ctl name="EP2 TX Mixer INTERNAL_MIC_TX" value="1"/>
     </path>
@@ -628,6 +641,10 @@
         <ctl name="EP2 TX Mixer USB_TX" value="1"/>
     </path>
 
+    <path name="mmap-recordC bt-mic">
+        <ctl name="EP2 TX Mixer BT_TX" value="1"/>
+    </path>
+
     <!-- codec setting -->>
     <!-- Rx device -->
     <path name="handset">
diff --git a/audio/felix/tuning/bluenote/smartfeature.gstf b/audio/felix/tuning/bluenote/smartfeature.gstf
new file mode 100644
index 0000000..d174ae3
--- /dev/null
+++ b/audio/felix/tuning/bluenote/smartfeature.gstf
Binary files differ
diff --git a/bluetooth/le_audio_codec_capabilities.xml b/bluetooth/le_audio_codec_capabilities.xml
new file mode 100644
index 0000000..89d0de6
--- /dev/null
+++ b/bluetooth/le_audio_codec_capabilities.xml
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!---
+  This is an example to configure LE Audio hardware offload supported capability settings
+  codecConfigurationList:
+    Supported codec capability along with its parameter setting
+
+  strategyConfigurationList:
+     ASE Configuration strategies
+
+  configurationList:
+    For each configuration, there are two attributes
+      - codecConfiguration
+      - strategyConfiguration
+
+  scenarioList:
+    There would be only one `scenarios` group
+    For each scenario, the are two attributes
+      - encode
+      - decode
+    If a scenario is unidirectional, mark another direction as `invalid`
+    The configuration should be chosen from `configurationList`
+-->
+<leAudioOffloadSetting>
+  <scenarioList>
+    <!-- encode only -->
+    <scenario encode="OneChanMono_16_1" decode="invalid"/>
+    <scenario encode="TwoChanStereo_16_1" decode="invalid"/>
+    <scenario encode="OneChanStereo_16_1" decode="invalid"/>
+    <scenario encode="OneChanMono_16_2" decode="invalid"/>
+    <scenario encode="TwoChanStereo_16_2" decode="invalid"/>
+    <scenario encode="OneChanStereo_16_2" decode="invalid"/>
+    <scenario encode="OneChanMono_24_2" decode="invalid"/>
+    <scenario encode="TwoChanStereo_24_2" decode="invalid"/>
+    <scenario encode="OneChanStereo_24_2" decode="invalid"/>
+    <scenario encode="OneChanMono_48_4" decode="invalid"/>
+    <scenario encode="TwoChanStereo_48_4" decode="invalid"/>
+    <scenario encode="OneChanStereo_48_4" decode="invalid"/>
+    <!-- encode and decode -->
+    <scenario encode="OneChanStereo_16_1" decode="OneChanStereo_16_1"/>
+    <scenario encode="OneChanStereo_16_1" decode="OneChanMono_16_1"/>
+    <scenario encode="TwoChanStereo_16_1" decode="OneChanMono_16_1"/>
+    <scenario encode="OneChanMono_16_1" decode="OneChanMono_16_1"/>
+    <scenario encode="OneChanStereo_16_2" decode="OneChanStereo_16_2"/>
+    <scenario encode="OneChanStereo_16_2" decode="OneChanMono_16_2"/>
+    <scenario encode="TwoChanStereo_16_2" decode="OneChanMono_16_2"/>
+    <scenario encode="OneChanMono_16_2" decode="OneChanMono_16_2"/>
+    <scenario encode="TwoChanStereo_32_2" decode="OneChanMono_32_2"/>
+    <scenario encode="OneChanMono_32_2" decode="OneChanMono_32_2"/>
+  </scenarioList>
+  <configurationList>
+    <configuration name="OneChanMono_16_1" codecConfiguration="LC3_16k_1" strategyConfiguration="MONO_ONE_CIS_PER_DEVICE"/>
+    <configuration name="TwoChanStereo_16_1" codecConfiguration="LC3_16k_1" strategyConfiguration="STEREO_TWO_CISES_PER_DEVICE"/>
+    <configuration name="OneChanStereo_16_1" codecConfiguration="LC3_16k_1" strategyConfiguration="STEREO_ONE_CIS_PER_DEVICE"/>
+    <configuration name="OneChanMono_16_2" codecConfiguration="LC3_16k_2" strategyConfiguration="MONO_ONE_CIS_PER_DEVICE"/>
+    <configuration name="TwoChanStereo_16_2" codecConfiguration="LC3_16k_2" strategyConfiguration="STEREO_TWO_CISES_PER_DEVICE"/>
+    <configuration name="OneChanStereo_16_2" codecConfiguration="LC3_16k_2" strategyConfiguration="STEREO_ONE_CIS_PER_DEVICE"/>
+    <configuration name="OneChanMono_24_2" codecConfiguration="LC3_24k_2" strategyConfiguration="MONO_ONE_CIS_PER_DEVICE"/>
+    <configuration name="TwoChanStereo_24_2" codecConfiguration="LC3_24k_2" strategyConfiguration="STEREO_TWO_CISES_PER_DEVICE"/>
+    <configuration name="OneChanStereo_24_2" codecConfiguration="LC3_24k_2" strategyConfiguration="STEREO_ONE_CIS_PER_DEVICE"/>
+    <configuration name="OneChanMono_48_4" codecConfiguration="LC3_48k_4" strategyConfiguration="MONO_ONE_CIS_PER_DEVICE"/>
+    <configuration name="TwoChanStereo_32_2" codecConfiguration="LC3_32k_2" strategyConfiguration="STEREO_TWO_CISES_PER_DEVICE"/>
+    <configuration name="OneChanMono_32_2" codecConfiguration="LC3_32k_2" strategyConfiguration="MONO_ONE_CIS_PER_DEVICE"/>
+    <configuration name="TwoChanStereo_48_4" codecConfiguration="LC3_48k_4" strategyConfiguration="STEREO_TWO_CISES_PER_DEVICE"/>
+    <configuration name="OneChanStereo_48_4" codecConfiguration="LC3_48k_4" strategyConfiguration="STEREO_ONE_CIS_PER_DEVICE"/>
+  </configurationList>
+  <codecConfigurationList>
+    <codecConfiguration name="LC3_16k_1" codec="LC3" samplingFrequency="16000" frameDurationUs="7500" octetsPerCodecFrame="30"/>
+    <codecConfiguration name="LC3_16k_2" codec="LC3" samplingFrequency="16000" frameDurationUs="10000" octetsPerCodecFrame="40"/>
+    <codecConfiguration name="LC3_24k_2" codec="LC3" samplingFrequency="24000" frameDurationUs="10000" octetsPerCodecFrame="60"/>
+    <codecConfiguration name="LC3_32k_2" codec="LC3" samplingFrequency="32000" frameDurationUs="10000" octetsPerCodecFrame="80"/>
+    <codecConfiguration name="LC3_48k_4" codec="LC3" samplingFrequency="48000" frameDurationUs="10000" octetsPerCodecFrame="120"/>
+  </codecConfigurationList>
+  <strategyConfigurationList>
+    <strategyConfiguration name="STEREO_ONE_CIS_PER_DEVICE" audioLocation="STEREO" connectedDevice="2" channelCount="1"/>
+    <strategyConfiguration name="STEREO_TWO_CISES_PER_DEVICE" audioLocation="STEREO" connectedDevice="1" channelCount="2"/>
+    <strategyConfiguration name="MONO_ONE_CIS_PER_DEVICE" audioLocation="MONO" connectedDevice="1" channelCount="1"/>
+  </strategyConfigurationList>
+</leAudioOffloadSetting>
diff --git a/bluetooth/manifest_bluetooth.xml b/bluetooth/manifest_bluetooth.xml
deleted file mode 100644
index 64238c7..0000000
--- a/bluetooth/manifest_bluetooth.xml
+++ /dev/null
@@ -1,56 +0,0 @@
-<manifest version="1.0" type="device">
-    <hal format="hidl">
-        <name>android.hardware.bluetooth</name>
-        <transport>hwbinder</transport>
-        <version>1.1</version>
-        <interface>
-            <name>IBluetoothHci</name>
-            <instance>default</instance>
-        </interface>
-    </hal>
-    <hal format="hidl">
-        <name>hardware.google.bluetooth.bt_channel_avoidance</name>
-        <transport>hwbinder</transport>
-        <version>1.0</version>
-        <interface>
-            <name>IBTChannelAvoidance</name>
-            <instance>default</instance>
-        </interface>
-    </hal>
-    <hal format="hidl">
-        <name>hardware.google.bluetooth.sar</name>
-        <transport>hwbinder</transport>
-        <version>1.1</version>
-        <interface>
-            <name>IBluetoothSar</name>
-            <instance>default</instance>
-        </interface>
-    </hal>
-    <hal format="hidl">
-        <name>hardware.google.bluetooth.ext</name>
-        <transport>hwbinder</transport>
-        <version>1.0</version>
-        <interface>
-            <name>IBluetoothExt</name>
-            <instance>default</instance>
-        </interface>
-    </hal>
-    <hal format="hidl">
-        <name>hardware.google.bluetooth.ccc</name>
-        <transport>hwbinder</transport>
-        <version>1.1</version>
-        <interface>
-            <name>IBluetoothCcc</name>
-            <instance>default</instance>
-        </interface>
-    </hal>
-    <hal format="hidl">
-        <name>hardware.google.bluetooth.ewp</name>
-        <transport>hwbinder</transport>
-        <version>1.0</version>
-        <interface>
-            <name>IBluetoothEwp</name>
-            <instance>default</instance>
-        </interface>
-    </hal>
-</manifest>
diff --git a/conf/init.felix.rc b/conf/init.felix.rc
index 838f2fd..891865b 100644
--- a/conf/init.felix.rc
+++ b/conf/init.felix.rc
@@ -11,9 +11,6 @@
     chown system system /sys/devices/platform/odm/odm:fp_fpc1020/irq
     chown system system /sys/devices/platform/odm/odm:fp_fpc1020/wakeup_enable
 
-on fs
-    exec_background - system shell -- /vendor/bin/trusty_apploader /vendor/firmware/1540.app
-
 # Permissions for hwcomposer
 on fs
     chown system system /sys/class/backlight/panel1-backlight/als_table
@@ -56,24 +53,6 @@
     chown system input /dev/touch_offload_fts_ext
     chmod 660 /dev/touch_offload_fts
     chmod 660 /dev/touch_offload_fts_ext
-    chown system system /sys/devices/virtual/goog_touch_interface/gti.0/force_active
-    chown system system /sys/devices/virtual/goog_touch_interface/gti.0/fw_ver
-    chown system system /sys/devices/virtual/goog_touch_interface/gti.0/ms_base
-    chown system system /sys/devices/virtual/goog_touch_interface/gti.0/ms_diff
-    chown system system /sys/devices/virtual/goog_touch_interface/gti.0/ms_raw
-    chown system system /sys/devices/virtual/goog_touch_interface/gti.0/self_test
-    chown system system /sys/devices/virtual/goog_touch_interface/gti.0/ss_base
-    chown system system /sys/devices/virtual/goog_touch_interface/gti.0/ss_diff
-    chown system system /sys/devices/virtual/goog_touch_interface/gti.0/ss_raw
-    chown system system /sys/devices/virtual/goog_touch_interface/gti.1/force_active
-    chown system system /sys/devices/virtual/goog_touch_interface/gti.1/fw_ver
-    chown system system /sys/devices/virtual/goog_touch_interface/gti.1/ms_base
-    chown system system /sys/devices/virtual/goog_touch_interface/gti.1/ms_diff
-    chown system system /sys/devices/virtual/goog_touch_interface/gti.1/ms_raw
-    chown system system /sys/devices/virtual/goog_touch_interface/gti.1/self_test
-    chown system system /sys/devices/virtual/goog_touch_interface/gti.1/ss_base
-    chown system system /sys/devices/virtual/goog_touch_interface/gti.1/ss_diff
-    chown system system /sys/devices/virtual/goog_touch_interface/gti.1/ss_raw
     # Start the twoshay touch service
     start twoshay
 
@@ -105,7 +84,7 @@
     wait_for_prop vendor.common.modules.ready 1
     start insmod_sh_felix
 
-service insmod_sh_felix /vendor/bin/init.insmod.sh /vendor/etc/init.insmod.felix.cfg
+service insmod_sh_felix /vendor/bin/insmod.sh /vendor/etc/init.insmod.felix.cfg
     class main
     user root
     group root system
@@ -161,14 +140,6 @@
     setprop wifi.direct.interface p2p-dev-wlan0
     setprop wifi.aware.interface aware_nmi0
 
-# Override SF and RE uclamps to 0 on boot after being set elsewhere, for adpf cpu hints
-on property:sys.boot_completed=1
-    trigger override-sf-uclamp
-
-on override-sf-uclamp
-    write /proc/vendor_sched/rt_uclamp_min 0
-    write /proc/vendor_sched/sf_uclamp_min 0
-
 # For Japan sku, always enforce camera shutter sound
 # Since this property is read by the audio server in system service,
 # it should be written by the system init.
diff --git a/device-felix.mk b/device-felix.mk
index 3c2d206..d90f252 100644
--- a/device-felix.mk
+++ b/device-felix.mk
@@ -31,7 +31,10 @@
 include device/google/gs201/device-shipping-common.mk
 $(call soong_config_set,fp_hal_feature,pixel_product, product_a)
 include device/google/felix/vibrator/cs40l26/device.mk
-include device/google/gs101/bluetooth/bluetooth.mk
+include device/google/gs-common/bcmbt/bluetooth.mk
+include device/google/gs-common/display/dump_second_display.mk
+include device/google/gs-common/touch/gti/gti.mk
+include device/google/gs-common/touch/stm/stm6.mk
 ifeq ($(filter factory_felix, $(TARGET_PRODUCT)),)
 include device/google/felix/uwb/uwb_calibration.mk
 endif
@@ -121,13 +124,6 @@
 	device/google/felix/powerhint.json:$(TARGET_COPY_OUT_VENDOR)/etc/powerhint.json
 
 # Bluetooth HAL
-DEVICE_MANIFEST_FILE += \
-	device/google/felix/bluetooth/manifest_bluetooth.xml
-PRODUCT_SOONG_NAMESPACES += \
-        vendor/broadcom/bluetooth
-PRODUCT_PACKAGES += \
-	[email protected] \
-	bt_vendor.conf
 PRODUCT_COPY_FILES += \
 	device/google/felix/bluetooth/bt_vendor_overlay.conf:$(TARGET_COPY_OUT_VENDOR)/etc/bluetooth/bt_vendor_overlay.conf
 PRODUCT_PROPERTY_OVERRIDES += \
@@ -156,6 +152,22 @@
        ro.audio.spatializer_transaural_enabled_default=false \
        persist.vendor.audio.spatializer.speaker_enabled=true
 
+# Bluetooth SAR test tool
+PRODUCT_PACKAGES_DEBUG += \
+    sar_test
+
+# Bluetooth hci_inject test tool
+PRODUCT_PACKAGES_DEBUG += \
+    hci_inject
+
+# Bluetooth
+PRODUCT_PRODUCT_PROPERTIES += \
+    persist.bluetooth.a2dp_aac.vbr_supported=true
+
+# default BDADDR for EVB only
+PRODUCT_PROPERTY_OVERRIDES += \
+	ro.vendor.bluetooth.evb_bdaddr="22:22:22:33:44:55"
+
 # Keymaster HAL
 #LOCAL_KEYMASTER_PRODUCT_PACKAGE ?= [email protected]
 
@@ -186,10 +198,6 @@
 # 	ro.hardware.keystore=software \
 # 	ro.hardware.gatekeeper=software
 
-# default BDADDR for EVB only
-PRODUCT_PROPERTY_OVERRIDES += \
-	ro.vendor.bluetooth.evb_bdaddr="22:22:22:33:44:55"
-
 # PowerStats HAL
 PRODUCT_SOONG_NAMESPACES += \
     device/google/felix/powerstats/felix \
@@ -219,23 +227,8 @@
 
 # DCK properties based on target
 PRODUCT_PROPERTY_OVERRIDES += \
-    ro.gms.dck.eligible_wcc=3
-
-# Bluetooth SAR test tool
-PRODUCT_PACKAGES_DEBUG += \
-    sar_test
-
-# Bluetooth hci_inject test tool
-PRODUCT_PACKAGES_DEBUG += \
-    hci_inject
-
-# Bluetooth
-PRODUCT_PRODUCT_PROPERTIES += \
-    persist.bluetooth.a2dp_aac.vbr_supported=true
-
-# Bluetooth HAL
-PRODUCT_PACKAGES += \
-	bt_vendor.conf
+    ro.gms.dck.eligible_wcc=3 \
+    ro.gms.dck.se_capability=1
 
 # Graphics
 PRODUCT_DEFAULT_PROPERTY_OVERRIDES += ro.surface_flinger.enable_frame_rate_override=true
@@ -281,8 +274,8 @@
         device/google/felix/location/scd_user.conf.f10:$(TARGET_COPY_OUT_VENDOR)/etc/gnss/scd.conf
 endif
 
-# WiFi
 PRODUCT_PACKAGES += \
+        UwbOverlayF10 \
         WifiOverlay2023Mid_F10
 
 # MIPI Coex Configs
@@ -298,10 +291,6 @@
 PRODUCT_COPY_FILES += \
     frameworks/native/data/etc/handheld_core_hardware.xml:$(TARGET_COPY_OUT_VENDOR)/etc/permissions/handheld_core_hardware.xml
 
-# Enable adpf cpu hint session for SurfaceFlinger
-PRODUCT_DEFAULT_PROPERTY_OVERRIDES += \
-    debug.sf.enable_adpf_cpu_hint=true
-
 # Increase thread priority for nodes stop
 PRODUCT_VENDOR_PROPERTIES += \
     persist.vendor.camera.increase_thread_priority_nodes_stop=true
@@ -312,7 +301,9 @@
 
 # Camera
 PRODUCT_PROPERTY_OVERRIDES += \
+    persist.vendor.camera.adjust_backend_min_freq_for_1p_front_video_1080p_30fps=1 \
     persist.vendor.camera.extended_launch_boost=1 \
+    persist.vendor.camera.multicam_streaming_boost=1 \
     persist.vendor.camera.optimized_tnr_freq=1 \
     persist.vendor.camera.raise_buf_allocation_priority=1 \
     persist.vendor.camera.start_cpu_throttling_at_moderate_thermal=1 \
@@ -338,3 +329,38 @@
     PRODUCT_COPY_FILES += \
         device/google/gs201/init.hardware.wlc.rc.userdebug:$(TARGET_COPY_OUT_VENDOR)/etc/init/init.wlc.rc
 endif
+
+# Bluetooth LE Audio
+PRODUCT_PRODUCT_PROPERTIES += \
+    ro.bluetooth.leaudio_offload.supported=true \
+    persist.bluetooth.leaudio_offload.disabled=false \
+    ro.bluetooth.leaudio_switcher.supported=true \
+    bluetooth.profile.bap.unicast.client.enabled=true \
+    bluetooth.profile.csip.set_coordinator.enabled=true \
+    bluetooth.profile.hap.client.enabled=true \
+    bluetooth.profile.mcp.server.enabled=true \
+    bluetooth.profile.ccp.server.enabled=true \
+    bluetooth.profile.vcp.controller.enabled=true \
+
+# Override BQR mask to enable LE Audio Choppy report
+ifneq (,$(filter userdebug eng, $(TARGET_BUILD_VARIANT)))
+PRODUCT_PRODUCT_PROPERTIES += \
+    persist.bluetooth.bqr.event_mask=262238
+else
+PRODUCT_PRODUCT_PROPERTIES += \
+    persist.bluetooth.bqr.event_mask=94
+endif
+
+# Bluetooth LE Audio CIS handover to SCO
+# Set the property only if the controller doesn't support CIS and SCO
+# simultaneously. More details in b/242908683.
+PRODUCT_PRODUCT_PROPERTIES += \
+    persist.bluetooth.leaudio.notify.idle.during.call=true
+
+# LE Audio Offload Capabilities Setting
+PRODUCT_COPY_FILES += \
+    device/google/felix/bluetooth/le_audio_codec_capabilities.xml:$(TARGET_COPY_OUT_VENDOR)/etc/le_audio_codec_capabilities.xml
+
+# Bluetooth EWP test tool
+PRODUCT_PACKAGES_DEBUG += \
+    ewp_tool
diff --git a/device_framework_matrix_product_felix.xml b/device_framework_matrix_product_felix.xml
index d6e5a71..7f4a680 100644
--- a/device_framework_matrix_product_felix.xml
+++ b/device_framework_matrix_product_felix.xml
@@ -1,18 +1,10 @@
 <compatibility-matrix version="1.0" type="framework" level="7">
     <hal format="aidl" optional="true">
       <name>com.google.hardware.pixel.display</name>
-        <version>7</version>
+        <version>8</version>
         <interface>
             <name>IDisplay</name>
             <instance>secondary</instance>
         </interface>
     </hal>
-    <hal format="hidl">
-        <name>hardware.google.bluetooth.ccc</name>
-        <version>1.1</version>
-        <interface>
-            <name>IBluetoothCcc</name>
-            <instance>default</instance>
-        </interface>
-    </hal>
 </compatibility-matrix>
diff --git a/felix/BoardConfig.mk b/felix/BoardConfig.mk
index bba58ae..856eb42 100644
--- a/felix/BoardConfig.mk
+++ b/felix/BoardConfig.mk
@@ -20,6 +20,13 @@
 USES_DEVICE_GOOGLE_FELIX := true
 BOARD_KERNEL_CMDLINE += swiotlb=noforce
 
+# Enable load module in parallel
+BOARD_BOOTCONFIG += androidboot.load_modules_parallel=true
+
+# The modules which need to be loaded in sequential
+BOARD_KERNEL_CMDLINE += exynos_drm.load_sequential=1
+BOARD_KERNEL_CMDLINE += panel-samsung-ana6707-f10.load_sequential=1
+
 #Display
 USES_IDISPLAY_INTF_SEC := true
 
diff --git a/felix/overlay/frameworks/base/core/res/res/values/config.xml b/felix/overlay/frameworks/base/core/res/res/values/config.xml
index 04458fc..1dae8a8 100644
--- a/felix/overlay/frameworks/base/core/res/res/values/config.xml
+++ b/felix/overlay/frameworks/base/core/res/res/values/config.xml
@@ -252,9 +252,6 @@
         corners. -->
     <dimen name="rounded_corner_radius_bottom_adjustment">4px</dimen>
 
-    <!-- the number of the max cached processes in the system. -->
-    <integer name="config_customizedMaxCachedProcesses">64</integer>
-
     <string-array name="config_displayUniqueIdArray" translatable="false">
         <item>"local:4619827677550801152"</item>
         <item>"local:4619827677550801153"</item>
@@ -353,6 +350,32 @@
         <item>283</item>
     </integer-array>
 
+    <!-- A string config in svg path format for the main display shape.
+         (@see https://www.w3.org/TR/SVG/paths.html#PathData).
+
+         This config must be set unless:
+         1. {@link Configuration#isScreenRound} is true which means the display shape is circular
+            and the system will auto-generate a circular shape.
+         2. The display has no rounded corner and the system will auto-generate a rectangular shape.
+         (@see DisplayShape#createDefaultDisplayShape)
+
+         Note: If the display supports multiple resolutions, please define the path config based on
+         the highest resolution so that it can be scaled correctly in each resolution. -->
+    <string name="config_mainDisplayShape">M 100 0 C 85.508984 0.17732943 53.048104 0.19614615 50.220703 0.3125 C 46.59154 0.46184817 43.772284 0.73295581 41.220703 1.1679688 C 38.669124 1.6029816 37.395897 1.9206529 34.921875 2.7285156 C 32.447853 3.5363783 30.703329 4.1333351 26.476562 6.1855469 C 22.249798 8.2377586 19.650733 10.036004 17.412109 11.853516 C 15.173487 13.671026 13.194311 15.829318 11.78125 17.480469 C 10.368189 19.131618 9.7124678 20.077609 8.4746094 22.052734 C 7.2367508 24.027858 6.4508163 25.499897 5.3867188 28 C 4.3226211 30.500103 3.0570154 34.426858 2.375 36.919922 C 1.6929846 39.412984 1.4802708 40.78808 1.1132812 42.880859 C 0.7462918 44.973638 0.57743581 46.240459 0.38867188 49.041016 C 0.16693043 52.330833 0.48349037 76.000048 0 100 L 0 1744 C 0.46414424 1767.04 0.16213582 1789.7617 0.375 1792.9199 C 0.5562164 1795.6085 0.71800182 1796.8249 1.0703125 1798.834 C 1.4226231 1800.8431 1.6265082 1802.1633 2.28125 1804.5566 C 2.9359817 1806.9499 4.1503451 1810.719 5.171875 1813.1191 C 6.1934148 1815.5192 6.9464267 1816.9339 8.1347656 1818.8301 C 9.3231146 1820.7261 9.9520539 1821.6336 11.308594 1823.2188 C 12.665132 1824.8037 14.56772 1826.8763 16.716797 1828.6211 C 18.865874 1830.3659 21.360274 1832.0924 25.417969 1834.0625 C 29.475665 1836.0326 31.150324 1836.6054 33.525391 1837.3809 C 35.900446 1838.1565 37.122749 1838.4613 39.572266 1838.8789 C 42.021789 1839.2966 44.72889 1839.5579 48.212891 1839.7012 C 50.927192 1839.813 82.088619 1839.8298 96 1840 L 2112 1840 C 2125.9114 1839.8298 2157.0728 1839.813 2159.7871 1839.7012 C 2163.2712 1839.5579 2165.9782 1839.2966 2168.4277 1838.8789 C 2170.8772 1838.4613 2172.0995 1838.1565 2174.4746 1837.3809 C 2176.8496 1836.6054 2178.5243 1836.0326 2182.582 1834.0625 C 2186.6397 1832.0924 2189.1341 1830.3659 2191.2832 1828.6211 C 2193.4322 1826.8763 2195.3349 1824.8037 2196.6914 1823.2188 C 2198.048 1821.6336 2198.6769 1820.7261 2199.8652 1818.8301 C 2201.0536 1816.9339 2201.8066 1815.5192 2202.8281 1813.1191 C 2203.8497 1810.719 2205.064 1806.9499 2205.7188 1804.5566 C 2206.3733 1802.1633 2206.5774 1800.8431 2206.9297 1798.834 C 2207.282 1796.8249 2207.4458 1795.6085 2207.627 1792.9199 C 2207.8398 1789.7617 2207.536 1767.04 2208 1744 L 2208 100 C 2207.5164 76.000048 2207.833 52.330827 2207.6113 49.041016 C 2207.4225 46.24046 2207.2537 44.973645 2206.8867 42.880859 C 2206.5197 40.788083 2206.3071 39.412986 2205.625 36.919922 C 2204.943 34.426856 2203.6774 30.500104 2202.6133 28 C 2201.5492 25.499896 2200.7632 24.02785 2199.5254 22.052734 C 2198.2875 20.077608 2197.6317 19.131615 2196.2188 17.480469 C 2194.8058 15.829311 2192.8265 13.671032 2190.5879 11.853516 C 2188.3492 10.036008 2185.7502 8.2377527 2181.5234 6.1855469 C 2177.2967 4.1333309 2175.5521 3.536384 2173.0781 2.7285156 C 2170.6041 1.9206572 2169.3309 1.6029878 2166.7793 1.1679688 C 2164.2278 0.73295958 2161.4085 0.4618497 2157.7793 0.3125 C 2154.9519 0.19615024 2122.491 0.17732964 2108 0 L 100 0 z</string>
+
+    <!-- A string config in svg path format for the secondary display shape.
+         (@see https://www.w3.org/TR/SVG/paths.html#PathData).
+
+         This config must be set unless:
+         1. {@link Configuration#isScreenRound} is true which means the display shape is circular
+            and the system will auto-generate a circular shape.
+         2. The display has no rounded corner and the system will auto-generate a rectangular shape.
+         (@see DisplayShape#createDefaultDisplayShape)
+
+         Note: If the display supports multiple resolutions, please define the path config based on
+         the highest resolution so that it can be scaled correctly in each resolution. -->
+    <string name="config_secondaryDisplayShape">M 0 0 L 0 2092 L 1080 2092 L 1080 0 L 0 0 z M 0.00390625 0.01953125 L 124 0.01953125 C 120.62607 0.01953125 117.25272 0.062897597 113.87891 0.083984375 C 110.51044 0.15345796 107.14189 0.22554494 103.77344 0.29492188 C 100.41579 0.46723528 97.056902 0.63807032 93.699219 0.81054688 C 90.373874 1.1394815 87.049926 1.4682676 83.724609 1.796875 C 80.442364 2.3249488 77.159199 2.8527856 73.876953 3.3808594 C 70.680994 4.1567209 67.48502 4.933117 64.289062 5.7089844 C 61.206262 6.7649688 58.123836 7.8209034 55.041016 8.8769531 C 52.114502 10.229372 49.188251 11.581215 46.261719 12.933594 C 43.523829 14.593085 40.784745 16.252586 38.046875 17.912109 C 35.54087 19.873307 33.035436 21.835687 30.529297 23.796875 C 28.281876 26.043695 26.03451 28.29034 23.787109 30.537109 C 21.825326 33.047838 19.864128 35.557471 17.902344 38.068359 C 16.242372 40.800045 14.581846 43.531987 12.921875 46.263672 C 11.568993 49.19466 10.216047 52.125655 8.8632812 55.056641 C 7.807047 58.133103 6.7516762 61.210488 5.6953125 64.287109 C 4.9192068 67.487547 4.1432437 70.688232 3.3671875 73.888672 C 2.8389878 77.164433 2.3096105 80.440872 1.78125 83.716797 C 1.4522193 87.04105 1.12363 90.364877 0.79492188 93.689453 C 0.62263364 97.046037 0.44979383 100.40305 0.27734375 103.75977 C 0.20771199 107.1272 0.13750064 110.49376 0.068359375 113.86133 C 0.058717095 115.40631 0.01391657 122.4354 0.00390625 123.98047 C -0.0079363164 125.80834 0.015313378 -1.8083189 0.00390625 0.01953125 z M 956 0.01953125 L 1079.998 0.01953125 C 1079.9867 -1.8083196 1080.0071 125.80834 1079.9961 123.98047 C 1079.9861 122.4354 1079.9436 115.40631 1079.9336 113.86133 C 1079.8645 110.49376 1079.7927 107.1272 1079.7227 103.75977 C 1079.5502 100.40304 1079.3774 97.046035 1079.2051 93.689453 C 1078.8763 90.364875 1078.5477 87.041057 1078.2188 83.716797 C 1077.6905 80.440877 1077.163 77.164434 1076.6348 73.888672 L 1074.3066 64.287109 C 1073.2502 61.21048 1072.1929 58.133106 1071.1367 55.056641 C 1069.784 52.125655 1068.431 49.194657 1067.0781 46.263672 C 1065.418 43.531978 1063.7596 40.800035 1062.0996 38.068359 C 1060.1378 35.557468 1058.1747 33.047839 1056.2129 30.537109 C 1053.9655 28.290338 1051.7181 26.0437 1049.4707 23.796875 C 1046.9646 21.83568 1044.4591 19.873293 1041.9531 17.912109 C 1039.2153 16.252583 1036.4761 14.593089 1033.7383 12.933594 C 1030.8117 11.581217 1027.8856 10.229372 1024.959 8.8769531 C 1021.8762 7.8209026 1018.7938 6.7649692 1015.7109 5.7089844 C 1012.515 4.933117 1009.3189 4.1567207 1006.123 3.3808594 C 1002.8407 2.8527853 999.55759 2.324948 996.27539 1.796875 C 992.95004 1.4682674 989.62616 1.1394813 986.30078 0.81054688 C 982.94306 0.63807038 979.58423 0.46723542 976.22656 0.29492188 C 972.85807 0.22554451 969.48959 0.15345499 966.12109 0.083984375 C 962.74726 0.062904417 959.37395 0.01953125 956 0.01953125 z M 0.015625 1968 C 0.032745156 1971.3738 0.080078125 1974.7472 0.080078125 1978.1211 C 0.14382551 1981.4895 0.22555626 1984.8582 0.29101562 1988.2266 C 0.46100867 1991.5841 0.63698941 1994.941 0.80859375 1998.2988 C 1.1371999 2001.624 1.4647043 2004.9502 1.7949219 2008.2754 C 2.3229272 2011.5576 2.8526128 2014.8388 3.3789062 2018.1211 C 4.1553555 2021.3171 4.9304814 2024.513 5.7070312 2027.709 C 6.7632439 2030.7917 7.817277 2033.8762 8.875 2036.959 C 10.227391 2039.8856 11.578141 2042.8119 12.931641 2045.7383 C 14.591489 2048.4762 16.250812 2051.2132 17.910156 2053.9512 C 19.871723 2056.4573 21.833647 2058.9628 23.794922 2061.4688 C 26.041892 2063.7161 28.288387 2065.9635 30.535156 2068.2109 C 33.045978 2070.1727 35.557338 2072.1358 38.068359 2074.0977 C 40.800032 2075.7577 43.532001 2077.4162 46.263672 2079.0762 C 49.195245 2080.4289 52.125269 2081.7819 55.056641 2083.1348 C 58.133233 2084.191 61.210316 2085.2486 64.287109 2086.3047 C 67.48757 2087.0807 70.68811 2087.8567 73.888672 2088.6328 C 77.164765 2089.1611 80.440704 2089.6885 83.716797 2090.2168 C 87.041127 2090.5453 90.366976 2090.8741 93.691406 2091.2031 C 97.048366 2091.3756 100.40486 2091.5484 103.76172 2091.7207 C 107.12946 2091.7898 110.49741 2091.8597 113.86523 2091.9297 C 115.62196 2091.9407 122.22756 2091.9801 123.98438 2091.9941 C 125.60072 2092.0064 -1.6007186 2091.9941 0.015625 2091.9941 L 0.015625 1968 z M 1079.9844 1968 L 1079.9844 2091.9941 C 1081.6008 2091.9941 954.39928 2092.0064 956.01562 2091.9941 C 957.77244 2091.9801 964.37804 2091.9407 966.13477 2091.9297 C 969.50259 2091.8597 972.87054 2091.7898 976.23828 2091.7207 C 979.59514 2091.5484 982.95164 2091.3756 986.30859 2091.2031 C 989.63302 2090.8741 992.95888 2090.5453 996.2832 2090.2168 C 999.5593 2089.6885 1002.8352 2089.1611 1006.1113 2088.6328 C 1009.3119 2087.8567 1012.5124 2087.0807 1015.7129 2086.3047 C 1018.7897 2085.2486 1021.8668 2084.191 1024.9434 2083.1348 C 1027.8748 2081.7819 1030.8048 2080.4289 1033.7363 2079.0762 C 1036.468 2077.4162 1039.1999 2075.7577 1041.9316 2074.0977 C 1044.4426 2072.1358 1046.9539 2070.1727 1049.4648 2068.2109 C 1051.7115 2065.9635 1053.9581 2063.7161 1056.2051 2061.4688 C 1058.1664 2058.9628 1060.1282 2056.4573 1062.0898 2053.9512 C 1063.7491 2051.2132 1065.4086 2048.4762 1067.0684 2045.7383 C 1068.4219 2042.8119 1069.7726 2039.8856 1071.125 2036.959 C 1072.1828 2033.8762 1073.2368 2030.7917 1074.293 2027.709 C 1075.0695 2024.513 1075.8447 2021.3171 1076.6211 2018.1211 C 1077.1474 2014.8388 1077.6771 2011.5576 1078.2051 2008.2754 C 1078.5353 2004.9502 1078.8627 2001.624 1079.1914 1998.2988 C 1079.363 1994.941 1079.539 1991.5841 1079.709 1988.2266 C 1079.774 1984.8582 1079.8561 1981.4895 1079.9199 1978.1211 C 1079.9199 1974.7472 1079.9674 1971.3738 1079.9844 1968 z</string>
+
     <!-- Whether we should persist the brightness value in nits for the default display even if
          the underlying display device changes. -->
     <bool name="config_persistBrightnessNitsForDefaultDisplay">true</bool>
diff --git a/felix/overlay/frameworks/base/core/res/res/xml/irq_device_map.xml b/felix/overlay/frameworks/base/core/res/res/xml/irq_device_map.xml
new file mode 100644
index 0000000..9b3e461
--- /dev/null
+++ b/felix/overlay/frameworks/base/core/res/res/xml/irq_device_map.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+**
+** Copyright 2023, 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.
+*/
+-->
+<irq-device-map>
+    <device name="rtc-alarm0">
+        <subsystem>Alarm</subsystem>
+    </device>
+    <device name="dhdpcie_host_wake">
+        <subsystem>Wifi</subsystem>
+    </device>
+    <device name="cp2ap_wakeup">
+        <subsystem>Cellular_data</subsystem>
+    </device>
+    <device name="MAILBOX_AOCF12APx1100">
+        <subsystem>Sound_trigger</subsystem>
+    </device>
+    <device name="MAILBOX_AOCA322APx100">
+        <subsystem>Sensor</subsystem>
+    </device>
+</irq-device-map>
+
diff --git a/felix/overlay/frameworks/base/packages/SystemUI/res-keyguard/values-sw600dp-land/dimens.xml b/felix/overlay/frameworks/base/packages/SystemUI/res-keyguard/values-sw600dp-land/dimens.xml
new file mode 100644
index 0000000..d805e45
--- /dev/null
+++ b/felix/overlay/frameworks/base/packages/SystemUI/res-keyguard/values-sw600dp-land/dimens.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ * Copyright (c) 2023, 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.
+*/
+-->
+<resources>
+    <!-- Weather clock smartspace scaling to apply for the weather clock on tablets -->
+    <item name="weather_clock_smartspace_scale" type="dimen" format="float">0.85</item>
+    <dimen name="weather_clock_smartspace_translateX">-40dp</dimen>
+    <dimen name="weather_clock_smartspace_translateY">-26dp</dimen>
+</resources>
diff --git a/felix/overlay/frameworks/base/packages/SystemUI/res-keyguard/values-sw600dp/dimens.xml b/felix/overlay/frameworks/base/packages/SystemUI/res-keyguard/values-sw600dp/dimens.xml
new file mode 100644
index 0000000..d6c2dbb
--- /dev/null
+++ b/felix/overlay/frameworks/base/packages/SystemUI/res-keyguard/values-sw600dp/dimens.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ * Copyright (c) 2023, 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.
+*/
+-->
+<resources>
+    <!-- Weather clock smartspace scaling to apply for the weather clock on tablets -->
+    <dimen name="weather_clock_smartspace_translateX">-8dp</dimen>
+    <dimen name="weather_clock_smartspace_translateY">-16dp</dimen>
+</resources>
diff --git a/felix/overlay/frameworks/base/packages/SystemUI/res-keyguard/values/dimens.xml b/felix/overlay/frameworks/base/packages/SystemUI/res-keyguard/values/dimens.xml
new file mode 100644
index 0000000..d930b35
--- /dev/null
+++ b/felix/overlay/frameworks/base/packages/SystemUI/res-keyguard/values/dimens.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ * Copyright (c) 2023, 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.
+*/
+-->
+<resources>
+    <!-- Weather clock smartspace positioning to apply for the weather clock on tablets -->
+    <dimen name="weather_clock_smartspace_translateX">-15dp</dimen>
+    <dimen name="weather_clock_smartspace_translateY">-26dp</dimen>
+</resources>
diff --git a/felix/overlay/packages/apps/Nfc/res/values/config.xml b/felix/overlay/packages/apps/Nfc/res/values/config.xml
index 348c881..5e89b28 100644
--- a/felix/overlay/packages/apps/Nfc/res/values/config.xml
+++ b/felix/overlay/packages/apps/Nfc/res/values/config.xml
@@ -19,4 +19,17 @@
     <item>G9FPL</item>
     <item>G0B96</item>
   </string-array>
+  <bool name="tag_intent_app_pref_supported">true</bool>
+  <!-- NFC Antenna Location API -->
+  <integer name="device_width">160</integer>
+  <integer name="device_height">140</integer>
+  <bool name="device_foldable">true</bool>
+  <integer-array name="antenna_x">
+    <item>90</item>
+    <item>30</item>
+  </integer-array>
+  <integer-array name="antenna_y">
+    <item>103</item>
+    <item>103</item>
+  </integer-array>
 </resources>
diff --git a/fingerprint_config.mk b/fingerprint_config.mk
index 2255f3b..1f9b521 100644
--- a/fingerprint_config.mk
+++ b/fingerprint_config.mk
@@ -4,7 +4,8 @@
 FPC_CONFIG_TRUSTY_CLEAN_TA=1
 else
 # Non factory build, use fingerprint AIDL version
-GOOGLE_CONFIG_POWER_NODE=/dev/input/event1
+GOOGLE_CONFIG_POWER_NODE=/dev/input/event2
 GOOGLE_CONFIG_DP_COUNT=2
 GOOGLE_CONFIG_FP_STATUS=1
+GOOGLE_CONFIG_TOUCH_TO_UNLOCK_ANYTIME=1
 endif
diff --git a/init.insmod.felix.cfg b/init.insmod.felix.cfg
index 76401ec..5693443 100644
--- a/init.insmod.felix.cfg
+++ b/init.insmod.felix.cfg
@@ -10,8 +10,7 @@
 modprobe|snd-soc-cs35l41-i2c.ko
 modprobe|fst2.ko
 modprobe|ftm5.ko
-modprobe|cl_dsp.ko
-modprobe|input-cs40l26-i2c.ko
+modprobe|cs40l26-i2c.ko
 modprobe|snd-soc-cs40l26.ko
 
 # All device specific modules loaded
diff --git a/location/gps.xml.f10 b/location/gps.xml.f10
index 9aa35eb..6e005ae 100644
--- a/location/gps.xml.f10
+++ b/location/gps.xml.f10
@@ -88,6 +88,7 @@
        EnableOnChipStopNotification="2"
        PowerMode="3"
        MinGpsWeekNumber="2216"
+       OnChipAccMask="50"
   />
 
   <gll_features
diff --git a/location/gps_user.xml.f10 b/location/gps_user.xml.f10
index bcd8f1d..02afd01 100644
--- a/location/gps_user.xml.f10
+++ b/location/gps_user.xml.f10
@@ -87,6 +87,7 @@
        EnableOnChipStopNotification="0"
        PowerMode="3"
        MinGpsWeekNumber="2216"
+       OnChipAccMask="50"
   />
 
   <gll_features
diff --git a/powerhint.json b/powerhint.json
index fa662b3..46de73c 100644
--- a/powerhint.json
+++ b/powerhint.json
@@ -1,6 +1,19 @@
 {
   "Nodes": [
     {
+      "Name": "GPUMinFreq",
+      "Path": "/sys/devices/platform/28000000.mali/hint_min_freq",
+      "Values": [
+        "848000",
+        "762000",
+        "572000",
+        "471000",
+        "302000",
+        "202000"
+      ],
+      "ResetOnInit": true
+    },
+    {
       "Name": "MemFreq",
       "Path": "/sys/devices/platform/17000010.devfreq_mif/devfreq/17000010.devfreq_mif/min_freq",
       "Values": [
@@ -115,19 +128,6 @@
       "ResetOnInit": true
     },
     {
-      "Name": "GPUMinFreq",
-      "Path": "/sys/devices/platform/28000000.mali/hint_min_freq",
-      "Values": [
-        "848000",
-        "762000",
-        "572000",
-        "471000",
-        "302000",
-        "202000"
-      ],
-      "ResetOnInit": true
-    },
-    {
       "Name": "GPUDvfsPeriod",
       "Path": "/sys/devices/platform/28000000.mali/dvfs_period",
       "Values": [
@@ -156,6 +156,16 @@
       "ResetOnInit": true
     },
     {
+      "Name": "CPUDVFSHeadroom",
+      "Path": "/proc/vendor_sched/dvfs_headroom",
+      "Values": [
+        "1280",
+        "1100 1078 1024"
+      ],
+      "DefaultIndex": 0,
+      "ResetOnInit": true
+    },
+    {
       "Name": "MIFTargetLoad",
       "Path": "/sys/class/devfreq/17000010.devfreq_mif/interactive/target_load",
       "Values": [
@@ -169,7 +179,7 @@
       "Name": "CAMUClampBoost",
       "Path": "/proc/vendor_sched/cam_uclamp_min",
       "Values": [
-        "612",
+        "764",
         "0"
       ],
       "ResetOnInit": true
@@ -178,7 +188,7 @@
       "Name": "TAUClampBoost",
       "Path": "/proc/vendor_sched/ta_uclamp_min",
       "Values": [
-        "612",
+        "764",
         "1"
       ],
       "ResetOnInit": true
@@ -196,8 +206,8 @@
       "Name": "MLUclampBoost",
       "Path": "/proc/vendor_sched/nnapi_uclamp_min",
       "Values": [
-          "180",
-          "650"
+          "225",
+          "813"
       ],
       "DefaultIndex": 0,
       "ResetOnInit": true
@@ -345,6 +355,7 @@
       "Path": "/sys/devices/platform/17000030.devfreq_intcam/devfreq/17000030.devfreq_intcam/min_freq",
       "Values": [
         "664000",
+        "233000",
         "67000"
       ],
       "ResetOnInit": true
@@ -364,6 +375,7 @@
       "Path": "/sys/devices/platform/17000060.devfreq_tnr/devfreq/17000060.devfreq_tnr/min_freq",
       "Values": [
         "664000",
+        "233000",
         "67000"
       ],
       "ResetOnInit": true
@@ -560,6 +572,16 @@
         "0,1,2,3,4,5,6,7"
       ],
       "Type": "Property"
+    },
+    {
+      "Name": "Dex2oatGroup",
+      "Path": "/proc/vendor_sched/dex2oat_ug",
+      "Values": [
+        "1",
+        "0"
+      ],
+      "DefaultIndex": 0,
+      "ResetOnInit": true
     }
   ],
   "Actions": [
@@ -632,7 +654,7 @@
       "PowerHint": "LAUNCH",
       "Node": "TAUClampBoost",
       "Duration": 5000,
-      "Value": "612"
+      "Value": "764"
     },
     {
       "PowerHint": "LAUNCH",
@@ -700,6 +722,18 @@
       "Value": "9999999"
     },
     {
+      "PowerHint": "CPU_LOAD_RESET",
+      "Node": "GPUMinFreq",
+      "Duration": 50,
+      "Value": "302000"
+    },
+    {
+      "PowerHint": "CPU_LOAD_RESET",
+      "Node": "MemFreq",
+      "Duration": 33,
+      "Value": "1014000"
+    },
+    {
       "PowerHint": "CAMERA_LAUNCH",
       "Node": "MemFreq",
       "Duration": 1000,
@@ -745,7 +779,7 @@
       "PowerHint": "CAMERA_LAUNCH",
       "Node": "CAMUClampBoost",
       "Duration": 1000,
-      "Value": "612"
+      "Value": "764"
     },
     {
       "PowerHint": "CAMERA_LAUNCH",
@@ -1145,6 +1179,12 @@
     },
     {
       "PowerHint": "CAMERA_STREAMING_HIGH",
+      "Node": "CPUDVFSHeadroom",
+      "Duration": 0,
+      "Value": "1100 1078 1024"
+    },
+    {
+      "PowerHint": "CAMERA_STREAMING_HIGH",
       "Node": "CPUMidClusterMaxFreq",
       "Duration": 0,
       "Value": "1491000"
@@ -1318,6 +1358,24 @@
       "Value": "0"
     },
     {
+      "PowerHint": "CAMERA_MULTI_CAM_STREAMING",
+      "Node": "CPUBigClusterMaxFreq",
+      "Duration": 0,
+      "Value": "9999999"
+    },
+    {
+      "PowerHint": "CAMERA_MULTI_CAM_STREAMING",
+      "Node": "CPUMidClusterMaxFreq",
+      "Duration": 0,
+      "Value": "9999999"
+    },
+    {
+      "PowerHint": "CAMERA_MULTI_CAM_STREAMING",
+      "Node": "CPULittleClusterMaxFreq",
+      "Duration": 0,
+      "Value": "9999999"
+    },
+    {
       "PowerHint": "CAMERA_VIDEO_RECORDING",
       "Type": "MaskHint",
       "Value": "CDCPUSET_RESTRICTED"
@@ -1350,6 +1408,18 @@
       "Value": "302000"
     },
     {
+      "PowerHint": "CAMERA_ADJUST_BACKEND_MIN_FREQ",
+      "Node": "INTCAMFreq",
+      "Duration": 0,
+      "Value": "233000"
+    },
+    {
+      "PowerHint": "CAMERA_ADJUST_BACKEND_MIN_FREQ",
+      "Node": "TNRFreq",
+      "Duration": 0,
+      "Value": "233000"
+    },
+    {
       "PowerHint": "CAMERA_TNR_LOW",
       "Node": "TNRMaxFreq",
       "Duration": 0,
@@ -1488,6 +1558,72 @@
       "Value": "1"
     },
     {
+      "PowerHint": "LOW_POWER",
+      "Node": "BigControlTempSet",
+      "Duration": 0,
+      "Value": "80000"
+    },
+    {
+      "PowerHint": "LOW_POWER",
+      "Node": "MidControlTempSet",
+      "Duration": 0,
+      "Value": "80000"
+    },
+    {
+      "PowerHint": "LOW_POWER",
+      "Node": "LittleControlTempSet",
+      "Duration": 0,
+      "Value": "80000"
+    },
+    {
+      "PowerHint": "LOW_POWER",
+      "Node": "G3dControlTempSet",
+      "Duration": 0,
+      "Value": "80000"
+    },
+    {
+      "PowerHint": "LOW_POWER",
+      "Node": "TpuControlTempSet",
+      "Duration": 0,
+      "Value": "80000"
+    },
+    {
+      "PowerHint": "LOW_POWER",
+      "Node": "AurControlTempSet",
+      "Duration": 0,
+      "Value": "80000"
+    },
+    {
+      "PowerHint": "LOW_POWER",
+      "Node": "BigSwitchOnTempSet",
+      "Duration": 0,
+      "Value": "60000"
+    },
+    {
+      "PowerHint": "LOW_POWER",
+      "Node": "MidSwitchOnTempSet",
+      "Duration": 0,
+      "Value": "60000"
+    },
+    {
+      "PowerHint": "LOW_POWER",
+      "Node": "LittleSwitchOnTempSet",
+      "Duration": 0,
+      "Value": "60000"
+    },
+    {
+      "PowerHint": "LOW_POWER",
+      "Node": "G3dSwitchOnTempSet",
+      "Duration": 0,
+      "Value": "60000"
+    },
+    {
+      "PowerHint": "LOW_POWER",
+      "Node": "TpuSwitchOnTempSet",
+      "Duration": 0,
+      "Value": "60000"
+    },
+    {
       "PowerHint": "REFRESH_120FPS",
       "Node": "TAUClampBoost",
       "Duration": 0,
@@ -1553,12 +1689,6 @@
       "Value": "572000"
     },
     {
-      "PowerHint": "ADPF_FIRST_FRAME",
-      "Node": "GPUMinFreq",
-      "Duration": 50,
-      "Value": "302000"
-    },
-    {
       "PowerHint": "THERMAL_VIRTUAL-SKIN-HINT_LIGHT",
       "Node": "PMU_POLL",
       "Duration": 0,
@@ -1649,6 +1779,12 @@
       "Value": "0,1,2,3"
     },
     {
+      "PowerHint": "THERMAL_VIRTUAL-SKIN-HINT_LIGHT",
+      "Node": "Dex2oatGroup",
+      "Duration": 0,
+      "Value": "0"
+    },
+    {
       "PowerHint": "THERMAL_VIRTUAL-SKIN-HINT_MODERATE",
       "Node": "PMU_POLL",
       "Duration": 0,
@@ -1739,6 +1875,12 @@
       "Value": "0,1,2,3"
     },
     {
+      "PowerHint": "THERMAL_VIRTUAL-SKIN-HINT_MODERATE",
+      "Node": "Dex2oatGroup",
+      "Duration": 0,
+      "Value": "0"
+    },
+    {
       "PowerHint": "THERMAL_VIRTUAL-SKIN-HINT_SEVERE",
       "Node": "PMU_POLL",
       "Duration": 0,
@@ -1829,6 +1971,12 @@
       "Value": "0,1,2,3"
     },
     {
+      "PowerHint": "THERMAL_VIRTUAL-SKIN-HINT_SEVERE",
+      "Node": "Dex2oatGroup",
+      "Duration": 0,
+      "Value": "0"
+    },
+    {
       "PowerHint": "THERMAL_VIRTUAL-SKIN-HINT_CRITICAL",
       "Node": "PMU_POLL",
       "Duration": 0,
@@ -1919,6 +2067,12 @@
       "Value": "0,1,2,3"
     },
     {
+      "PowerHint": "THERMAL_VIRTUAL-SKIN-HINT_CRITICAL",
+      "Node": "Dex2oatGroup",
+      "Duration": 0,
+      "Value": "0"
+    },
+    {
       "PowerHint": "THERMAL_VIRTUAL-SKIN-HINT_EMERGENCY",
       "Node": "PMU_POLL",
       "Duration": 0,
@@ -2027,6 +2181,12 @@
       "Value": "0,1,2,3"
     },
     {
+      "PowerHint": "THERMAL_VIRTUAL-SKIN-HINT_EMERGENCY",
+      "Node": "Dex2oatGroup",
+      "Duration": 0,
+      "Value": "0"
+    },
+    {
       "PowerHint": "FACE_UNLOCK_BOOST",
       "Node": "CPUBigClusterMaxFreq",
       "Duration": 1000,
@@ -2096,7 +2256,7 @@
       "PowerHint": "ML_ACC",
       "Node": "MLUclampBoost",
       "Duration": 2000,
-      "Value": "650"
+      "Value": "813"
     },
     {
       "PowerHint": "ML_ACC",
@@ -2118,8 +2278,8 @@
       "PID_Do": 500.0,
       "PID_Du": 0.0,
       "UclampMin_On": true,
-      "UclampMin_Init": 185,
-      "UclampMin_High": 384,
+      "UclampMin_Init": 232,
+      "UclampMin_High": 480,
       "UclampMin_Low": 2,
       "SamplingWindow_P": 1,
       "SamplingWindow_I": 0,
@@ -2142,8 +2302,8 @@
       "PID_Do": 500.0,
       "PID_Du": 0.0,
       "UclampMin_On": true,
-      "UclampMin_Init": 129,
-      "UclampMin_High": 384,
+      "UclampMin_Init": 162,
+      "UclampMin_High": 480,
       "UclampMin_Low": 2,
       "SamplingWindow_P": 1,
       "SamplingWindow_I": 0,
@@ -2166,8 +2326,8 @@
       "PID_Do": 500.0,
       "PID_Du": 0.0,
       "UclampMin_On": true,
-      "UclampMin_Init": 129,
-      "UclampMin_High": 384,
+      "UclampMin_Init": 162,
+      "UclampMin_High": 480,
       "UclampMin_Low": 2,
       "SamplingWindow_P": 1,
       "SamplingWindow_I": 0,
@@ -2193,9 +2353,9 @@
       "SamplingWindow_I": 1,
       "SamplingWindow_D": 1,
       "UclampMin_On": true,
-      "UclampMin_Init": 200,
-      "UclampMin_High": 157,
-      "UclampMin_Low": 157,
+      "UclampMin_Init": 250,
+      "UclampMin_High": 197,
+      "UclampMin_Low": 197,
       "ReportingRateLimitNs": 1,
       "EarlyBoost_On": false,
       "EarlyBoost_TimeFactor": 0.0,
@@ -2217,9 +2377,9 @@
       "SamplingWindow_I": 1,
       "SamplingWindow_D": 1,
       "UclampMin_On": true,
-      "UclampMin_Init": 200,
-      "UclampMin_High": 42,
-      "UclampMin_Low": 42,
+      "UclampMin_Init": 250,
+      "UclampMin_High": 53,
+      "UclampMin_Low": 53,
       "ReportingRateLimitNs": 1,
       "EarlyBoost_On": false,
       "EarlyBoost_TimeFactor": 0.0,
@@ -2241,7 +2401,7 @@
       "SamplingWindow_I": 1,
       "SamplingWindow_D": 1,
       "UclampMin_On": true,
-      "UclampMin_Init": 200,
+      "UclampMin_Init": 250,
       "UclampMin_High": 0,
       "UclampMin_Low": 0,
       "ReportingRateLimitNs": 1,
diff --git a/powerstats/felix/service.cpp b/powerstats/felix/service.cpp
index 796b5a4..2de3797 100644
--- a/powerstats/felix/service.cpp
+++ b/powerstats/felix/service.cpp
@@ -28,6 +28,7 @@
 #include <android/binder_manager.h>
 #include <android/binder_process.h>
 #include <log/log.h>
+#include <sys/stat.h>
 
 using aidl::android::hardware::power::stats::DevfreqStateResidencyDataProvider;
 using aidl::android::hardware::power::stats::DisplayStateResidencyDataProvider;
@@ -39,7 +40,9 @@
     // Add display residency stats for inner display
     std::vector<std::string> inner_states = {
         "Off",
+        "LP: 1840x2208@1",
         "LP: 1840x2208@30",
+        "On: 1840x2208@1",
         "On: 1840x2208@10",
         "On: 1840x2208@60",
         "On: 1840x2208@120",
@@ -138,6 +141,18 @@
             stateCoeffs));
 }
 
+std::string getNfcPath() {
+    struct stat buffer;
+    int size = 128;
+    char path[size];
+    for (int i = 0; i < 10; i++) {
+        std::snprintf(path, size,
+                "/sys/devices/platform/10970000.hsi2c/i2c-%d/i2c-st21nfc/power_stats", i);
+        if (!stat(path, &buffer)) break;
+    }
+    return std::string(path);
+}
+
 int main() {
     LOG(INFO) << "Pixel PowerStats HAL AIDL Service is starting.";
 
@@ -158,7 +173,7 @@
     addWifi(p);
     addTPU(p);
     addUfs(p);
-    addNFC(p, "/sys/devices/platform/10970000.hsi2c/i2c-4/i2c-st21nfc/power_stats");
+    addNFC(p, getNfcPath());
     addUwb(p);
     addPowerDomains(p);
     addDevfreq(p);
diff --git a/rro_overlays/UwbOverlay/Android.bp b/rro_overlays/UwbOverlay/Android.bp
new file mode 100644
index 0000000..bdaa13d
--- /dev/null
+++ b/rro_overlays/UwbOverlay/Android.bp
@@ -0,0 +1,18 @@
+package {
+    // See: http://go/android-license-faq
+    // A large-scale-change added 'default_applicable_licenses' to import
+    // all of the 'license_kinds' from "//device/google/felix:device_google_felix_license"
+    // to get the below license kinds:
+    //   SPDX-license-identifier-Apache-2.0
+    default_applicable_licenses: [
+        "//device/google/felix:device_google_felix_license",
+    ],
+}
+
+runtime_resource_overlay {
+    name: "UwbOverlayF10",
+    theme: "UwbOverlayF10",
+    certificate: "platform",
+    sdk_version: "current",
+    product_specific: true
+}
diff --git a/rro_overlays/UwbOverlay/AndroidManifest.xml b/rro_overlays/UwbOverlay/AndroidManifest.xml
new file mode 100644
index 0000000..57dfd5b
--- /dev/null
+++ b/rro_overlays/UwbOverlay/AndroidManifest.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2022 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.
+-->
+<!-- Pixel specific uwb overlays -->
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="com.android.uwb.resources.pixel"
+    android:versionCode="1"
+    android:versionName="1.0">
+    <application android:hasCode="false" />
+    <overlay
+      android:targetPackage="com.android.uwb.resources"
+      android:targetName="UwbCustomization"
+      android:isStatic="true"
+      android:priority="0"/>
+</manifest>
diff --git a/rro_overlays/UwbOverlay/OWNERS b/rro_overlays/UwbOverlay/OWNERS
new file mode 100644
index 0000000..2395d7f
--- /dev/null
+++ b/rro_overlays/UwbOverlay/OWNERS
@@ -0,0 +1,3 @@
+# People who can approve changes for submission
+include platform/packages/modules/Uwb:/OWNERS
[email protected]
diff --git a/rro_overlays/UwbOverlay/res/values/config.xml b/rro_overlays/UwbOverlay/res/values/config.xml
new file mode 100644
index 0000000..3c45c6a
--- /dev/null
+++ b/rro_overlays/UwbOverlay/res/values/config.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+ * Copyright (C) 2022 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.
+ */
+-->
+<resources>
+    <!-- When true, the filter engine will alter UWB values to improve accuracy. -->
+    <bool name="enable_filters">true</bool>
+
+    <!-- Enables the AoA conversion primer. This is needed on hardware that does not convert AoA
+    to spherical coordinates, including hardware that does not support elevation.-->
+    <bool name="enable_primer_aoa">true</bool>
+</resources>
diff --git a/rro_overlays/WifiOverlay/res/values/config.xml b/rro_overlays/WifiOverlay/res/values/config.xml
index aa13002..94f377b 100644
--- a/rro_overlays/WifiOverlay/res/values/config.xml
+++ b/rro_overlays/WifiOverlay/res/values/config.xml
@@ -56,6 +56,7 @@
 
     <!-- True if the firmware supports connected MAC randomization -->
     <bool name="config_wifi_connected_mac_randomization_supported">true</bool>
+    <bool name="config_wifiAllowNonPersistentMacRandomizationOnOpenSsids">true</bool>
 
     <!-- True if the firmware supports p2p MAC randomization -->
     <bool name="config_wifi_p2p_mac_randomization_supported">true</bool>
@@ -152,4 +153,18 @@
 
     <!-- Enable WPA2 to WPA3 auto-upgrade offload to capable Driver/Firmware -->
     <bool translatable="false" name="config_wifiSaeUpgradeOffloadEnabled">true</bool>
+
+    <!-- Boolean indicating whether DTIM multiplier configuration is enabled. DTIM multiplier value
+        is when the system is in the suspended mode -->
+    <bool translatable="false" name="config_wifiDtimMultiplierConfigEnabled">true</bool>
+
+    <!-- Enable the feature of adjusting link layer stats polling interval based on
+    device mobility state and client mode RSSI monitoring. -->
+    <bool translatable="false" name="config_wifiAdjustPollRssiIntervalEnabled">true</bool>
+
+    <!-- Boolean indicating whether the framework updates country from scan results when there is
+         no telephony country code. This is applied to all generic cases and might require the
+         regulatory approval (for example, FCC pre-approval is required according to "594280 D01
+         Software Configuration Control v02r01").-->
+    <bool translatable="false" name ="config_wifiUpdateCountryCodeFromScanResultGeneric">true</bool>
 </resources>
diff --git a/self-extractors/extract-lists.txt b/self-extractors/extract-lists.txt
index 255e82e..9fc0800 100644
--- a/self-extractors/extract-lists.txt
+++ b/self-extractors/extract-lists.txt
@@ -11,7 +11,7 @@
             system_ext/lib64/libmediaadaptor.so \
             system_ext/priv-app/ShannonRcs/ShannonRcs.apk \
             system_ext/priv-app/ShannonIms/ShannonIms.apk \
-            system_ext/priv-app/QualifiedNetworksService/QualifiedNetworksService.apk \
+            system_ext/priv-app/PixelQualifiedNetworksService/PixelQualifiedNetworksService.apk \
             system_ext/priv-app/UwbVendorService/UwbVendorService.apk \
             "
     ;;
diff --git a/self-extractors/google_devices/staging/Android.mk b/self-extractors/google_devices/staging/Android.mk
index fac7172..60234be 100644
--- a/self-extractors/google_devices/staging/Android.mk
+++ b/self-extractors/google_devices/staging/Android.mk
@@ -24,7 +24,7 @@
 ifneq ($(filter felix,$(TARGET_DEVICE)),)
 include $(CLEAR_VARS)
 LOCAL_MODULE_SUFFIX := $(COMMON_ANDROID_PACKAGE_SUFFIX)
-LOCAL_MODULE := QualifiedNetworksService
+LOCAL_MODULE := PixelQualifiedNetworksService
 LOCAL_MODULE_TAGS := optional
 LOCAL_BUILT_MODULE_STEM := package.apk
 LOCAL_SYSTEM_EXT_MODULE := true
diff --git a/self-extractors/google_devices/staging/device-partial.mk b/self-extractors/google_devices/staging/device-partial.mk
index 736b944..9c4717f 100644
--- a/self-extractors/google_devices/staging/device-partial.mk
+++ b/self-extractors/google_devices/staging/device-partial.mk
@@ -17,7 +17,7 @@
 
 # AOSP packages required by the blobs
 PRODUCT_PACKAGES := \
-    QualifiedNetworksService \
+    PixelQualifiedNetworksService \
     ShannonIms \
     ShannonRcs \
     UwbVendorService \
diff --git a/sensors/Android.mk b/sensors/Android.mk
deleted file mode 100644
index 4417bc4..0000000
--- a/sensors/Android.mk
+++ /dev/null
@@ -1,30 +0,0 @@
-# Copyright (C) 2009 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.
-
-LOCAL_PATH := $(call my-dir)
-
-# HAL module implemenation stored in
-# hw/<SENSORS_HARDWARE_MODULE_ID>.<ro.hardware>.so
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_RELATIVE_PATH := hw
-LOCAL_SHARED_LIBRARIES := liblog libcutils libhardware
-LOCAL_SRC_FILES := sensors_dummy.c
-LOCAL_MODULE := sensors.felix
-LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0
-LOCAL_LICENSE_CONDITIONS := notice
-LOCAL_NOTICE_FILE := $(LOCAL_PATH)/../NOTICE
-LOCAL_PROPRIETARY_MODULE := true
-
-include $(BUILD_SHARED_LIBRARY)
diff --git a/sensors/sensors_dummy.c b/sensors/sensors_dummy.c
deleted file mode 100644
index b1edd56..0000000
--- a/sensors/sensors_dummy.c
+++ /dev/null
@@ -1,409 +0,0 @@
-/*
- * Copyright (C) 2009 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.
- */
-
-/* this implements a sensors hardware library for the Android emulator.
- * the following code should be built as a shared library that will be
- * placed into /system/lib/hw/sensors.goldfish.so
- *
- * it will be loaded by the code in hardware/libhardware/hardware.c
- * which is itself called from com_android_server_SensorService.cpp
- */
-
-#define  SENSORS_SERVICE_NAME "sensors"
-
-#define LOG_TAG "Dummy_Sensors"
-
-#include <unistd.h>
-#include <fcntl.h>
-#include <errno.h>
-#include <string.h>
-#include <log/log.h>
-#include <cutils/sockets.h>
-#include <hardware/sensors.h>
-#include <pthread.h>
-
-#if 0
-#define  D(...)  ALOGD(__VA_ARGS__)
-#else
-#define  D(...)  ((void)0)
-#endif
-
-#define  E(...)  ALOGE(__VA_ARGS__)
-
-/** SENSOR IDS AND NAMES
- **/
-
-#define MAX_NUM_SENSORS 8
-
-#define SUPPORTED_SENSORS  ((1<<MAX_NUM_SENSORS)-1)
-
-#define  ID_BASE           SENSORS_HANDLE_BASE
-#define  ID_ACCELERATION   (ID_BASE+0)
-#define  ID_MAGNETIC_FIELD (ID_BASE+1)
-#define  ID_ORIENTATION    (ID_BASE+2)
-#define  ID_TEMPERATURE    (ID_BASE+3)
-#define  ID_PROXIMITY      (ID_BASE+4)
-#define  ID_LIGHT          (ID_BASE+5)
-#define  ID_PRESSURE       (ID_BASE+6)
-#define  ID_HUMIDITY       (ID_BASE+7)
-
-#define  SENSORS_ACCELERATION    (1 << ID_ACCELERATION)
-#define  SENSORS_MAGNETIC_FIELD  (1 << ID_MAGNETIC_FIELD)
-#define  SENSORS_ORIENTATION     (1 << ID_ORIENTATION)
-#define  SENSORS_TEMPERATURE     (1 << ID_TEMPERATURE)
-#define  SENSORS_PROXIMITY       (1 << ID_PROXIMITY)
-#define  SENSORS_LIGHT           (1 << ID_LIGHT)
-#define  SENSORS_PRESSURE        (1 << ID_PRESSURE)
-#define  SENSORS_HUMIDITY        (1 << ID_HUMIDITY)
-
-#define  ID_CHECK(x)  ((unsigned)((x) - ID_BASE) < MAX_NUM_SENSORS)
-
-#define  SENSORS_LIST  \
-    SENSOR_(ACCELERATION,"acceleration") \
-    SENSOR_(MAGNETIC_FIELD,"magnetic-field") \
-    SENSOR_(ORIENTATION,"orientation") \
-    SENSOR_(TEMPERATURE,"temperature") \
-    SENSOR_(PROXIMITY,"proximity") \
-    SENSOR_(LIGHT, "light") \
-    SENSOR_(PRESSURE, "pressure") \
-    SENSOR_(HUMIDITY, "humidity")
-
-static const struct {
-    const char*  name;
-    int          id; } _sensorIds[MAX_NUM_SENSORS] =
-{
-#define SENSOR_(x,y)  { y, ID_##x },
-    SENSORS_LIST
-#undef  SENSOR_
-};
-
-static const char*
-_sensorIdToName( int  id )
-{
-    int  nn;
-    for (nn = 0; nn < MAX_NUM_SENSORS; nn++)
-        if (id == _sensorIds[nn].id)
-            return _sensorIds[nn].name;
-    return "<UNKNOWN>";
-}
-
-static int
-_sensorIdFromName( const char*  name )
-{
-    int  nn;
-
-    if (name == NULL)
-        return -1;
-
-    for (nn = 0; nn < MAX_NUM_SENSORS; nn++)
-        if (!strcmp(name, _sensorIds[nn].name))
-            return _sensorIds[nn].id;
-
-    return -1;
-}
-
-/* return the current time in nanoseconds */
-static int64_t now_ns(void) {
-    struct timespec  ts;
-    clock_gettime(CLOCK_MONOTONIC, &ts);
-    return (int64_t)ts.tv_sec * 1000000000 + ts.tv_nsec;
-}
-
-/** SENSORS POLL DEVICE
- **
- ** This one is used to read sensor data from the hardware.
- ** We implement this by simply reading the data from the
- ** emulator through the QEMUD channel.
- **/
-
-typedef struct SensorDevice {
-    struct sensors_poll_device_1  device;
-    sensors_event_t               sensors[MAX_NUM_SENSORS];
-    uint32_t                      pendingSensors;
-    int64_t                       timeStart;
-    int64_t                       timeOffset;
-    uint32_t                      active_sensors;
-    int                           fd;
-    pthread_mutex_t               lock;
-} SensorDevice;
-
-/* Grab the file descriptor to the emulator's sensors service pipe.
- * This function returns a file descriptor on success, or -errno on
- * failure, and assumes the SensorDevice instance's lock is held.
- *
- * This is needed because set_delay(), poll() and activate() can be called
- * from different threads, and poll() is blocking.
- *
- * 1) On a first thread, de-activate() all sensors first, then call poll(),
- *    which results in the thread blocking.
- *
- * 2) On a second thread, slightly later, call set_delay() then activate()
- *    to enable the acceleration sensor.
- *
- * The system expects this to unblock the first thread which will receive
- * new sensor events after the activate() call in 2).
- *
- * This cannot work if both threads don't use the same connection.
- *
- * TODO(digit): This protocol is brittle, implement another control channel
- *              for set_delay()/activate()/batch() when supporting HAL 1.3
- */
-static int sensor_device_get_fd_locked(SensorDevice* dev) {
-    /* Create connection to service on first call */
-    if (dev->fd < 0) {
-	    int ret = -errno;
-	    E("%s: Could not open connection to service: %s", __FUNCTION__,
-	    		    strerror(-ret));
-	    return ret;
-    }
-    return dev->fd;
-}
-
-/* Pick up one pending sensor event. On success, this returns the sensor
- * id, and sets |*event| accordingly. On failure, i.e. if there are no
- * pending events, return -EINVAL.
- *
- * Note: The device's lock must be acquired.
- */
-static int sensor_device_pick_pending_event_locked(SensorDevice* d,
-                                                   sensors_event_t*  event)
-{
-    uint32_t mask = SUPPORTED_SENSORS & d->pendingSensors;
-
-    if (mask) {
-        uint32_t i = 31 - __builtin_clz(mask);
-
-	pthread_mutex_lock(&d->lock);
-        d->pendingSensors &= ~(1U << i);
-        *event = d->sensors[i];
-        event->sensor = i;
-        event->version = sizeof(*event);
-	pthread_mutex_unlock(&d->lock);
-        D("%s: %d [%f, %f, %f]", __FUNCTION__,
-                i,
-                event->data[0],
-                event->data[1],
-                event->data[2]);
-        return i;
-    }
-    E("No sensor to return!!! pendingSensors=0x%08x", d->pendingSensors);
-    // we may end-up in a busy loop, slow things down, just in case.
-    usleep(1000);
-    return -EINVAL;
-}
-
-static int sensor_device_close(struct hw_device_t* dev0)
-{
-    SensorDevice* dev = (void*)dev0;
-    // Assume that there are no other threads blocked on poll()
-    if (dev->fd >= 0) {
-        close(dev->fd);
-        dev->fd = -1;
-    }
-    pthread_mutex_destroy(&dev->lock);
-    free(dev);
-    return 0;
-}
-
-/* Return an array of sensor data. This function blocks until there is sensor
- * related events to report. On success, it will write the events into the
- * |data| array, which contains |count| items. The function returns the number
- * of events written into the array, which shall never be greater than |count|.
- * On error, return -errno code.
- *
- * Note that according to the sensor HAL [1], it shall never return 0!
- *
- * [1] http://source.android.com/devices/sensors/hal-interface.html
- */
-static int sensor_device_poll(struct sensors_poll_device_t *dev0,
-                              sensors_event_t* data, int count)
-{
-    return -EIO;
-}
-
-static int sensor_device_activate(struct sensors_poll_device_t *dev0,
-                                  int handle,
-                                  int enabled)
-{
-    SensorDevice* dev = (void*)dev0;
-
-    D("%s: handle=%s (%d) enabled=%d", __FUNCTION__,
-        _sensorIdToName(handle), handle, enabled);
-
-    /* Sanity check */
-    if (!ID_CHECK(handle)) {
-        E("%s: bad handle ID", __FUNCTION__);
-        return -EINVAL;
-    }
-
-    /* Exit early if sensor is already enabled/disabled. */
-    uint32_t mask = (1U << handle);
-    uint32_t sensors = enabled ? mask : 0;
-
-    pthread_mutex_lock(&dev->lock);
-
-    uint32_t active = dev->active_sensors;
-    uint32_t new_sensors = (active & ~mask) | (sensors & mask);
-    uint32_t changed = active ^ new_sensors;
-
-    if (changed)
-	    dev->active_sensors = new_sensors;
-
-    pthread_mutex_unlock(&dev->lock);
-    return 0;
-}
-
-static int sensor_device_default_flush(
-        struct sensors_poll_device_1* dev0,
-        int handle) {
-
-    SensorDevice* dev = (void*)dev0;
-
-    D("%s: handle=%s (%d)", __FUNCTION__,
-        _sensorIdToName(handle), handle);
-
-    /* Sanity check */
-    if (!ID_CHECK(handle)) {
-        E("%s: bad handle ID", __FUNCTION__);
-        return -EINVAL;
-    }
-
-    pthread_mutex_lock(&dev->lock);
-    dev->sensors[handle].version = META_DATA_VERSION;
-    dev->sensors[handle].type = SENSOR_TYPE_META_DATA;
-    dev->sensors[handle].sensor = 0;
-    dev->sensors[handle].timestamp = 0;
-    dev->sensors[handle].meta_data.what = META_DATA_FLUSH_COMPLETE;
-    dev->pendingSensors |= (1U << handle);
-    pthread_mutex_unlock(&dev->lock);
-
-    return 0;
-}
-
-static int sensor_device_set_delay(struct sensors_poll_device_t *dev0,
-                                   int handle __unused,
-                                   int64_t ns)
-{
-    return 0;
-}
-
-static int sensor_device_default_batch(
-     struct sensors_poll_device_1* dev,
-     int sensor_handle,
-     int flags,
-     int64_t sampling_period_ns,
-     int64_t max_report_latency_ns) {
-    return sensor_device_set_delay(dev, sensor_handle, sampling_period_ns);
-}
-
-/** MODULE REGISTRATION SUPPORT
- **
- ** This is required so that hardware/libhardware/hardware.c
- ** will dlopen() this library appropriately.
- **/
-
-/*
- * the following is the list of all supported sensors.
- * this table is used to build sSensorList declared below
- * according to which hardware sensors are reported as
- * available from the emulator (see get_sensors_list below)
- *
- * note: numerical values for maxRange/resolution/power for
- *       all sensors but light, pressure and humidity were
- *       taken from the reference AK8976A implementation
- */
-static const struct sensor_t sSensorListInit[] = {
-        { .name       = "Accelerometer",
-          .vendor     = "The Android Open Source Project",
-          .version    = 1,
-          .handle     = ID_ACCELERATION,
-          .type       = SENSOR_TYPE_ACCELEROMETER,
-          .maxRange   = 2.8f,
-          .resolution = 1.0f/4032.0f,
-          .power      = 3.0f,
-          .minDelay   = 10000,
-          .maxDelay   = 60 * 1000 * 1000,
-          .fifoReservedEventCount = 0,
-          .fifoMaxEventCount =   0,
-          .stringType =         0,
-          .requiredPermission = 0,
-          .flags = SENSOR_FLAG_CONTINUOUS_MODE,
-          .reserved   = {}
-        },
-};
-
-static struct sensor_t  sSensorList[1];
-
-static int sensors__get_sensors_list(struct sensors_module_t* module __unused,
-        struct sensor_t const** list)
-{
-    *list = sSensorList;
-
-    return 0;
-}
-
-static int
-open_sensors(const struct hw_module_t* module,
-             const char*               name,
-             struct hw_device_t*      *device)
-{
-    int  status = -EINVAL;
-
-    D("%s: name=%s", __FUNCTION__, name);
-
-    if (!strcmp(name, SENSORS_HARDWARE_POLL)) {
-        SensorDevice *dev = malloc(sizeof(*dev));
-
-        memset(dev, 0, sizeof(*dev));
-
-        dev->device.common.tag     = HARDWARE_DEVICE_TAG;
-        dev->device.common.version = SENSORS_DEVICE_API_VERSION_1_3;
-        dev->device.common.module  = (struct hw_module_t*) module;
-        dev->device.common.close   = sensor_device_close;
-        dev->device.poll           = sensor_device_poll;
-        dev->device.activate       = sensor_device_activate;
-        dev->device.setDelay       = sensor_device_set_delay;
-
-        // Version 1.3-specific functions
-        dev->device.batch       = sensor_device_default_batch;
-        dev->device.flush       = sensor_device_default_flush;
-
-        dev->fd = -1;
-        pthread_mutex_init(&dev->lock, NULL);
-
-        *device = &dev->device.common;
-        status  = 0;
-    }
-    return status;
-}
-
-
-static struct hw_module_methods_t sensors_module_methods = {
-    .open = open_sensors
-};
-
-struct sensors_module_t HAL_MODULE_INFO_SYM = {
-    .common = {
-        .tag = HARDWARE_MODULE_TAG,
-        .version_major = 1,
-        .version_minor = 0,
-        .id = SENSORS_HARDWARE_MODULE_ID,
-        .name = "Dummy SENSORS Module",
-        .author = "The Android Open Source Project",
-        .methods = &sensors_module_methods,
-    },
-    .get_sensors_list = sensors__get_sensors_list
-};
diff --git a/thermal_info_config_felix.json b/thermal_info_config_felix.json
index dd844ba..6bbb5b0 100644
--- a/thermal_info_config_felix.json
+++ b/thermal_info_config_felix.json
@@ -966,5 +966,25 @@
             "PowerSampleDelay":60000,
             "PowerSampleCount":1
         }
-    ]
+    ],
+    "Stats": {
+        "Sensors": {
+            "RecordWithDefaultThreshold": ["VIRTUAL-SKIN"],
+            "RecordWithThreshold": [
+                {
+                    "Name": "VIRTUAL-SKIN",
+                    "Thresholds": [31, 33, 35, 37, 39, 41, 43, 45, 47, 49, 51]
+                },
+                {
+                    "Name": "VIRTUAL-USB-THROTTLING",
+                    "Thresholds": [2.0]
+                }
+            ]
+        },
+        "CoolingDevices": {
+            "RecordVotePerSensor": {
+                "DefaultThresholdEnableAll": true
+            }
+        }
+    }
 }
diff --git a/uwb/UWB-calibration-ce.conf b/uwb/UWB-calibration-ce.conf
index 6468d80..ddc9fca 100644
--- a/uwb/UWB-calibration-ce.conf
+++ b/uwb/UWB-calibration-ce.conf
@@ -1,16 +1,10 @@
-[CCC]version=2
-[CCC]ant0.ch5.prf64.pdoa_iso_rf2_rf1=0
-[CCC]ant0.ch5.prf64.pdoa_iso_rf1_rf2=0
-[CCC]ant0.ch9.prf64.pdoa_iso_rf2_rf1=0
-[CCC]ant0.ch9.prf64.pdoa_iso_rf1_rf2=0
-[CCC]ant0.ch5.prf64.pdoa_offset=0
-[CCC]ant0.ch9.prf64.pdoa_offset=0
-[CCC]ant0.ch5.prf64.pll_locking_code=0
-[CCC]ant0.ch9.prf64.pll_locking_code=0
-[CCC]id=0
+[CCC]version=3
 [CCC]wifi_coex_time_gap=10
 [CCC]ap_coop_mode=1
-[CCC]antenna_selection=4
+[CCC]wifi_coex_min_spacing=0x08
+[CCC]ch5.antenna_selection=ant0
+[CCC]ch9.antenna_selection=ant2
+[CCC]alternate_pulse_shape=0x00
 ant0.ch5.prf16.ant_delay=16449
 ant0.ch5.prf16.tx_power=0xFFFFD4FF
 ant0.ch5.prf16.pg_count=0
@@ -111,6 +105,7 @@
 auto_sleep_margin=20000
 alternate_pulse_shape=0x00
 restricted_channels=0
+[HAL]aoa_restricted_channels=0x20
 [HAL]aoa_capability=2
 [HAL]ant_sets.ch5.range.rx_ant_set_nonranging=6
 [HAL]ant_sets.ch5.range.rx_ant_set_ranging=6
diff --git a/uwb/UWB-calibration-default.conf b/uwb/UWB-calibration-default.conf
index 7838414..f3b70dd 100644
--- a/uwb/UWB-calibration-default.conf
+++ b/uwb/UWB-calibration-default.conf
@@ -1,16 +1,10 @@
-[CCC]version=2
-[CCC]ant0.ch5.prf64.pdoa_iso_rf2_rf1=0
-[CCC]ant0.ch5.prf64.pdoa_iso_rf1_rf2=0
-[CCC]ant0.ch9.prf64.pdoa_iso_rf2_rf1=0
-[CCC]ant0.ch9.prf64.pdoa_iso_rf1_rf2=0
-[CCC]ant0.ch5.prf64.pdoa_offset=0
-[CCC]ant0.ch9.prf64.pdoa_offset=0
-[CCC]ant0.ch5.prf64.pll_locking_code=0
-[CCC]ant0.ch9.prf64.pll_locking_code=0
-[CCC]id=0
+[CCC]version=3
 [CCC]wifi_coex_time_gap=10
 [CCC]ap_coop_mode=1
-[CCC]antenna_selection=4
+[CCC]wifi_coex_min_spacing=0x08
+[CCC]ch5.antenna_selection=ant0
+[CCC]ch9.antenna_selection=ant2
+[CCC]alternate_pulse_shape=0x00
 ant0.ch5.prf16.ant_delay=16449
 ant0.ch5.prf16.tx_power=0xFFFFD4FF
 ant0.ch5.prf16.pg_count=0
@@ -111,6 +105,7 @@
 auto_sleep_margin=20000
 alternate_pulse_shape=0x00
 restricted_channels=0
+[HAL]aoa_restricted_channels=0x20
 [HAL]aoa_capability=2
 [HAL]ant_sets.ch5.range.rx_ant_set_nonranging=6
 [HAL]ant_sets.ch5.range.rx_ant_set_ranging=6
diff --git a/uwb/UWB-calibration-fcc.conf b/uwb/UWB-calibration-fcc.conf
index 7838414..f3b70dd 100644
--- a/uwb/UWB-calibration-fcc.conf
+++ b/uwb/UWB-calibration-fcc.conf
@@ -1,16 +1,10 @@
-[CCC]version=2
-[CCC]ant0.ch5.prf64.pdoa_iso_rf2_rf1=0
-[CCC]ant0.ch5.prf64.pdoa_iso_rf1_rf2=0
-[CCC]ant0.ch9.prf64.pdoa_iso_rf2_rf1=0
-[CCC]ant0.ch9.prf64.pdoa_iso_rf1_rf2=0
-[CCC]ant0.ch5.prf64.pdoa_offset=0
-[CCC]ant0.ch9.prf64.pdoa_offset=0
-[CCC]ant0.ch5.prf64.pll_locking_code=0
-[CCC]ant0.ch9.prf64.pll_locking_code=0
-[CCC]id=0
+[CCC]version=3
 [CCC]wifi_coex_time_gap=10
 [CCC]ap_coop_mode=1
-[CCC]antenna_selection=4
+[CCC]wifi_coex_min_spacing=0x08
+[CCC]ch5.antenna_selection=ant0
+[CCC]ch9.antenna_selection=ant2
+[CCC]alternate_pulse_shape=0x00
 ant0.ch5.prf16.ant_delay=16449
 ant0.ch5.prf16.tx_power=0xFFFFD4FF
 ant0.ch5.prf16.pg_count=0
@@ -111,6 +105,7 @@
 auto_sleep_margin=20000
 alternate_pulse_shape=0x00
 restricted_channels=0
+[HAL]aoa_restricted_channels=0x20
 [HAL]aoa_capability=2
 [HAL]ant_sets.ch5.range.rx_ant_set_nonranging=6
 [HAL]ant_sets.ch5.range.rx_ant_set_ranging=6
diff --git a/uwb/UWB-calibration-jp.conf b/uwb/UWB-calibration-jp.conf
index 82bb3ca..1612133 100644
--- a/uwb/UWB-calibration-jp.conf
+++ b/uwb/UWB-calibration-jp.conf
@@ -1,16 +1,10 @@
-[CCC]version=2
-[CCC]ant0.ch5.prf64.pdoa_iso_rf2_rf1=0
-[CCC]ant0.ch5.prf64.pdoa_iso_rf1_rf2=0
-[CCC]ant0.ch9.prf64.pdoa_iso_rf2_rf1=0
-[CCC]ant0.ch9.prf64.pdoa_iso_rf1_rf2=0
-[CCC]ant0.ch5.prf64.pdoa_offset=0
-[CCC]ant0.ch9.prf64.pdoa_offset=0
-[CCC]ant0.ch5.prf64.pll_locking_code=0
-[CCC]ant0.ch9.prf64.pll_locking_code=0
-[CCC]id=0
+[CCC]version=3
 [CCC]wifi_coex_time_gap=10
 [CCC]ap_coop_mode=1
-[CCC]antenna_selection=12
+[CCC]wifi_coex_min_spacing=0x08
+[CCC]ch5.antenna_selection=ant0
+[CCC]ch9.antenna_selection=ant2
+[CCC]alternate_pulse_shape=0x01
 ant0.ch5.prf16.ant_delay=16449
 ant0.ch5.prf16.tx_power=0xFFFFD4FF
 ant0.ch5.prf16.pg_count=0
@@ -111,6 +105,7 @@
 auto_sleep_margin=20000
 alternate_pulse_shape=0x01
 restricted_channels=0x20
+[HAL]aoa_restricted_channels=0x20
 [HAL]aoa_capability=2
 [HAL]ant_sets.ch5.range.rx_ant_set_nonranging=6
 [HAL]ant_sets.ch5.range.rx_ant_set_ranging=6
diff --git a/uwb/UWB-calibration-restricted.conf b/uwb/UWB-calibration-restricted.conf
index 7e5bf55..1c98823 100644
--- a/uwb/UWB-calibration-restricted.conf
+++ b/uwb/UWB-calibration-restricted.conf
@@ -1,16 +1,10 @@
-[CCC]version=2
-[CCC]ant0.ch5.prf64.pdoa_iso_rf2_rf1=0
-[CCC]ant0.ch5.prf64.pdoa_iso_rf1_rf2=0
-[CCC]ant0.ch9.prf64.pdoa_iso_rf2_rf1=0
-[CCC]ant0.ch9.prf64.pdoa_iso_rf1_rf2=0
-[CCC]ant0.ch5.prf64.pdoa_offset=0
-[CCC]ant0.ch9.prf64.pdoa_offset=0
-[CCC]ant0.ch5.prf64.pll_locking_code=0
-[CCC]ant0.ch9.prf64.pll_locking_code=0
-[CCC]id=0
+[CCC]version=3
 [CCC]wifi_coex_time_gap=10
 [CCC]ap_coop_mode=1
-[CCC]antenna_selection=4
+[CCC]wifi_coex_min_spacing=0x08
+[CCC]ch5.antenna_selection=ant0
+[CCC]ch9.antenna_selection=ant2
+[CCC]alternate_pulse_shape=0x00
 ant0.ch5.prf16.ant_delay=16449
 ant0.ch5.prf16.tx_power=0xFFFFD4FF
 ant0.ch5.prf16.pg_count=0
@@ -111,6 +105,7 @@
 auto_sleep_margin=20000
 alternate_pulse_shape=0x00
 restricted_channels=0xFFFF
+[HAL]aoa_restricted_channels=0x20
 [HAL]aoa_capability=2
 [HAL]ant_sets.ch5.range.rx_ant_set_nonranging=6
 [HAL]ant_sets.ch5.range.rx_ant_set_ranging=6
diff --git a/uwb/UWB-calibration-tw.conf b/uwb/UWB-calibration-tw.conf
index 1f6c32c..5a348b2 100644
--- a/uwb/UWB-calibration-tw.conf
+++ b/uwb/UWB-calibration-tw.conf
@@ -1,16 +1,10 @@
-[CCC]version=2
-[CCC]ant0.ch5.prf64.pdoa_iso_rf2_rf1=0
-[CCC]ant0.ch5.prf64.pdoa_iso_rf1_rf2=0
-[CCC]ant0.ch9.prf64.pdoa_iso_rf2_rf1=0
-[CCC]ant0.ch9.prf64.pdoa_iso_rf1_rf2=0
-[CCC]ant0.ch5.prf64.pdoa_offset=0
-[CCC]ant0.ch9.prf64.pdoa_offset=0
-[CCC]ant0.ch5.prf64.pll_locking_code=0
-[CCC]ant0.ch9.prf64.pll_locking_code=0
-[CCC]id=0
+[CCC]version=3
 [CCC]wifi_coex_time_gap=10
 [CCC]ap_coop_mode=1
-[CCC]antenna_selection=12
+[CCC]wifi_coex_min_spacing=0x08
+[CCC]ch5.antenna_selection=ant0
+[CCC]ch9.antenna_selection=ant2
+[CCC]alternate_pulse_shape=0x00
 ant0.ch5.prf16.ant_delay=16449
 ant0.ch5.prf16.tx_power=0xFFFFD4FF
 ant0.ch5.prf16.pg_count=0
@@ -111,6 +105,7 @@
 auto_sleep_margin=20000
 alternate_pulse_shape=0x00
 restricted_channels=0x20
+[HAL]aoa_restricted_channels=0x20
 [HAL]aoa_capability=2
 [HAL]ant_sets.ch5.range.rx_ant_set_nonranging=6
 [HAL]ant_sets.ch5.range.rx_ant_set_ranging=6
diff --git a/uwb/UWB-calibration.conf b/uwb/UWB-calibration.conf
index 7838414..f3b70dd 100644
--- a/uwb/UWB-calibration.conf
+++ b/uwb/UWB-calibration.conf
@@ -1,16 +1,10 @@
-[CCC]version=2
-[CCC]ant0.ch5.prf64.pdoa_iso_rf2_rf1=0
-[CCC]ant0.ch5.prf64.pdoa_iso_rf1_rf2=0
-[CCC]ant0.ch9.prf64.pdoa_iso_rf2_rf1=0
-[CCC]ant0.ch9.prf64.pdoa_iso_rf1_rf2=0
-[CCC]ant0.ch5.prf64.pdoa_offset=0
-[CCC]ant0.ch9.prf64.pdoa_offset=0
-[CCC]ant0.ch5.prf64.pll_locking_code=0
-[CCC]ant0.ch9.prf64.pll_locking_code=0
-[CCC]id=0
+[CCC]version=3
 [CCC]wifi_coex_time_gap=10
 [CCC]ap_coop_mode=1
-[CCC]antenna_selection=4
+[CCC]wifi_coex_min_spacing=0x08
+[CCC]ch5.antenna_selection=ant0
+[CCC]ch9.antenna_selection=ant2
+[CCC]alternate_pulse_shape=0x00
 ant0.ch5.prf16.ant_delay=16449
 ant0.ch5.prf16.tx_power=0xFFFFD4FF
 ant0.ch5.prf16.pg_count=0
@@ -111,6 +105,7 @@
 auto_sleep_margin=20000
 alternate_pulse_shape=0x00
 restricted_channels=0
+[HAL]aoa_restricted_channels=0x20
 [HAL]aoa_capability=2
 [HAL]ant_sets.ch5.range.rx_ant_set_nonranging=6
 [HAL]ant_sets.ch5.range.rx_ant_set_ranging=6
diff --git a/vibrator/OWNERS b/vibrator/OWNERS
index 5d4a9c3..859c7e0 100644
--- a/vibrator/OWNERS
+++ b/vibrator/OWNERS
@@ -1,3 +1,4 @@
[email protected]
[email protected]
 [email protected]
[email protected]
 [email protected]
diff --git a/wifi/p2p_supplicant_overlay.conf b/wifi/p2p_supplicant_overlay.conf
index 4ec8453..74d24d8 100644
--- a/wifi/p2p_supplicant_overlay.conf
+++ b/wifi/p2p_supplicant_overlay.conf
@@ -8,3 +8,4 @@
 disable_scan_offload=1
 p2p_go_vht=1
 p2p_pref_chan=124:149, 115:36
+p2p_6ghz_disable=1