diff --git a/audio/tangorpro/aidl_config/audio_platform_configuration_aidl.xml b/audio/tangorpro/aidl_config/audio_platform_configuration_aidl.xml
new file mode 100644
index 0000000..912b4aa
--- /dev/null
+++ b/audio/tangorpro/aidl_config/audio_platform_configuration_aidl.xml
@@ -0,0 +1,76 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/audio/tangorpro/aidl_config/audio_policy_volumes.xml b/audio/tangorpro/aidl_config/audio_policy_volumes.xml
new file mode 100644
index 0000000..dfba47a
--- /dev/null
+++ b/audio/tangorpro/aidl_config/audio_policy_volumes.xml
@@ -0,0 +1,227 @@
+
+
+
+
+
+
+ 0,-4200
+ 33,-2800
+ 66,-1400
+ 100,0
+
+
+ 0,-2400
+ 33,-1600
+ 66,-800
+ 100,0
+
+
+ 0,-2400
+ 33,-1600
+ 66,-800
+ 100,0
+
+
+
+
+ 1,-3000
+ 33,-2600
+ 66,-2200
+ 100,-1800
+
+
+ 1,-4700
+ 33,-3500
+ 66,-2350
+ 100,-1250
+
+
+
+
+
+
+ 1,-3350
+ 33,-2100
+ 66,-1000
+ 100,0
+
+
+
+
+
+
+
+
+
+
+
+ 0,-4800
+ 33,-2050
+ 66,-800
+ 100,0
+
+
+
+
+
+
+ 1,-3800
+ 33,-2600
+ 66,-1400
+ 100,0
+
+
+
+
+
+ 0,-4200
+ 33,-2800
+ 66,-1400
+ 100,0
+
+
+ 0,-2400
+ 33,-1600
+ 66,-800
+ 100,0
+
+
+ 0,-4200
+ 33,-2800
+ 66,-1400
+ 100,0
+
+
+
+
+ 1,-3000
+ 33,-2600
+ 66,-2200
+ 100,-1800
+
+
+ 1,-4700
+ 33,-3500
+ 66,-2350
+ 100,-1250
+
+
+
+
+
+ 1,-3000
+ 33,-2600
+ 66,-2200
+ 100,-1800
+
+
+ 1,-5500
+ 33,-3650
+ 66,-2700
+ 100,-1800
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/audio/tangorpro/aidl_config/mixer_paths_aidl.xml b/audio/tangorpro/aidl_config/mixer_paths_aidl.xml
new file mode 100644
index 0000000..2d051b8
--- /dev/null
+++ b/audio/tangorpro/aidl_config/mixer_paths_aidl.xml
@@ -0,0 +1,1408 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/audio/tangorpro/audio-tables.mk b/audio/tangorpro/audio-tables.mk
index 0debff0..b7e383a 100644
--- a/audio/tangorpro/audio-tables.mk
+++ b/audio/tangorpro/audio-tables.mk
@@ -16,6 +16,15 @@
AUDIO_TABLE_FOLDER := tangorpro
+# Enable this to build AIDL
+BUILD_AUDIO_AIDL_VERSION := false
+
+ifeq ($(BUILD_AUDIO_AIDL_VERSION),true)
+PRODUCT_COPY_FILES += \
+ device/google/tangorpro/audio/$(AUDIO_TABLE_FOLDER)/aidl_config/audio_platform_configuration_aidl.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_platform_configuration_aidl.xml \
+ device/google/tangorpro/audio/$(AUDIO_TABLE_FOLDER)/aidl_config/audio_policy_volumes.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_policy_volumes.xml \
+ device/google/tangorpro/audio/$(AUDIO_TABLE_FOLDER)/aidl_config/mixer_paths_aidl.xml:$(TARGET_COPY_OUT_VENDOR)/etc/mixer_paths_aidl.xml
+else
# Platform Configuration for AudioHAL / SoundTriggerHAL
PRODUCT_COPY_FILES += \
device/google/tangorpro/audio/$(AUDIO_TABLE_FOLDER)/config/audio_policy_configuration_bluetooth_legacy_hal.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio_policy_configuration_bluetooth_legacy_hal.xml \
@@ -34,6 +43,7 @@ PRODUCT_COPY_FILES += \
# Mixer Path Configuration for AudioHAL
PRODUCT_COPY_FILES += \
device/google/tangorpro/audio/$(AUDIO_TABLE_FOLDER)/config/mixer_paths.xml:$(TARGET_COPY_OUT_VENDOR)/etc/mixer_paths.xml
+endif
# Speaker firmware files
SPK_FIRMWARE_PATH := $(AUDIO_TABLE_FOLDER)/cs35l41/fw
@@ -51,7 +61,16 @@ PRODUCT_COPY_FILES += \
device/google/tangorpro/audio/$(AUDIO_TABLE_FOLDER)/tuning/fortemedia/HEADSET.dat:$(TARGET_COPY_OUT_VENDOR)/etc/aoc/HEADSET.dat \
device/google/tangorpro/audio/$(AUDIO_TABLE_FOLDER)/tuning/fortemedia/mcps.dat:$(TARGET_COPY_OUT_VENDOR)/etc/aoc/mcps.dat \
device/google/tangorpro/audio/$(AUDIO_TABLE_FOLDER)/tuning/waves/waves_config.ini:$(TARGET_COPY_OUT_VENDOR)/etc/waves_config.ini \
- device/google/tangorpro/audio/$(AUDIO_TABLE_FOLDER)/tuning/waves/waves_preset.mps:$(TARGET_COPY_OUT_VENDOR)/etc/waves_preset.mps
+ device/google/tangorpro/audio/$(AUDIO_TABLE_FOLDER)/tuning/waves/waves_preset.mps:$(TARGET_COPY_OUT_VENDOR)/etc/waves_preset.mps \
+ device/google/tangorpro/audio/$(AUDIO_TABLE_FOLDER)/tuning/apmg3/uplink_headset_config.pb:$(TARGET_COPY_OUT_VENDOR)/etc/aoc/uplink_headset_config.pb \
+ device/google/tangorpro/audio/$(AUDIO_TABLE_FOLDER)/tuning/apmg3/uplink_dock_config.pb:$(TARGET_COPY_OUT_VENDOR)/etc/aoc/uplink_dock_config.pb \
+ device/google/tangorpro/audio/$(AUDIO_TABLE_FOLDER)/tuning/apmg3/uplink_tablet_stereo_config.pb:$(TARGET_COPY_OUT_VENDOR)/etc/aoc/uplink_tablet_stereo_config.pb \
+ device/google/tangorpro/audio/$(AUDIO_TABLE_FOLDER)/tuning/apmg3/uplink_headset_aec_off_config.pb:$(TARGET_COPY_OUT_VENDOR)/etc/aoc/uplink_headset_aec_off_config.pb \
+ device/google/tangorpro/audio/$(AUDIO_TABLE_FOLDER)/tuning/apmg3/uplink_dock_aec_off_config.pb:$(TARGET_COPY_OUT_VENDOR)/etc/aoc/uplink_dock_aec_off_config.pb \
+ device/google/tangorpro/audio/$(AUDIO_TABLE_FOLDER)/tuning/apmg3/uplink_tablet_stereo_aec_off_config.pb:$(TARGET_COPY_OUT_VENDOR)/etc/aoc/uplink_tablet_stereo_aec_off_config.pb \
+ device/google/tangorpro/audio/$(AUDIO_TABLE_FOLDER)/tuning/apmg3/downlink_headset_config.pb:$(TARGET_COPY_OUT_VENDOR)/etc/aoc/downlink_headset_config.pb \
+ device/google/tangorpro/audio/$(AUDIO_TABLE_FOLDER)/tuning/apmg3/downlink_dock_config.pb:$(TARGET_COPY_OUT_VENDOR)/etc/aoc/downlink_dock_config.pb \
+ device/google/tangorpro/audio/$(AUDIO_TABLE_FOLDER)/tuning/apmg3/downlink_tablet_stereo_config.pb:$(TARGET_COPY_OUT_VENDOR)/etc/aoc/downlink_tablet_stereo_config.pb
# userdebug specific
ifneq (,$(filter userdebug eng, $(TARGET_BUILD_VARIANT)))
diff --git a/audio/tangorpro/config/audio_effects.xml b/audio/tangorpro/config/audio_effects.xml
index 9c2ba29..11e66e5 100644
--- a/audio/tangorpro/config/audio_effects.xml
+++ b/audio/tangorpro/config/audio_effects.xml
@@ -10,6 +10,7 @@
+
@@ -54,6 +55,7 @@
+
diff --git a/audio/tangorpro/config/audio_platform_configuration.xml b/audio/tangorpro/config/audio_platform_configuration.xml
index f8fb665..959b4c5 100644
--- a/audio/tangorpro/config/audio_platform_configuration.xml
+++ b/audio/tangorpro/config/audio_platform_configuration.xml
@@ -187,6 +187,8 @@
+
+
@@ -197,7 +199,7 @@
-
+
@@ -223,6 +225,10 @@
+
+
+
+
@@ -239,10 +245,15 @@
+
+
+
+
+
@@ -280,7 +291,9 @@
+
+
@@ -293,11 +306,15 @@
-
+
-
+
+
+
+
+
diff --git a/audio/tangorpro/config/audio_policy_configuration.xml b/audio/tangorpro/config/audio_policy_configuration.xml
index 78c8ea3..15c529b 100644
--- a/audio/tangorpro/config/audio_policy_configuration.xml
+++ b/audio/tangorpro/config/audio_policy_configuration.xml
@@ -58,6 +58,10 @@
+
+
+
+ encodedFormats="AUDIO_FORMAT_OPUS AUDIO_FORMAT_AAC AUDIO_FORMAT_SBC">
+ encodedFormats="AUDIO_FORMAT_OPUS AUDIO_FORMAT_AAC AUDIO_FORMAT_SBC">
+ encodedFormats="AUDIO_FORMAT_OPUS AUDIO_FORMAT_AAC AUDIO_FORMAT_SBC">
@@ -189,21 +193,21 @@
+ sources="primary output,deep buffer,raw,compressed_offload,mmap_no_irq_out,voip_rx,ultrasound output,immersive_out"/>
+ sources="primary output,deep buffer,compressed_offload,voip_rx,raw,mmap_no_irq_out,immersive_out"/>
+ sources="primary output,deep buffer,compressed_offload,voip_rx,raw,mmap_no_irq_out,immersive_out"/>
+ sources="primary output,deep buffer,compressed_offload,voip_rx,raw,mmap_no_irq_out,immersive_out"/>
+ sources="primary output,deep buffer,raw,compressed_offload,mmap_no_irq_out,voip_rx,hifi_playback,immersive_out"/>
+ sources="primary output,deep buffer,compressed_offload,mmap_no_irq_out,voip_rx"/>
+ sources="primary output,deep buffer,raw,compressed_offload,mmap_no_irq_out,voip_rx,hifi_playback,immersive_out"/>
+
+
+
+ sources="primary output,deep buffer,raw,compressed_offload,mmap_no_irq_out,voip_rx,hifi_playback,immersive_out"/>
+ sources="primary output,deep buffer,raw,compressed_offload,mmap_no_irq_out,voip_rx,hifi_playback,immersive_out"/>
+ sources="primary output,deep buffer,compressed_offload,mmap_no_irq_out,voip_rx"/>
+
@@ -177,6 +178,7 @@
+
@@ -188,6 +190,7 @@
+
@@ -607,14 +610,17 @@
+
+
+
diff --git a/audio/tangorpro/tuning/apmg3/downlink_dock_config.pb b/audio/tangorpro/tuning/apmg3/downlink_dock_config.pb
new file mode 100644
index 0000000..bd2111b
Binary files /dev/null and b/audio/tangorpro/tuning/apmg3/downlink_dock_config.pb differ
diff --git a/audio/tangorpro/tuning/apmg3/downlink_headset_config.pb b/audio/tangorpro/tuning/apmg3/downlink_headset_config.pb
new file mode 100644
index 0000000..86eb4bc
Binary files /dev/null and b/audio/tangorpro/tuning/apmg3/downlink_headset_config.pb differ
diff --git a/audio/tangorpro/tuning/apmg3/downlink_tablet_stereo_config.pb b/audio/tangorpro/tuning/apmg3/downlink_tablet_stereo_config.pb
new file mode 100644
index 0000000..2ea4f92
Binary files /dev/null and b/audio/tangorpro/tuning/apmg3/downlink_tablet_stereo_config.pb differ
diff --git a/audio/tangorpro/tuning/apmg3/uplink_dock_aec_off_config.pb b/audio/tangorpro/tuning/apmg3/uplink_dock_aec_off_config.pb
new file mode 100644
index 0000000..bd8b720
Binary files /dev/null and b/audio/tangorpro/tuning/apmg3/uplink_dock_aec_off_config.pb differ
diff --git a/audio/tangorpro/tuning/apmg3/uplink_dock_config.pb b/audio/tangorpro/tuning/apmg3/uplink_dock_config.pb
new file mode 100644
index 0000000..7996795
Binary files /dev/null and b/audio/tangorpro/tuning/apmg3/uplink_dock_config.pb differ
diff --git a/audio/tangorpro/tuning/apmg3/uplink_headset_aec_off_config.pb b/audio/tangorpro/tuning/apmg3/uplink_headset_aec_off_config.pb
new file mode 100644
index 0000000..03f7574
Binary files /dev/null and b/audio/tangorpro/tuning/apmg3/uplink_headset_aec_off_config.pb differ
diff --git a/audio/tangorpro/tuning/apmg3/uplink_headset_config.pb b/audio/tangorpro/tuning/apmg3/uplink_headset_config.pb
new file mode 100644
index 0000000..b2c4aa6
Binary files /dev/null and b/audio/tangorpro/tuning/apmg3/uplink_headset_config.pb differ
diff --git a/audio/tangorpro/tuning/apmg3/uplink_tablet_stereo_aec_off_config.pb b/audio/tangorpro/tuning/apmg3/uplink_tablet_stereo_aec_off_config.pb
new file mode 100644
index 0000000..eb615ce
Binary files /dev/null and b/audio/tangorpro/tuning/apmg3/uplink_tablet_stereo_aec_off_config.pb differ
diff --git a/audio/tangorpro/tuning/apmg3/uplink_tablet_stereo_config.pb b/audio/tangorpro/tuning/apmg3/uplink_tablet_stereo_config.pb
new file mode 100644
index 0000000..4c8a821
Binary files /dev/null and b/audio/tangorpro/tuning/apmg3/uplink_tablet_stereo_config.pb differ
diff --git a/audio/tangorpro/tuning/waves/waves_config.ini b/audio/tangorpro/tuning/waves/waves_config.ini
index 21b7a19..61f1cc4 100644
--- a/audio/tangorpro/tuning/waves/waves_config.ini
+++ b/audio/tangorpro/tuning/waves/waves_config.ini
@@ -30,6 +30,7 @@ SPEAKER_MUSIC = OM:1,SM:2,OST:OST_SPEAKER
SPEAKER_SAFE_MUSIC = OM:1,SM:2,OST:OST_SPEAKER
SPEAKER_SAFE_CALL = OM:1,SM:2,OST:OST_SPEAKER
SPEAKER_MUSIC_2_1 = OM:6,SM:2
+SPEAKER_RESERVED_MUSIC = OM:1,SM:3,OST:OST_SPEAKER
DOCKSPEAKER_MUSIC = OM:4,SM:2
DOCKSPEAKER_VOICE_MUSIC = OM:7,SM:2
@@ -39,7 +40,7 @@ DOCKSPEAKER_VOICE_MUSIC = OM:7,SM:2
# This can be configured by Waves or platform vendor.
########################################################################################################
[HAL_SUPPORTED_CONTROLS]
-SPEAKER_INSTANCE = INSTANCE:1,DEV:0,SR:SR_COMMON,PRESET:SPEAKER_MUSIC|SPEAKER_SAFE_MUSIC|SPEAKER_SAFE_CALL|SPEAKER_MUSIC_2_1
+SPEAKER_INSTANCE = INSTANCE:1,DEV:0,SR:SR_COMMON,PRESET:SPEAKER_MUSIC|SPEAKER_SAFE_MUSIC|SPEAKER_SAFE_CALL|SPEAKER_MUSIC_2_1|SPEAKER_RESERVED_MUSIC
DOCKSPEAKER_INSTANCE = INSTANCE:4,DEV:0,SR:SR_COMMON,PRESET:DOCKSPEAKER_MUSIC|DOCKSPEAKER_VOICE_MUSIC
[COEFS_CONVERTER_SETTING]
@@ -54,14 +55,16 @@ AlgFxPath64=/vendor/lib64/libAlgFx_HiFi3z.so
#AudioFormatIncrement=8
[CUSTOM_ACTION_259]
-CASE_1=PRIORITY:0,NUMBERS:2:0|1:0,PRESET:SPEAKER_MUSIC
-CASE_2=PRIORITY:1,NUMBERS:1|2|4194304:2|3|4:0|1,PRESET:SPEAKER_SAFE_CALL
-CASE_3=PRIORITY:2,NUMBERS:1|4194304:0|1:0|1,PRESET:SPEAKER_SAFE_MUSIC
-CASE_4=PRIORITY:3,NUMBERS:4096|16384|67108864:0|1|4:0|1,PRESET:DOCKSPEAKER_MUSIC
-CASE_5=PRIORITY:4,NUMBERS:2:0|1:1,PRESET:SPEAKER_MUSIC_2_1
-CASE_6=PRIORITY:5,NUMBERS:4096|16384|67108864:2|3:0|1,PRESET:DOCKSPEAKER_VOICE_MUSIC
+CASE_1=PRIORITY:0,NUMBERS:2:0|1:0:0,PRESET:SPEAKER_MUSIC
+CASE_2=PRIORITY:1,NUMBERS:1|2|4194304:2|3|4:0|1:0|1,PRESET:SPEAKER_SAFE_CALL
+CASE_3=PRIORITY:2,NUMBERS:1|4194304:0|1:0|1:0|1,PRESET:SPEAKER_SAFE_MUSIC
+CASE_4=PRIORITY:3,NUMBERS:4096|16384|67108864:0|1|4:0|1:0|1,PRESET:DOCKSPEAKER_MUSIC
+CASE_5=PRIORITY:4,NUMBERS:2:0|1:1:0|1,PRESET:SPEAKER_MUSIC_2_1
+CASE_6=PRIORITY:5,NUMBERS:4096|16384|67108864:2|3:0|1:0|1,PRESET:DOCKSPEAKER_VOICE_MUSIC
+CASE_7=PRIORITY:6,NUMBERS:2:0|1:0:1,PRESET:SPEAKER_RESERVED_MUSIC
-# Action 259 parameters: audio_devices_t, audio_mode_t, is_dock_speaker_active_t
+# Action 259 parameters: audio_devices_t, audio_mode_t, is_dock_speaker_active_t, is_spatial_audio_active_t
# - audio_devices_t : current active device
# - audio_mode_t : 0 - normal, 1 - incoming, 2 - voice call, 3 - voip
-# - is_dock_speaker_active_t: 0 - Disabled, 1 - Enabled
\ No newline at end of file
+# - is_dock_speaker_active_t: 0 - Disabled, 1 - Enabled
+# - is_spatial_audio_active_t: 0 - Disabled, 1 - Enabled
diff --git a/audio/tangorpro/tuning/waves/waves_preset.mps b/audio/tangorpro/tuning/waves/waves_preset.mps
index 36d7de5..50e9600 100644
Binary files a/audio/tangorpro/tuning/waves/waves_preset.mps and b/audio/tangorpro/tuning/waves/waves_preset.mps differ
diff --git a/bluetooth/syna_default.mk b/bluetooth/syna_default.mk
index 72a3015..53a04b1 100644
--- a/bluetooth/syna_default.mk
+++ b/bluetooth/syna_default.mk
@@ -15,9 +15,22 @@
# limitations under the License.
#
+# 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
+
+# Not support LE Audio dual mic SWB call based on the current launch strategy
+PRODUCT_PRODUCT_PROPERTIES += \
+ bluetooth.leaudio.dual_bidirection_swb.supported=false
+
# Bluetooth Super Wide Band
PRODUCT_PRODUCT_PROPERTIES += \
- bluetooth.hfp.swb.supported=true
+ bluetooth.hfp.swb.supported=false
# Bluetooth LE Audio
PRODUCT_PRODUCT_PROPERTIES += \
@@ -29,6 +42,10 @@ PRODUCT_PRODUCT_PROPERTIES += \
bluetooth.profile.ccp.server.enabled?=true \
bluetooth.profile.vcp.controller.enabled?=true \
+# LE Audio Lunch Config for Phase 1 (LE audio toggle hidden by default)
+PRODUCT_PRODUCT_PROPERTIES += \
+ persist.bluetooth.leaudio.toggle_visible=false
+
# Bluetooth HAL and Pixel extension
DEVICE_MANIFEST_FILE += \
device/google/tangorpro/bluetooth/manifest_bluetooth.xml
@@ -55,7 +72,7 @@ PRODUCT_PROPERTY_OVERRIDES += \
PRODUCT_PROPERTY_OVERRIDES += \
ro.bluetooth.a2dp_offload.supported=true \
persist.bluetooth.a2dp_offload.disabled=false \
- persist.bluetooth.a2dp_offload.cap=sbc-aac-aptx-aptxhd-ldac
+ persist.bluetooth.a2dp_offload.cap=sbc-aac-aptx-aptxhd-ldac-opus
PRODUCT_PRODUCT_PROPERTIES += \
persist.bluetooth.firmware.selection="BTFW.hcd"
diff --git a/conf/init.tangorpro.rc b/conf/init.tangorpro.rc
index afcbf90..95f92ef 100644
--- a/conf/init.tangorpro.rc
+++ b/conf/init.tangorpro.rc
@@ -1,6 +1,9 @@
# Tangorpro specific init.rc
import /vendor/etc/init/hw/init.gs201.rc
+on init && property:ro.build.flavor=tangorpro-userdebug
+ import /vendor/etc/init/hw/init.tangorpro.userdebug.rc
+
on init && property:ro.vendor.factory=1
import /vendor/etc/init/hw/init.factory.rc
diff --git a/device-tangorpro.mk b/device-tangorpro.mk
index b51c64b..ae62f59 100644
--- a/device-tangorpro.mk
+++ b/device-tangorpro.mk
@@ -106,6 +106,23 @@ PRODUCT_SOONG_NAMESPACES += device/google/tangorpro/powerstats
# Bluetooth HAL and Pixel extension
include device/google/tangorpro/bluetooth/syna_default.mk
+# Spatial Audio
+PRODUCT_PACKAGES += \
+ libspatialaudio
+
+# optimize spatializer effect
+PRODUCT_PROPERTY_OVERRIDES += \
+ audio.spatializer.effect.util_clamp_min=300
+
+# declare use of spatial audio
+PRODUCT_PROPERTY_OVERRIDES += \
+ ro.audio.spatializer_enabled=true \
+ persist.vendor.audio.spatializer.speaker_enabled=true
+
+# Bluetooth OPUS codec
+PRODUCT_PRODUCT_PROPERTIES += \
+ persist.bluetooth.opus.enabled=true
+
# Keymaster HAL
#LOCAL_KEYMASTER_PRODUCT_PACKAGE ?= android.hardware.keymaster@4.1-service
@@ -150,9 +167,6 @@ PRODUCT_SOONG_NAMESPACES += vendor/google_devices/tangorpro/prebuilts
PRODUCT_PROPERTY_OVERRIDES += \
ro.vendor.wifi.sap.interface=wlan1
-# Set ro.crypto.metadata_init_delete_all_keys.enabled to false to unblock boot
-PRODUCT_PROPERTY_OVERRIDES += ro.crypto.metadata_init_delete_all_keys.enabled=false
-
# Assistant minimum volume
PRODUCT_PROPERTY_OVERRIDES += \
ro.config.assistant_vol_min=1
@@ -259,6 +273,14 @@ PRODUCT_PROPERTY_OVERRIDES += \
PRODUCT_VENDOR_PROPERTIES += \
persist.vendor.camera.exif_reveal_make_model=true
+# Audio
+PRODUCT_PROPERTY_OVERRIDES += \
+ ro.audio.multi_usb_mode=true
+
+# Audio package
+PRODUCT_PACKAGES += \
+ audio_apmg3_aoc
+
# AudioProxy
PRODUCT_PACKAGES += \
libaudio_proxy.google \
@@ -266,6 +288,14 @@ PRODUCT_PACKAGES += \
DEVICE_FRAMEWORK_COMPATIBILITY_MATRIX_FILE := device/google/tangorpro/device_framework_matrix_product_tangorpro.xml
+#Audio
+PRODUCT_PROPERTY_OVERRIDES += \
+ persist.vendor.audio.speech_enhancement.enable=1
+
+PRODUCT_PACKAGES += \
+ libspeechenhancer \
+ audio_speech_enhancer_aoc
+
PRODUCT_COPY_FILES += \
device/google/tangorpro/public.libraries-google-tangorpro.txt:$(TARGET_COPY_OUT_SYSTEM_EXT)/etc/public.libraries-google.txt
diff --git a/manifest.xml b/manifest.xml
index 8ece978..a427ac0 100644
--- a/manifest.xml
+++ b/manifest.xml
@@ -98,16 +98,6 @@
hwbinder
@1.2::IBootControl/default
-
- android.hardware.neuralnetworks
- hwbinder
- 1.2
-
- IDevice
- armnn
-
- @1.2::IDevice/armnn
-
android.hardware.neuralnetworks
hwbinder
diff --git a/powerhint.json b/powerhint.json
index 7659880..5ba5566 100644
--- a/powerhint.json
+++ b/powerhint.json
@@ -292,6 +292,14 @@
],
"ResetOnInit": true
},
+ {
+ "Name": "NewlyIdleBalancer",
+ "Path": "/proc/vendor_sched/idle_balancer",
+ "Values": [
+ "0",
+ "1"
+ ],
+ },
{
"Name": "DisplayWakeup",
"Path": "/sys/devices/platform/1c240000.drmdecon/early_wakeup",
@@ -690,30 +698,6 @@
"Type": "DoHint",
"Value": "LAUNCH_PMU"
},
- {
- "PowerHint": "LAUNCH",
- "Type": "DoHint",
- "EnableProperty": "vendor.powerhal.camerarunning",
- "Value": "CDCPUSET_RESTRICTED"
- },
- {
- "PowerHint": "LAUNCH",
- "Type": "DoHint",
- "EnableProperty": "vendor.powerhal.camerarunning",
- "Value": "CDHIGHCPUSETCPUS_RESTRICTED"
- },
- {
- "PowerHint": "LAUNCH",
- "Type": "DoHint",
- "EnableProperty": "vendor.powerhal.camerarunning",
- "Value": "CDMIDCPUSETCPUS_RESTRICTED"
- },
- {
- "PowerHint": "LAUNCH",
- "Type": "DoHint",
- "EnableProperty": "vendor.powerhal.camerarunning",
- "Value": "CDMIDHIGHCPUSETCPUS_RESTRICTED"
- },
{
"PowerHint": "LAUNCH",
"Type": "DoHint",
@@ -1061,6 +1045,12 @@
"Duration": 0,
"Value": "0"
},
+ {
+ "PowerHint": "CAMERA_STREAMING_EXTREME",
+ "Node": "NewlyIdleBalancer",
+ "Duration": 0,
+ "Value": "0"
+ },
{
"PowerHint": "CAMERA_STREAMING_HIGH",
"Node": "PowerHALCameraRunning",
@@ -1133,6 +1123,12 @@
"Duration": 0,
"Value": "0"
},
+ {
+ "PowerHint": "CAMERA_STREAMING_HIGH",
+ "Node": "NewlyIdleBalancer",
+ "Duration": 0,
+ "Value": "0"
+ },
{
"PowerHint": "CAMERA_STREAMING_STANDARD",
"Node": "PowerHALCameraRunning",
@@ -1229,6 +1225,12 @@
"Duration": 0,
"Value": "0"
},
+ {
+ "PowerHint": "CAMERA_STREAMING_STANDARD",
+ "Node": "NewlyIdleBalancer",
+ "Duration": 0,
+ "Value": "0"
+ },
{
"PowerHint": "CAMERA_STREAMING_LOW",
"Node": "PowerHALCameraRunning",
@@ -1289,6 +1291,12 @@
"Duration": 0,
"Value": "0"
},
+ {
+ "PowerHint": "CAMERA_STREAMING_LOW",
+ "Node": "NewlyIdleBalancer",
+ "Duration": 0,
+ "Value": "0"
+ },
{
"PowerHint": "CAMERA_VIDEO_RECORDING",
"Type": "MaskHint",
@@ -1608,72 +1616,6 @@
"Duration": 0,
"Value": "0"
},
- {
- "PowerHint": "THERMAL_VIRTUAL-SKIN-HINT_MODERATE",
- "Node": "PMU_POLL",
- "Duration": 0,
- "Value": "1"
- },
- {
- "PowerHint": "THERMAL_VIRTUAL-SKIN-HINT_MODERATE",
- "Node": "BigControlTempSet",
- "Duration": 0,
- "Value": "80000"
- },
- {
- "PowerHint": "THERMAL_VIRTUAL-SKIN-HINT_MODERATE",
- "Node": "MidControlTempSet",
- "Duration": 0,
- "Value": "80000"
- },
- {
- "PowerHint": "THERMAL_VIRTUAL-SKIN-HINT_MODERATE",
- "Node": "LittleControlTempSet",
- "Duration": 0,
- "Value": "80000"
- },
- {
- "PowerHint": "THERMAL_VIRTUAL-SKIN-HINT_MODERATE",
- "Node": "G3dControlTempSet",
- "Duration": 0,
- "Value": "80000"
- },
- {
- "PowerHint": "THERMAL_VIRTUAL-SKIN-HINT_MODERATE",
- "Node": "TpuControlTempSet",
- "Duration": 0,
- "Value": "80000"
- },
- {
- "PowerHint": "THERMAL_VIRTUAL-SKIN-HINT_MODERATE",
- "Node": "BigSwitchOnTempSet",
- "Duration": 0,
- "Value": "60000"
- },
- {
- "PowerHint": "THERMAL_VIRTUAL-SKIN-HINT_MODERATE",
- "Node": "MidSwitchOnTempSet",
- "Duration": 0,
- "Value": "60000"
- },
- {
- "PowerHint": "THERMAL_VIRTUAL-SKIN-HINT_MODERATE",
- "Node": "LittleSwitchOnTempSet",
- "Duration": 0,
- "Value": "60000"
- },
- {
- "PowerHint": "THERMAL_VIRTUAL-SKIN-HINT_MODERATE",
- "Node": "G3dSwitchOnTempSet",
- "Duration": 0,
- "Value": "60000"
- },
- {
- "PowerHint": "THERMAL_VIRTUAL-SKIN-HINT_MODERATE",
- "Node": "TpuSwitchOnTempSet",
- "Duration": 0,
- "Value": "60000"
- },
{
"PowerHint": "THERMAL_VIRTUAL-SKIN-HINT_MODERATE",
"Node": "Dex2oatThreads",
@@ -1686,186 +1628,12 @@
"Duration": 0,
"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,
- "Value": "1"
- },
- {
- "PowerHint": "THERMAL_VIRTUAL-SKIN-HINT_SEVERE",
- "Node": "BigControlTempSet",
- "Duration": 0,
- "Value": "80000"
- },
- {
- "PowerHint": "THERMAL_VIRTUAL-SKIN-HINT_SEVERE",
- "Node": "MidControlTempSet",
- "Duration": 0,
- "Value": "80000"
- },
- {
- "PowerHint": "THERMAL_VIRTUAL-SKIN-HINT_SEVERE",
- "Node": "LittleControlTempSet",
- "Duration": 0,
- "Value": "80000"
- },
- {
- "PowerHint": "THERMAL_VIRTUAL-SKIN-HINT_SEVERE",
- "Node": "G3dControlTempSet",
- "Duration": 0,
- "Value": "80000"
- },
- {
- "PowerHint": "THERMAL_VIRTUAL-SKIN-HINT_SEVERE",
- "Node": "TpuControlTempSet",
- "Duration": 0,
- "Value": "80000"
- },
- {
- "PowerHint": "THERMAL_VIRTUAL-SKIN-HINT_SEVERE",
- "Node": "BigSwitchOnTempSet",
- "Duration": 0,
- "Value": "60000"
- },
- {
- "PowerHint": "THERMAL_VIRTUAL-SKIN-HINT_SEVERE",
- "Node": "MidSwitchOnTempSet",
- "Duration": 0,
- "Value": "60000"
- },
- {
- "PowerHint": "THERMAL_VIRTUAL-SKIN-HINT_SEVERE",
- "Node": "LittleSwitchOnTempSet",
- "Duration": 0,
- "Value": "60000"
- },
- {
- "PowerHint": "THERMAL_VIRTUAL-SKIN-HINT_SEVERE",
- "Node": "G3dSwitchOnTempSet",
- "Duration": 0,
- "Value": "60000"
- },
- {
- "PowerHint": "THERMAL_VIRTUAL-SKIN-HINT_SEVERE",
- "Node": "TpuSwitchOnTempSet",
- "Duration": 0,
- "Value": "60000"
- },
- {
- "PowerHint": "THERMAL_VIRTUAL-SKIN-HINT_SEVERE",
- "Node": "Dex2oatThreads",
- "Duration": 0,
- "Value": "4"
- },
- {
- "PowerHint": "THERMAL_VIRTUAL-SKIN-HINT_SEVERE",
- "Node": "Dex2oatCPUSet",
- "Duration": 0,
- "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,
- "Value": "1"
- },
- {
- "PowerHint": "THERMAL_VIRTUAL-SKIN-HINT_CRITICAL",
- "Node": "BigControlTempSet",
- "Duration": 0,
- "Value": "80000"
- },
- {
- "PowerHint": "THERMAL_VIRTUAL-SKIN-HINT_CRITICAL",
- "Node": "MidControlTempSet",
- "Duration": 0,
- "Value": "80000"
- },
- {
- "PowerHint": "THERMAL_VIRTUAL-SKIN-HINT_CRITICAL",
- "Node": "LittleControlTempSet",
- "Duration": 0,
- "Value": "80000"
- },
- {
- "PowerHint": "THERMAL_VIRTUAL-SKIN-HINT_CRITICAL",
- "Node": "G3dControlTempSet",
- "Duration": 0,
- "Value": "80000"
- },
- {
- "PowerHint": "THERMAL_VIRTUAL-SKIN-HINT_CRITICAL",
- "Node": "TpuControlTempSet",
- "Duration": 0,
- "Value": "80000"
- },
- {
- "PowerHint": "THERMAL_VIRTUAL-SKIN-HINT_CRITICAL",
- "Node": "BigSwitchOnTempSet",
- "Duration": 0,
- "Value": "60000"
- },
- {
- "PowerHint": "THERMAL_VIRTUAL-SKIN-HINT_CRITICAL",
- "Node": "MidSwitchOnTempSet",
- "Duration": 0,
- "Value": "60000"
- },
- {
- "PowerHint": "THERMAL_VIRTUAL-SKIN-HINT_CRITICAL",
- "Node": "LittleSwitchOnTempSet",
- "Duration": 0,
- "Value": "60000"
- },
- {
- "PowerHint": "THERMAL_VIRTUAL-SKIN-HINT_CRITICAL",
- "Node": "G3dSwitchOnTempSet",
- "Duration": 0,
- "Value": "60000"
- },
- {
- "PowerHint": "THERMAL_VIRTUAL-SKIN-HINT_CRITICAL",
- "Node": "TpuSwitchOnTempSet",
- "Duration": 0,
- "Value": "60000"
- },
{
"PowerHint": "THERMAL_VIRTUAL-SKIN-HINT_CRITICAL",
"Node": "Dex2oatThreads",
"Duration": 0,
"Value": "2"
},
- {
- "PowerHint": "THERMAL_VIRTUAL-SKIN-HINT_CRITICAL",
- "Node": "Dex2oatCPUSet",
- "Duration": 0,
- "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,
- "Value": "1"
- },
{
"PowerHint": "THERMAL_VIRTUAL-SKIN-HINT_EMERGENCY",
"Node": "CPU_LITTLE_TSKIN_BYPASS",
@@ -1884,84 +1652,12 @@
"Duration": 0,
"Value": "0"
},
- {
- "PowerHint": "THERMAL_VIRTUAL-SKIN-HINT_EMERGENCY",
- "Node": "BigControlTempSet",
- "Duration": 0,
- "Value": "80000"
- },
- {
- "PowerHint": "THERMAL_VIRTUAL-SKIN-HINT_EMERGENCY",
- "Node": "MidControlTempSet",
- "Duration": 0,
- "Value": "80000"
- },
- {
- "PowerHint": "THERMAL_VIRTUAL-SKIN-HINT_EMERGENCY",
- "Node": "LittleControlTempSet",
- "Duration": 0,
- "Value": "80000"
- },
- {
- "PowerHint": "THERMAL_VIRTUAL-SKIN-HINT_EMERGENCY",
- "Node": "G3dControlTempSet",
- "Duration": 0,
- "Value": "80000"
- },
- {
- "PowerHint": "THERMAL_VIRTUAL-SKIN-HINT_EMERGENCY",
- "Node": "TpuControlTempSet",
- "Duration": 0,
- "Value": "80000"
- },
- {
- "PowerHint": "THERMAL_VIRTUAL-SKIN-HINT_EMERGENCY",
- "Node": "BigSwitchOnTempSet",
- "Duration": 0,
- "Value": "60000"
- },
- {
- "PowerHint": "THERMAL_VIRTUAL-SKIN-HINT_EMERGENCY",
- "Node": "MidSwitchOnTempSet",
- "Duration": 0,
- "Value": "60000"
- },
- {
- "PowerHint": "THERMAL_VIRTUAL-SKIN-HINT_EMERGENCY",
- "Node": "LittleSwitchOnTempSet",
- "Duration": 0,
- "Value": "60000"
- },
- {
- "PowerHint": "THERMAL_VIRTUAL-SKIN-HINT_EMERGENCY",
- "Node": "G3dSwitchOnTempSet",
- "Duration": 0,
- "Value": "60000"
- },
- {
- "PowerHint": "THERMAL_VIRTUAL-SKIN-HINT_EMERGENCY",
- "Node": "TpuSwitchOnTempSet",
- "Duration": 0,
- "Value": "60000"
- },
{
"PowerHint": "THERMAL_VIRTUAL-SKIN-HINT_EMERGENCY",
"Node": "Dex2oatThreads",
"Duration": 0,
"Value": "1"
},
- {
- "PowerHint": "THERMAL_VIRTUAL-SKIN-HINT_EMERGENCY",
- "Node": "Dex2oatCPUSet",
- "Duration": 0,
- "Value": "0,1,2,3"
- },
- {
- "PowerHint": "THERMAL_VIRTUAL-SKIN-HINT_EMERGENCY",
- "Node": "Dex2oatGroup",
- "Duration": 0,
- "Value": "0"
- },
{
"PowerHint": "FP_BOOST",
"Node": "CPUBigClusterMaxFreq",
@@ -2040,7 +1736,7 @@
"EarlyBoost_On": false,
"EarlyBoost_TimeFactor": 0.0,
"TargetTimeFactor": 1.0,
- "StaleTimeFactor": 20.0
+ "StaleTimeFactor": 15.0
},
{
"Name": "UiHighBoostWithoutPid",
diff --git a/tangorpro/overlay/frameworks/base/core/res/res/values/config.xml b/tangorpro/overlay/frameworks/base/core/res/res/values/config.xml
index f38e22f..15b02f6 100644
--- a/tangorpro/overlay/frameworks/base/core/res/res/values/config.xml
+++ b/tangorpro/overlay/frameworks/base/core/res/res/values/config.xml
@@ -348,8 +348,8 @@
true
- 104px
- 104px
+ 36dp
+ 36dp
@@ -636,7 +636,7 @@
true
- 20000000
+ -4000000
false
diff --git a/wifi/BoardConfig-wifi.mk b/wifi/BoardConfig-wifi.mk
index 0aaffe5..89896ad 100644
--- a/wifi/BoardConfig-wifi.mk
+++ b/wifi/BoardConfig-wifi.mk
@@ -32,3 +32,6 @@ WIFI_HIDL_UNIFIED_SUPPLICANT_SERVICE_RC_ENTRY := true
PRODUCT_COPY_FILES += \
device/google/tangorpro/wifi/p2p_supplicant_overlay.conf:$(TARGET_COPY_OUT_VENDOR)/etc/wifi/p2p_supplicant_overlay.conf \
device/google/tangorpro/wifi/wpa_supplicant_overlay.conf:$(TARGET_COPY_OUT_VENDOR)/etc/wifi/wpa_supplicant_overlay.conf
+
+# Add WIFI_FEATURE_IMU_DETECTION to soong_config
+$(call soong_config_set,wifi,feature_imu_detection,$(WIFI_FEATURE_IMU_DETECTION))