Merge "configs: lahaina: add support for native dsd"
diff --git a/configs/bengal/audio_platform_info.xml b/configs/bengal/audio_platform_info.xml
index 8c669cd..ba27d28 100644
--- a/configs/bengal/audio_platform_info.xml
+++ b/configs/bengal/audio_platform_info.xml
@@ -102,6 +102,7 @@
<usecase name="USECASE_AUDIO_A2DP_ABR_FEEDBACK" type="in" id="36" />
<usecase name="USECASE_AUDIO_A2DP_ABR_FEEDBACK" type="out" id="36" />
<usecase name="USECASE_INCALL_MUSIC_UPLINK" type="out" id="23" />
+ <usecase name="USECASE_INCALL_MUSIC_UPLINK2" type="out" id="23" />
</pcm_ids>
<config_params>
<param key="spkr_1_tz_name" value="wsatz.13"/>
diff --git a/configs/bengal/audio_platform_info_intcodec.xml b/configs/bengal/audio_platform_info_intcodec.xml
index 3faafd9..9ce6ccf 100644
--- a/configs/bengal/audio_platform_info_intcodec.xml
+++ b/configs/bengal/audio_platform_info_intcodec.xml
@@ -64,6 +64,7 @@
<usecase name="USECASE_AUDIO_A2DP_ABR_FEEDBACK" type="in" id="35" />
<usecase name="USECASE_AUDIO_A2DP_ABR_FEEDBACK" type="out" id="35" />
<usecase name="USECASE_INCALL_MUSIC_UPLINK" type="out" id="23" />
+ <usecase name="USECASE_INCALL_MUSIC_UPLINK2" type="out" id="23" />
<usecase name="USECASE_AUDIO_RECORD_COMPRESS2" type="in" id="36" />
<usecase name="USECASE_INCALL_REC_UPLINK" type="in" id="23" />
<usecase name="USECASE_INCALL_REC_DOWNLINK" type="in" id="23" />
diff --git a/configs/bengal/audio_platform_info_qrd.xml b/configs/bengal/audio_platform_info_qrd.xml
index b3c53d3..a4739dd 100644
--- a/configs/bengal/audio_platform_info_qrd.xml
+++ b/configs/bengal/audio_platform_info_qrd.xml
@@ -64,6 +64,7 @@
<usecase name="USECASE_AUDIO_A2DP_ABR_FEEDBACK" type="in" id="35" />
<usecase name="USECASE_AUDIO_A2DP_ABR_FEEDBACK" type="out" id="35" />
<usecase name="USECASE_INCALL_MUSIC_UPLINK" type="out" id="23" />
+ <usecase name="USECASE_INCALL_MUSIC_UPLINK2" type="out" id="23" />
<usecase name="USECASE_AUDIO_RECORD_COMPRESS2" type="in" id="36" />
<usecase name="USECASE_INCALL_REC_UPLINK" type="in" id="23" />
<usecase name="USECASE_INCALL_REC_DOWNLINK" type="in" id="23" />
diff --git a/configs/bengal/audio_platform_info_scubaidp.xml b/configs/bengal/audio_platform_info_scubaidp.xml
index 3ae208e..3f751a1 100644
--- a/configs/bengal/audio_platform_info_scubaidp.xml
+++ b/configs/bengal/audio_platform_info_scubaidp.xml
@@ -64,6 +64,7 @@
<usecase name="USECASE_AUDIO_A2DP_ABR_FEEDBACK" type="in" id="35" />
<usecase name="USECASE_AUDIO_A2DP_ABR_FEEDBACK" type="out" id="35" />
<usecase name="USECASE_INCALL_MUSIC_UPLINK" type="out" id="23" />
+ <usecase name="USECASE_INCALL_MUSIC_UPLINK2" type="out" id="23" />
<usecase name="USECASE_AUDIO_RECORD_COMPRESS2" type="in" id="36" />
<usecase name="USECASE_INCALL_REC_UPLINK" type="in" id="23" />
<usecase name="USECASE_INCALL_REC_DOWNLINK" type="in" id="23" />
diff --git a/configs/bengal/audio_platform_info_scubaqrd.xml b/configs/bengal/audio_platform_info_scubaqrd.xml
index cfa2888..32cdb49 100644
--- a/configs/bengal/audio_platform_info_scubaqrd.xml
+++ b/configs/bengal/audio_platform_info_scubaqrd.xml
@@ -64,6 +64,7 @@
<usecase name="USECASE_AUDIO_A2DP_ABR_FEEDBACK" type="in" id="35" />
<usecase name="USECASE_AUDIO_A2DP_ABR_FEEDBACK" type="out" id="35" />
<usecase name="USECASE_INCALL_MUSIC_UPLINK" type="out" id="23" />
+ <usecase name="USECASE_INCALL_MUSIC_UPLINK2" type="out" id="23" />
</pcm_ids>
<config_params>
<!-- In the below value string, the value indicates default mono -->
diff --git a/configs/bengal/mixer_paths.xml b/configs/bengal/mixer_paths.xml
index 2053f22..7cbd51c 100644
--- a/configs/bengal/mixer_paths.xml
+++ b/configs/bengal/mixer_paths.xml
@@ -3513,14 +3513,115 @@
<path name="incall_music_uplink bt-a2dp">
<path name="incall_music_uplink" />
</path>
- <path name="incall_music_uplink afe-proxy">
- <path name="incall_music_uplink" />
- </path>
<path name="incall_music_uplink call-proxy">
<path name="incall_music_uplink" />
</path>
+ <path name="incall_music_uplink2">
+ <ctl name="Incall_Music_2 Audio Mixer MultiMedia9" value="1" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 handset">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 handset-hac">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 display-port">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 bt-sco">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 bt-sco-wb">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 bt-sco-swb">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker-and-display-port">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker-safe-and-display-port">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 afe-proxy">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 usb-headphones">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 usb-headset">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker-and-usb-headphones">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker-safe-and-usb-headphones">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 headphones">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 headset">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker-and-headphones">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker-safe-and-headphones">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker-and-bt-sco">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker-safe-and-bt-sco">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 voice-tty-hco-handset">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker-and-bt-a2dp">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker-safe-and-bt-a2dp">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 bt-a2dp">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 call-proxy">
+ <path name="incall_music_uplink2" />
+ </path>
+
<path name="call-proxy">
</path>
diff --git a/configs/bengal/mixer_paths_qrd.xml b/configs/bengal/mixer_paths_qrd.xml
index 03f42ea..5d202bd 100755
--- a/configs/bengal/mixer_paths_qrd.xml
+++ b/configs/bengal/mixer_paths_qrd.xml
@@ -2878,14 +2878,108 @@
<path name="incall_music_uplink bt-a2dp">
<path name="incall_music_uplink" />
</path>
- <path name="incall_music_uplink afe-proxy">
- <path name="incall_music_uplink" />
- </path>
<path name="incall_music_uplink call-proxy">
<path name="incall_music_uplink" />
</path>
+ <path name="incall_music_uplink2">
+ <ctl name="Incall_Music_2 Audio Mixer MultiMedia9" value="1" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 handset">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 handset-hac">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 display-port">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 bt-sco">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 bt-sco-wb">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 bt-sco-swb">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker-and-display-port">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker-safe-and-display-port">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 afe-proxy">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 usb-headphones">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 usb-headset">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker-and-usb-headphones">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker-safe-and-usb-headphones">
+ <path name="incall_music_uplink2" />
+ </path>
+ <path name="incall_music_uplink2 headphones">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 headset">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker-and-headphones">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker-safe-and-headphones">
+ <path name="incall_music_uplink2" />
+ </path>
+ <path name="incall_music_uplink2 speaker-and-bt-sco">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker-safe-and-bt-sco">
+ <path name="incall_music_uplink2" />
+ </path>
+ <path name="incall_music_uplink2 voice-tty-hco-handset">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker-and-bt-a2dp">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 bt-a2dp">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 call-proxy">
+ <path name="incall_music_uplink2" />
+ </path>
+
<path name="spkr-rx-calib">
<ctl name="RX_CDC_DMA_RX_1_DL_HL Switch" value="1" />
</path>
diff --git a/configs/bengal/mixer_paths_scubaidp.xml b/configs/bengal/mixer_paths_scubaidp.xml
index 8d07291..1d671f7 100644
--- a/configs/bengal/mixer_paths_scubaidp.xml
+++ b/configs/bengal/mixer_paths_scubaidp.xml
@@ -3517,14 +3517,115 @@
<path name="incall_music_uplink bt-a2dp">
<path name="incall_music_uplink" />
</path>
- <path name="incall_music_uplink afe-proxy">
- <path name="incall_music_uplink" />
- </path>
<path name="incall_music_uplink call-proxy">
<path name="incall_music_uplink" />
</path>
+ <path name="incall_music_uplink2">
+ <ctl name="Incall_Music_2 Audio Mixer MultiMedia9" value="1" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 handset">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 handset-hac">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 display-port">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 bt-sco">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 bt-sco-wb">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 bt-sco-swb">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker-and-display-port">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker-safe-and-display-port">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 afe-proxy">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 usb-headphones">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 usb-headset">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker-and-usb-headphones">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker-safe-and-usb-headphones">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 headphones">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 headset">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker-and-headphones">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker-safe-and-headphones">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker-and-bt-sco">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker-safe-and-bt-sco">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 voice-tty-hco-handset">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker-and-bt-a2dp">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker-safe-and-bt-a2dp">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 bt-a2dp">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 call-proxy">
+ <path name="incall_music_uplink2" />
+ </path>
+
<path name="call-proxy">
</path>
diff --git a/configs/bengal/mixer_paths_scubaqrd.xml b/configs/bengal/mixer_paths_scubaqrd.xml
index 305a587..f5b44e2 100644
--- a/configs/bengal/mixer_paths_scubaqrd.xml
+++ b/configs/bengal/mixer_paths_scubaqrd.xml
@@ -3431,14 +3431,114 @@
<path name="incall_music_uplink bt-a2dp">
<path name="incall_music_uplink" />
</path>
- <path name="incall_music_uplink afe-proxy">
- <path name="incall_music_uplink" />
- </path>
<path name="incall_music_uplink call-proxy">
<path name="incall_music_uplink" />
</path>
+ <path name="incall_music_uplink2">
+ <ctl name="Incall_Music_2 Audio Mixer MultiMedia9" value="1" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 handset">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 handset-hac">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 display-port">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 bt-sco">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 bt-sco-wb">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 bt-sco-swb">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker-and-display-port">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker-safe-and-display-port">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 afe-proxy">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 usb-headphones">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 usb-headset">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker-and-usb-headphones">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker-safe-and-usb-headphones">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 headphones">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 headset">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker-and-headphones">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker-safe-and-headphones">
+ <path name="incall_music_uplink2" />
+ </path>
+ <path name="incall_music_uplink2 speaker-and-bt-sco">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker-safe-and-bt-sco">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 voice-tty-hco-handset">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker-and-bt-a2dp">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker-safe-and-bt-a2dp">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 bt-a2dp">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 call-proxy">
+ <path name="incall_music_uplink2" />
+ </path>
+
<path name="call-proxy">
</path>
diff --git a/configs/common/default.mk b/configs/common/default.mk
index a6117b6..a115af4 100644
--- a/configs/common/default.mk
+++ b/configs/common/default.mk
@@ -14,6 +14,15 @@
android.hardware.audio.effect@5.0 \
android.hardware.audio.effect@5.0-impl
+# enable audio hidl hal 6.0
+PRODUCT_PACKAGES += \
+ android.hardware.audio@6.0 \
+ android.hardware.audio.common@6.0 \
+ android.hardware.audio.common@6.0-util \
+ android.hardware.audio@6.0-impl \
+ android.hardware.audio.effect@6.0 \
+ android.hardware.audio.effect@6.0-impl
+
# enable sound trigger hidl hal 2.2
PRODUCT_PACKAGES += \
android.hardware.soundtrigger@2.2-impl \
diff --git a/configs/lahaina/lahaina.mk b/configs/lahaina/lahaina.mk
index 7b1a483..669f73c 100644
--- a/configs/lahaina/lahaina.mk
+++ b/configs/lahaina/lahaina.mk
@@ -147,6 +147,38 @@
$(TOPDIR)vendor/qcom/opensource/audio-hal/primary-hal/configs/common/bluetooth_qti_audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/bluetooth_qti_audio_policy_configuration.xml \
$(TOPDIR)vendor/qcom/opensource/audio-hal/primary-hal/configs/common/bluetooth_qti_hearing_aid_audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/bluetooth_qti_hearing_aid_audio_policy_configuration.xml
+#TODO: Delete xml's from obsolete paths
+# Audio configuration xml's related to Lahaina
+QCV_FAMILY_SKUS := lahaina
+DEVICE_SKU := lahaina
+
+PRODUCT_COPY_FILES += \
+ vendor/qcom/opensource/audio-hal/primary-hal/configs/lahaina/audio_io_policy.conf:$(TARGET_COPY_OUT_VENDOR)/etc/audio/sku_$(DEVICE_SKU)/audio_io_policy.conf \
+ vendor/qcom/opensource/audio-hal/primary-hal/configs/lahaina/audio_effects.conf:$(TARGET_COPY_OUT_VENDOR)/etc/audio/sku_$(DEVICE_SKU)/audio_effects.conf \
+ vendor/qcom/opensource/audio-hal/primary-hal/configs/lahaina/audio_effects.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio/sku_$(DEVICE_SKU)/audio_effects.xml \
+ vendor/qcom/opensource/audio-hal/primary-hal/configs/lahaina/sound_trigger_platform_info.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio/sku_$(DEVICE_SKU)/sound_trigger_platform_info.xml \
+ vendor/qcom/opensource/audio-hal/primary-hal/configs/lahaina/audio_platform_info.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio/sku_$(DEVICE_SKU)/audio_platform_info.xml \
+ vendor/qcom/opensource/audio-hal/primary-hal/configs/lahaina/audio_platform_info_qrd.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio/sku_$(DEVICE_SKU)/audio_platform_info_qrd.xml \
+ vendor/qcom/opensource/audio-hal/primary-hal/configs/lahaina/audio_platform_info_intcodec.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio/sku_$(DEVICE_SKU)/audio_platform_info_intcodec.xml \
+ vendor/qcom/opensource/audio-hal/primary-hal/configs/lahaina/sound_trigger_mixer_paths.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio/sku_$(DEVICE_SKU)/sound_trigger_mixer_paths.xml \
+ vendor/qcom/opensource/audio-hal/primary-hal/configs/lahaina/sound_trigger_mixer_paths_qrd.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio/sku_$(DEVICE_SKU)/sound_trigger_mixer_paths_qrd.xml \
+ vendor/qcom/opensource/audio-hal/primary-hal/configs/lahaina/sound_trigger_mixer_paths_cdp.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio/sku_$(DEVICE_SKU)/sound_trigger_mixer_paths_cdp.xml \
+ vendor/qcom/opensource/audio-hal/primary-hal/configs/lahaina/mixer_paths.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio/sku_$(DEVICE_SKU)/mixer_paths.xml \
+ vendor/qcom/opensource/audio-hal/primary-hal/configs/lahaina/mixer_paths_qrd.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio/sku_$(DEVICE_SKU)/mixer_paths_qrd.xml \
+ vendor/qcom/opensource/audio-hal/primary-hal/configs/lahaina/mixer_paths_cdp.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio/sku_$(DEVICE_SKU)/mixer_paths_cdp.xml \
+ vendor/qcom/opensource/audio-hal/primary-hal/configs/lahaina/audio_configs.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio/sku_$(DEVICE_SKU)/audio_configs.xml \
+ vendor/qcom/opensource/audio-hal/primary-hal/configs/lahaina/audio_configs_stock.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio/sku_$(DEVICE_SKU)/audio_configs_stock.xml \
+ vendor/qcom/opensource/audio-hal/primary-hal/configs/lahaina/audio_tuning_mixer.txt:$(TARGET_COPY_OUT_VENDOR)/etc/audio/sku_$(DEVICE_SKU)/audio_tuning_mixer.txt
+
+#Copy generic APM XML file to common folder for runtime copy
+PRODUCT_COPY_FILES += \
+ vendor/qcom/opensource/audio-hal/primary-hal/configs/common/audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio/sku_$(DEVICE_SKU)/audio_policy_configuration.xml
+
+# Audio configuration xml's common to Lahaina family
+PRODUCT_COPY_FILES += \
+$(foreach DEVICE_SKU, $(QCV_FAMILY_SKUS), \
+ vendor/qcom/opensource/audio-hal/primary-hal/configs/lahaina/audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/audio/sku_$(DEVICE_SKU)_qssi/audio_policy_configuration.xml)
+
# Reduce client buffer size for fast audio output tracks
PRODUCT_PROPERTY_OVERRIDES += \
af.fast_track_multiplier=1
diff --git a/configs/lahaina/mixer_paths.xml b/configs/lahaina/mixer_paths.xml
index c3c21a5..8a6389d 100644
--- a/configs/lahaina/mixer_paths.xml
+++ b/configs/lahaina/mixer_paths.xml
@@ -2898,10 +2898,10 @@
<ctl name="TX_CDC_DMA_TX_3 Channels" value="Two" />
<ctl name="TX_AIF1_CAP Mixer DEC1" value="1" />
<ctl name="TX DEC1 MUX" value="SWR_MIC" />
- <ctl name="TX SMIC MUX1" value="SWR_MIC0" />
+ <ctl name="TX SMIC MUX1" value="SWR_MIC2" />
<ctl name="TX_AIF1_CAP Mixer DEC2" value="1" />
<ctl name="TX DEC2 MUX" value="SWR_MIC" />
- <ctl name="TX SMIC MUX2" value="SWR_MIC2" />
+ <ctl name="TX SMIC MUX2" value="SWR_MIC0" />
<ctl name="SWR_MIC0 SWR_DMIC_MIXER Switch" value="1" />
<ctl name="SWR_MIC0 HIFI PortMap" value="SWRM_TX1_CH1" />
<ctl name="SWR_MIC2 SWR_DMIC_MIXER Switch" value="1" />
diff --git a/configs/lito/audio_platform_info.xml b/configs/lito/audio_platform_info.xml
index 2422cf5..8c440a7 100644
--- a/configs/lito/audio_platform_info.xml
+++ b/configs/lito/audio_platform_info.xml
@@ -103,6 +103,7 @@
<usecase name="USECASE_AUDIO_A2DP_ABR_FEEDBACK" type="in" id="36" />
<usecase name="USECASE_AUDIO_A2DP_ABR_FEEDBACK" type="out" id="36" />
<usecase name="USECASE_INCALL_MUSIC_UPLINK" type="out" id="23" />
+ <usecase name="USECASE_INCALL_MUSIC_UPLINK2" type="out" id="23" />
<usecase name="USECASE_AUDIO_RECORD_COMPRESS2" type="in" id="37" />
<usecase name="USECASE_INCALL_REC_UPLINK" type="in" id="23" />
<usecase name="USECASE_INCALL_REC_DOWNLINK" type="in" id="23" />
diff --git a/configs/lito/audio_platform_info_intcodec.xml b/configs/lito/audio_platform_info_intcodec.xml
index 53411d1..a73c388 100644
--- a/configs/lito/audio_platform_info_intcodec.xml
+++ b/configs/lito/audio_platform_info_intcodec.xml
@@ -66,6 +66,7 @@
<usecase name="USECASE_AUDIO_A2DP_ABR_FEEDBACK" type="in" id="36" />
<usecase name="USECASE_AUDIO_A2DP_ABR_FEEDBACK" type="out" id="36" />
<usecase name="USECASE_INCALL_MUSIC_UPLINK" type="out" id="23" />
+ <usecase name="USECASE_INCALL_MUSIC_UPLINK2" type="out" id="23" />
<usecase name="USECASE_AUDIO_RECORD_COMPRESS2" type="in" id="37" />
<usecase name="USECASE_INCALL_REC_UPLINK" type="in" id="23" />
<usecase name="USECASE_INCALL_REC_DOWNLINK" type="in" id="23" />
diff --git a/configs/lito/audio_platform_info_lagoon_qrd.xml b/configs/lito/audio_platform_info_lagoon_qrd.xml
index 002c555..4201b74 100644
--- a/configs/lito/audio_platform_info_lagoon_qrd.xml
+++ b/configs/lito/audio_platform_info_lagoon_qrd.xml
@@ -66,6 +66,7 @@
<usecase name="USECASE_AUDIO_A2DP_ABR_FEEDBACK" type="in" id="36" />
<usecase name="USECASE_AUDIO_A2DP_ABR_FEEDBACK" type="out" id="36" />
<usecase name="USECASE_INCALL_MUSIC_UPLINK" type="out" id="23" />
+ <usecase name="USECASE_INCALL_MUSIC_UPLINK2" type="out" id="23" />
<usecase name="USECASE_AUDIO_RECORD_COMPRESS2" type="in" id="37" />
<usecase name="USECASE_INCALL_REC_UPLINK" type="in" id="23" />
<usecase name="USECASE_INCALL_REC_DOWNLINK" type="in" id="23" />
diff --git a/configs/lito/audio_platform_info_qrd.xml b/configs/lito/audio_platform_info_qrd.xml
index 7277e7b..5d8efc5 100644
--- a/configs/lito/audio_platform_info_qrd.xml
+++ b/configs/lito/audio_platform_info_qrd.xml
@@ -66,6 +66,7 @@
<usecase name="USECASE_AUDIO_A2DP_ABR_FEEDBACK" type="in" id="36" />
<usecase name="USECASE_AUDIO_A2DP_ABR_FEEDBACK" type="out" id="36" />
<usecase name="USECASE_INCALL_MUSIC_UPLINK" type="out" id="23" />
+ <usecase name="USECASE_INCALL_MUSIC_UPLINK2" type="out" id="23" />
<usecase name="USECASE_AUDIO_RECORD_COMPRESS2" type="in" id="37" />
<usecase name="USECASE_INCALL_REC_UPLINK" type="in" id="23" />
<usecase name="USECASE_INCALL_REC_DOWNLINK" type="in" id="23" />
diff --git a/configs/lito/mixer_paths.xml b/configs/lito/mixer_paths.xml
index 41e78f5..51cd6dd 100644
--- a/configs/lito/mixer_paths.xml
+++ b/configs/lito/mixer_paths.xml
@@ -3733,13 +3733,127 @@
<path name="incall_music_uplink bt-a2dp">
<path name="incall_music_uplink" />
</path>
- <path name="incall_music_uplink afe-proxy">
- <path name="incall_music_uplink" />
- </path>
<path name="incall_music_uplink call-proxy">
<path name="incall_music_uplink" />
</path>
+
+ <path name="incall_music_uplink2">
+ <ctl name="Incall_Music_2 Audio Mixer MultiMedia9" value="1" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 handset">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 handset-hac">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 display-port">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 display-port1">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 bt-sco">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 bt-sco-wb">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 bt-sco-swb">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker-and-display-port">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker-safe-and-display-port">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker-and-display-port1">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker-safe-and-display-port1">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 afe-proxy">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 usb-headphones">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 usb-headset">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker-and-usb-headphones">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker-safe-and-usb-headphones">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 headphones">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 headset">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker-and-headphones">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker-safe-and-headphones">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker-and-bt-sco">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker-safe-and-bt-sco">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 voice-tty-hco-handset">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker-and-bt-a2dp">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker-safe-and-bt-a2dp">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 bt-a2dp">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 call-proxy">
+ <path name="incall_music_uplink2" />
+ </path>
+
<path name="call-proxy">
</path>
diff --git a/configs/lito/mixer_paths_cdp.xml b/configs/lito/mixer_paths_cdp.xml
index a7a37ae..8665f0f 100644
--- a/configs/lito/mixer_paths_cdp.xml
+++ b/configs/lito/mixer_paths_cdp.xml
@@ -3738,14 +3738,126 @@
<path name="incall_music_uplink bt-a2dp">
<path name="incall_music_uplink" />
</path>
- <path name="incall_music_uplink afe-proxy">
- <path name="incall_music_uplink" />
- </path>
<path name="incall_music_uplink call-proxy">
<path name="incall_music_uplink" />
</path>
+ <path name="incall_music_uplink2">
+ <ctl name="Incall_Music_2 Audio Mixer MultiMedia9" value="1" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 handset">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 handset-hac">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 display-port">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 display-port1">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 bt-sco">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 bt-sco-wb">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 bt-sco-swb">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker-and-display-port">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker-safe-and-display-port">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker-and-display-port1">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker-safe-and-display-port1">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 afe-proxy">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 usb-headphones">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 usb-headset">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker-and-usb-headphones">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker-safe-and-usb-headphones">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 headphones">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 headset">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker-and-headphones">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker-safe-and-headphones">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker-and-bt-sco">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker-safe-and-bt-sco">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 voice-tty-hco-handset">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker-and-bt-a2dp">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker-safe-and-bt-a2dp">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 bt-a2dp">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 call-proxy">
+ <path name="incall_music_uplink2" />
+ </path>
<path name="call-proxy">
</path>
diff --git a/configs/lito/mixer_paths_lagoonmtp.xml b/configs/lito/mixer_paths_lagoonmtp.xml
index 8db7ff9..7d3bf76 100644
--- a/configs/lito/mixer_paths_lagoonmtp.xml
+++ b/configs/lito/mixer_paths_lagoonmtp.xml
@@ -3659,7 +3659,130 @@
<path name="incall_music_uplink bt-a2dp">
<path name="incall_music_uplink" />
</path>
- <path name="incall_music_uplink afe-proxy">
+
+ <path name="incall_music_uplink call-proxy">
<path name="incall_music_uplink" />
</path>
+
+ <path name="incall_music_uplink2">
+ <ctl name="Incall_Music_2 Audio Mixer MultiMedia9" value="1" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 handset">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 handset-hac">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 display-port">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 display-port1">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 bt-sco">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 bt-sco-wb">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 bt-sco-swb">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker-and-display-port">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker-safe-and-display-port">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker-and-display-port1">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker-safe-and-display-port1">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 afe-proxy">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 usb-headphones">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 usb-headset">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker-and-usb-headphones">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker-safe-and-usb-headphones">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 headphones">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 headset">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker-and-headphones">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker-safe-and-headphones">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker-and-bt-sco">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker-safe-and-bt-sco">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 voice-tty-hco-handset">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker-and-bt-a2dp">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker-safe-and-bt-a2dp">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 bt-a2dp">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 call-proxy">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="call-proxy">
+ </path>
+
+ <path name="call-proxy-in">
+ </path>
</mixer>
diff --git a/configs/lito/mixer_paths_lagoonqrd.xml b/configs/lito/mixer_paths_lagoonqrd.xml
index 0c5dd7e..1a86a9b 100644
--- a/configs/lito/mixer_paths_lagoonqrd.xml
+++ b/configs/lito/mixer_paths_lagoonqrd.xml
@@ -2981,10 +2981,133 @@
<path name="incall_music_uplink bt-a2dp">
<path name="incall_music_uplink" />
</path>
- <path name="incall_music_uplink afe-proxy">
+
+ <path name="incall_music_uplink call-proxy">
<path name="incall_music_uplink" />
</path>
+ <path name="incall_music_uplink2">
+ <ctl name="Incall_Music_2 Audio Mixer MultiMedia9" value="1" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 handset">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 handset-hac">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 display-port">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 display-port1">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 bt-sco">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 bt-sco-wb">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 bt-sco-swb">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker-and-display-port">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker-safe-and-display-port">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker-and-display-port1">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker-safe-and-display-port1">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 afe-proxy">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 usb-headphones">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 usb-headset">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker-and-usb-headphones">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker-safe-and-usb-headphones">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 headphones">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 headset">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker-and-headphones">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker-safe-and-headphones">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker-and-bt-sco">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker-safe-and-bt-sco">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 voice-tty-hco-handset">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker-and-bt-a2dp">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker-safe-and-bt-a2dp">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 bt-a2dp">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 call-proxy">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="call-proxy">
+ </path>
+
+ <path name="call-proxy-in">
+ </path>
+
<path name="spkr-rx-calib">
<ctl name="WSA_CDC_DMA_RX_0_DL_HL Switch" value="1" />
</path>
diff --git a/configs/lito/mixer_paths_qrd.xml b/configs/lito/mixer_paths_qrd.xml
index d225ff7..1bcc0a3 100644
--- a/configs/lito/mixer_paths_qrd.xml
+++ b/configs/lito/mixer_paths_qrd.xml
@@ -3070,14 +3070,127 @@
<path name="incall_music_uplink bt-a2dp">
<path name="incall_music_uplink" />
</path>
- <path name="incall_music_uplink afe-proxy">
- <path name="incall_music_uplink" />
- </path>
<path name="incall_music_uplink call-proxy">
<path name="incall_music_uplink" />
</path>
+ <path name="incall_music_uplink2">
+ <ctl name="Incall_Music_2 Audio Mixer MultiMedia9" value="1" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 handset">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 handset-hac">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 display-port">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 display-port1">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 bt-sco">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 bt-sco-wb">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 bt-sco-swb">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker-and-display-port">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker-safe-and-display-port">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker-and-display-port1">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker-safe-and-display-port1">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 afe-proxy">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 usb-headphones">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 usb-headset">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker-and-usb-headphones">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker-safe-and-usb-headphones">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 headphones">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 headset">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker-and-headphones">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker-safe-and-headphones">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker-and-bt-sco">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker-safe-and-bt-sco">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 voice-tty-hco-handset">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker-and-bt-a2dp">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 speaker-safe-and-bt-a2dp">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 bt-a2dp">
+ <path name="incall_music_uplink2" />
+ </path>
+
+ <path name="incall_music_uplink2 call-proxy">
+ <path name="incall_music_uplink2" />
+ </path>
+
<path name="spkr-rx-calib">
<ctl name="WSA_CDC_DMA_RX_0_DL_HL Switch" value="1" />
</path>
diff --git a/configs/msm8937/audio_platform_info.xml b/configs/msm8937/audio_platform_info.xml
new file mode 100644
index 0000000..3961944
--- /dev/null
+++ b/configs/msm8937/audio_platform_info.xml
@@ -0,0 +1,548 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!-- Copyright (c) 2015 - 2016, 2018, The Linux Foundation. All rights reserved. -->
+<!-- -->
+<!-- Redistribution and use in source and binary forms, with or without -->
+<!-- modification, are permitted provided that the following conditions are -->
+<!-- met: -->
+<!-- * Redistributions of source code must retain the above copyright -->
+<!-- notice, this list of conditions and the following disclaimer. -->
+<!-- * Redistributions in binary form must reproduce the above -->
+<!-- copyright notice, this list of conditions and the following -->
+<!-- disclaimer in the documentation and/or other materials provided -->
+<!-- with the distribution. -->
+<!-- * Neither the name of The Linux Foundation nor the names of its -->
+<!-- contributors may be used to endorse or promote products derived -->
+<!-- from this software without specific prior written permission. -->
+<!-- -->
+<!-- THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED -->
+<!-- WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -->
+<!-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT -->
+<!-- ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS -->
+<!-- BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -->
+<!-- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -->
+<!-- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR -->
+<!-- BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, -->
+<!-- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE -->
+<!-- OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN -->
+<!-- IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -->
+<audio_platform_info>
+ <bit_width_configs>
+ <device name="SND_DEVICE_OUT_SPEAKER" bit_width="24"/>
+ </bit_width_configs>
+ <interface_names>
+ <device name="AUDIO_DEVICE_IN_BUILTIN_MIC" interface="SLIMBUS_0" codec_type="external"/>
+ <device name="AUDIO_DEVICE_IN_BACK_MIC" interface="SLIMBUS_0" codec_type="external"/>
+ <device name="AUDIO_DEVICE_IN_BUILTIN_MIC" interface="TERT_MI2S" codec_type="internal"/>
+ <device name="AUDIO_DEVICE_IN_BACK_MIC" interface="TERT_MI2S" codec_type="internal"/>
+ </interface_names>
+ <pcm_ids>
+ <usecase name="USECASE_AUDIO_PLAYBACK_OFFLOAD2" type="out" id="24"/>
+ <usecase name="USECASE_AUDIO_PLAYBACK_OFFLOAD3" type="out" id="27"/>
+ <usecase name="USECASE_AUDIO_PLAYBACK_OFFLOAD4" type="out" id="28"/>
+ <usecase name="USECASE_AUDIO_PLAYBACK_OFFLOAD5" type="out" id="29"/>
+ <usecase name="USECASE_AUDIO_PLAYBACK_OFFLOAD6" type="out" id="30"/>
+ <usecase name="USECASE_AUDIO_PLAYBACK_OFFLOAD7" type="out" id="31"/>
+ <usecase name="USECASE_AUDIO_PLAYBACK_OFFLOAD8" type="out" id="32"/>
+ <usecase name="USECASE_AUDIO_PLAYBACK_OFFLOAD9" type="out" id="33"/>
+ <usecase name="USECASE_VOICEMMODE1_CALL" type="in" id="34"/>
+ <usecase name="USECASE_VOICEMMODE1_CALL" type="out" id="34"/>
+ <usecase name="USECASE_VOICEMMODE2_CALL" type="in" id="35"/>
+ <usecase name="USECASE_VOICEMMODE2_CALL" type="out" id="35"/>
+ </pcm_ids>
+ <config_params>
+ <param key="spkr_1_tz_name" value="wsa881x.0f"/>
+ <param key="spkr_2_tz_name" value=""/>
+ </config_params>
+ <acdb_ids>
+ <device name="SND_DEVICE_OUT_SPEAKER_PROTECTED" acdb_id="136"/>
+ <device name="SND_DEVICE_OUT_VOICE_SPEAKER_PROTECTED" acdb_id="136"/>
+ <device name="SND_DEVICE_OUT_SPEAKER_PROTECTED_VBAT" acdb_id="136"/>
+ <device name="SND_DEVICE_OUT_VOICE_SPEAKER_PROTECTED_VBAT" acdb_id="136"/>
+ <device name="SND_DEVICE_IN_CAPTURE_VI_FEEDBACK" acdb_id="137"/>
+ <device name="SND_DEVICE_OUT_SPEAKER_EXTERNAL_1" acdb_id="14"/>
+ <device name="SND_DEVICE_OUT_SPEAKER_EXTERNAL_2" acdb_id="14"/>
+ <device name="SND_DEVICE_OUT_SPEAKER_VBAT" acdb_id="135"/>
+ <device name="SND_DEVICE_OUT_SPEAKER_AND_HEADPHONES_EXTERNAL_1" acdb_id="10"/>
+ <device name="SND_DEVICE_OUT_SPEAKER_AND_HEADPHONES_EXTERNAL_2" acdb_id="10"/>
+ <device name="SND_DEVICE_OUT_VOICE_SPEAKER_VBAT" acdb_id="135"/>
+ <device name="SND_DEVICE_OUT_VOICE_SPEAKER_2_VBAT" acdb_id="135"/>
+ <device name="SND_DEVICE_OUT_SPEAKER_AND_USB_HEADSET" acdb_id="45"/>
+ <device name="SND_DEVICE_IN_HDMI_MIC" acdb_id="4"/>
+ <device name="SND_DEVICE_IN_HANDSET_TMIC_FLUENCE_PRO" acdb_id="125"/>
+ <device name="SND_DEVICE_IN_HANDSET_TMIC" acdb_id="125"/>
+ </acdb_ids>
+
+ <backend_names>
+ <device name="SND_DEVICE_OUT_HEADPHONES" interface="PRI_MI2S_RX"/>
+ <device name="SND_DEVICE_OUT_BT_SCO_WB" interface="INT_BT_SCO_RX"/>
+ <device name="SND_DEVICE_OUT_BT_SCO" interface="INT_BT_SCO_RX"/>
+ <device name="SND_DEVICE_OUT_LINE" interface="PRI_MI2S_RX"/>
+ <device name="SND_DEVICE_OUT_ANC_HEADSET" interface="PRI_MI2S_RX"/>
+ <device name="SND_DEVICE_OUT_SPEAKER_AND_HEADPHONES" interface="PRI_MI2S_RX"/>
+ <device name="SND_DEVICE_OUT_SPEAKER_AND_LINE" interface="PRI_MI2S_RX"/>
+ <device name="SND_DEVICE_OUT_SPEAKER_AND_ANC_HEADSET" interface="PRI_MI2S_RX"/>
+ <device name="SND_DEVICE_OUT_VOICE_HEADPHONES" interface="PRI_MI2S_RX"/>
+ <device name="SND_DEVICE_OUT_VOICE_ANC_HEADSET" interface="PRI_MI2S_RX"/>
+ <device name="SND_DEVICE_OUT_VOICE_LINE" interface="PRI_MI2S_RX"/>
+ <device name="SND_DEVICE_OUT_VOICE_TTY_FULL_HEADPHONES" interface="PRI_MI2S_RX"/>
+ <device name="SND_DEVICE_OUT_VOICE_TTY_VCO_HEADPHONES" interface="PRI_MI2S_RX"/>
+ <device name="SND_DEVICE_OUT_HANDSET" interface="PRI_MI2S_RX"/>
+ <device name="SND_DEVICE_OUT_SPEAKER" interface="PRI_MI2S_RX"/>
+ <device name="SND_DEVICE_OUT_SPEAKER_REVERSE" interface="PRI_MI2S_RX"/>
+ <device name="SND_DEVICE_OUT_SPEAKER_VBAT" interface="PRI_MI2S_RX"/>
+ <device name="SND_DEVICE_OUT_VOICE_HANDSET" interface="PRI_MI2S_RX"/>
+ <device name="SND_DEVICE_OUT_VOICE_SPEAKER" interface="PRI_MI2S_RX"/>
+ <device name="SND_DEVICE_OUT_VOICE_SPEAKER_2" interface="PRI_MI2S_RX"/>
+ <device name="SND_DEVICE_OUT_VOICE_SPEAKER_2_VBAT" interface="PRI_MI2S_RX"/>
+ <device name="SND_DEVICE_OUT_VOICE_TTY_HCO_HANDSET" interface="PRI_MI2S_RX"/>
+ <device name="SND_DEVICE_OUT_ANC_FB_HEADSET" interface="PRI_MI2S_RX"/>
+ <device name="SND_DEVICE_OUT_VOICE_ANC_FB_HEADSET" interface="PRI_MI2S_RX"/>
+ <device name="SND_DEVICE_OUT_ANC_HANDSET" interface="PRI_MI2S_RX"/>
+ <device name="SND_DEVICE_OUT_SPEAKER_PROTECTED" interface="PRI_MI2S_RX"/>
+ <device name="SND_DEVICE_OUT_VOICE_SPEAKER_PROTECTED" interface="PRI_MI2S_RX"/>
+ <device name="SND_DEVICE_OUT_VOICE_SPEAKER_2_PROTECTED" interface="PRI_MI2S_RX"/>
+ <device name="SND_DEVICE_OUT_SPEAKER_PROTECTED_VBAT" interface="PRI_MI2S_RX"/>
+ <device name="SND_DEVICE_OUT_VOICE_SPEAKER_PROTECTED_VBAT" interface="PRI_MI2S_RX"/>
+ <device name="SND_DEVICE_OUT_VOICE_SPEAKER_2_PROTECTED_VBAT" interface="PRI_MI2S_RX"/>
+ <device name="SND_DEVICE_OUT_SPEAKER_WSA" interface="PRI_MI2S_RX"/>
+ <device name="SND_DEVICE_OUT_VOICE_SPEAKER_WSA" interface="PRI_MI2S_RX"/>
+ <device name="SND_DEVICE_OUT_VOICE_SPEAKER_2_WSA" interface="PRI_MI2S_RX"/>
+ <device name="SND_DEVICE_IN_HANDSET_MIC" interface="TERT_MI2S_TX"/>
+ <device name="SND_DEVICE_IN_HANDSET_MIC_EXTERNAL" interface="TERT_MI2S_TX"/>
+ <device name="SND_DEVICE_IN_HANDSET_MIC_AEC" interface="TERT_MI2S_TX"/>
+ <device name="SND_DEVICE_IN_HANDSET_MIC_NS" interface="TERT_MI2S_TX"/>
+ <device name="SND_DEVICE_IN_HANDSET_MIC_AEC_NS" interface="TERT_MI2S_TX"/>
+ <device name="SND_DEVICE_IN_HANDSET_DMIC" interface="TERT_MI2S_TX"/>
+ <device name="SND_DEVICE_IN_HANDSET_DMIC_AEC" interface="TERT_MI2S_TX"/>
+ <device name="SND_DEVICE_IN_HANDSET_DMIC_NS" interface="TERT_MI2S_TX"/>
+ <device name="SND_DEVICE_IN_HANDSET_DMIC_AEC_NS" interface="TERT_MI2S_TX"/>
+ <device name="SND_DEVICE_IN_SPEAKER_MIC" interface="TERT_MI2S_TX"/>
+ <device name="SND_DEVICE_IN_SPEAKER_MIC_AEC" interface="TERT_MI2S_TX"/>
+ <device name="SND_DEVICE_IN_SPEAKER_MIC_NS" interface="TERT_MI2S_TX"/>
+ <device name="SND_DEVICE_IN_SPEAKER_MIC_AEC_NS" interface="TERT_MI2S_TX"/>
+ <device name="SND_DEVICE_IN_SPEAKER_DMIC" interface="TERT_MI2S_TX"/>
+ <device name="SND_DEVICE_IN_SPEAKER_DMIC_AEC" interface="TERT_MI2S_TX"/>
+ <device name="SND_DEVICE_IN_SPEAKER_DMIC_NS" interface="TERT_MI2S_TX"/>
+ <device name="SND_DEVICE_IN_SPEAKER_DMIC_AEC_NS" interface="TERT_MI2S_TX"/>
+ <device name="SND_DEVICE_IN_HEADSET_MIC" interface="TERT_MI2S_TX"/>
+ <device name="SND_DEVICE_IN_HEADSET_MIC_FLUENCE" interface="TERT_MI2S_TX"/>
+ <device name="SND_DEVICE_IN_VOICE_SPEAKER_MIC" interface="TERT_MI2S_TX"/>
+ <device name="SND_DEVICE_IN_VOICE_HEADSET_MIC" interface="TERT_MI2S_TX"/>
+ <device name="SND_DEVICE_IN_CAMCORDER_MIC" interface="TERT_MI2S_TX"/>
+ <device name="SND_DEVICE_IN_VOICE_DMIC" interface="TERT_MI2S_TX"/>
+ <device name="SND_DEVICE_IN_VOICE_SPEAKER_DMIC" interface="TERT_MI2S_TX"/>
+ <device name="SND_DEVICE_IN_VOICE_SPEAKER_QMIC" interface="TERT_MI2S_TX"/>
+ <device name="SND_DEVICE_IN_VOICE_TTY_FULL_HEADSET_MIC" interface="TERT_MI2S_TX"/>
+ <device name="SND_DEVICE_IN_VOICE_TTY_VCO_HANDSET_MIC" interface="TERT_MI2S_TX"/>
+ <device name="SND_DEVICE_IN_VOICE_TTY_HCO_HEADSET_MIC" interface="TERT_MI2S_TX"/>
+ <device name="SND_DEVICE_IN_VOICE_REC_MIC" interface="TERT_MI2S_TX"/>
+ <device name="SND_DEVICE_IN_VOICE_REC_MIC_NS" interface="TERT_MI2S_TX"/>
+ <device name="SND_DEVICE_IN_VOICE_REC_DMIC_STEREO" interface="TERT_MI2S_TX"/>
+ <device name="SND_DEVICE_IN_VOICE_REC_DMIC_FLUENCE" interface="TERT_MI2S_TX"/>
+ <device name="SND_DEVICE_IN_AANC_HANDSET_MIC" interface="TERT_MI2S_TX"/>
+ <device name="SND_DEVICE_IN_QUAD_MIC" interface="TERT_MI2S_TX"/>
+ <device name="SND_DEVICE_IN_HANDSET_STEREO_DMIC" interface="TERT_MI2S_TX"/>
+ <device name="SND_DEVICE_IN_SPEAKER_STEREO_DMIC" interface="TERT_MI2S_TX"/>
+ <device name="SND_DEVICE_IN_CAPTURE_VI_FEEDBACK" interface="SENARY_MI2S_TX"/>
+ <device name="SND_DEVICE_IN_CAPTURE_VI_FEEDBACK_MONO_1" interface="SENARY_MI2S_TX"/>
+ <device name="SND_DEVICE_IN_CAPTURE_VI_FEEDBACK_MONO_2" interface="SENARY_MI2S_TX"/>
+ <device name="SND_DEVICE_IN_VOICE_SPEAKER_DMIC_BROADSIDE" interface="TERT_MI2S_TX"/>
+ <device name="SND_DEVICE_IN_SPEAKER_DMIC_BROADSIDE" interface="TERT_MI2S_TX"/>
+ <device name="SND_DEVICE_IN_SPEAKER_DMIC_AEC_BROADSIDE" interface="TERT_MI2S_TX"/>
+ <device name="SND_DEVICE_IN_SPEAKER_DMIC_NS_BROADSIDE" interface="TERT_MI2S_TX"/>
+ <device name="SND_DEVICE_IN_SPEAKER_DMIC_AEC_NS_BROADSIDE" interface="TERT_MI2S_TX"/>
+ <device name="SND_DEVICE_IN_VOICE_FLUENCE_DMIC_AANC" interface="TERT_MI2S_TX"/>
+ <device name="SND_DEVICE_IN_HANDSET_QMIC" interface="TERT_MI2S_TX"/>
+ <device name="SND_DEVICE_IN_SPEAKER_QMIC_AEC" interface="TERT_MI2S_TX"/>
+ <device name="SND_DEVICE_IN_SPEAKER_QMIC_NS" interface="TERT_MI2S_TX"/>
+ <device name="SND_DEVICE_IN_SPEAKER_QMIC_AEC_NS" interface="TERT_MI2S_TX"/>
+ <device name="SND_DEVICE_IN_THREE_MIC" interface="TERT_MI2S_TX"/>
+ <device name="SND_DEVICE_IN_HANDSET_TMIC" interface="TERT_MI2S_TX"/>
+ <device name="SND_DEVICE_IN_VOICE_REC_TMIC" interface="TERT_MI2S_TX"/>
+ <device name="SND_DEVICE_IN_UNPROCESSED_MIC" interface="TERT_MI2S_TX"/>
+ <device name="SND_DEVICE_IN_UNPROCESSED_STEREO_MIC" interface="TERT_MI2S_TX"/>
+ <device name="SND_DEVICE_IN_UNPROCESSED_THREE_MIC" interface="TERT_MI2S_TX"/>
+ <device name="SND_DEVICE_IN_UNPROCESSED_QUAD_MIC" interface="TERT_MI2S_TX"/>
+ <device name="SND_DEVICE_IN_UNPROCESSED_HEADSET_MIC" interface="TERT_MI2S_TX"/>
+ <device name="SND_DEVICE_OUT_VOICE_SPEAKER_AND_VOICE_HEADPHONES" interface="PRI_MI2S_RX"/>
+ <device name="SND_DEVICE_OUT_VOICE_SPEAKER_AND_VOICE_ANC_HEADSET" interface="PRI_MI2S_RX"/>
+ <device name="SND_DEVICE_OUT_SPEAKER_AND_BT_SCO" backend="speaker-and-bt-sco" interface="PRI_MI2S_RX-and-INT_BT_SCO_RX"/>
+ <device name="SND_DEVICE_OUT_SPEAKER_AND_BT_SCO_WB" backend="speaker-and-bt-sco-wb" interface="PRI_MI2S_RX-and-INT_BT_SCO_RX"/>
+ <device name="SND_DEVICE_OUT_SPEAKER_WSA_AND_BT_SCO" backend="wsa-speaker-and-bt-sco" interface="PRI_MI2S_RX-and-INT_BT_SCO_RX"/>
+ <device name="SND_DEVICE_OUT_SPEAKER_WSA_AND_BT_SCO_WB" backend="wsa-speaker-and-bt-sco-wb" interface="PRI_MI2S_RX-and-INT_BT_SCO_RX"/>
+ <device name="SND_DEVICE_OUT_VOICE_SPEAKER_VBAT" backend="vbat-voice-speaker" interface="PRI_MI2S_RX"/>
+ <device name="SND_DEVICE_IN_HDMI_MIC" interface="HDMI"/>
+ </backend_names>
+ <!-- below values are for ref purpose to OEM, doesn't contain actual hardware info on MTP -->
+ <microphone_characteristics>
+ <microphone valid_mask="31" device_id="builtin_mic_1" type="AUDIO_DEVICE_IN_BUILTIN_MIC" address="bottom" location="AUDIO_MICROPHONE_LOCATION_MAINBODY"
+ group="0" index_in_the_group="0" directionality="AUDIO_MICROPHONE_DIRECTIONALITY_OMNI" num_frequency_responses="93"
+ frequencies="100.00 106.00 112.00 118.00 125.00 132.00 140.00 150.00 160.00 170.00 180.00 190.00 200.00 212.00 224.00 236.00 250.00 265.00 280.00 300.00 315.00 335.00 355.00 375.00 400.00 425.00 450.00 475.00 500.00 530.00 560.00 600.00 630.00 670.00 710.00 750.00 800.00 850.00 900.00 950.00 1000.00 1060.00 1120.00 1180.00 1250.00 1320.00 1400.00 1500.00 1600.00 1700.00 1800.00 1900.00 2000.00 2120.00 2240.00 2360.00 2500.00 2650.00 2800.00 3000.00 3150.00 3350.00 3550.00 3750.00 4000.00 4250.00 4500.00 4750.00 5000.00 5300.00 5600.00 6000.00 6300.00 6700.00 7100.00 7500.00 8000.00 8500.00 9000.00 9500.00 10000.00 10600.00 11200.00 11800.00 12500.00 13200.00 14000.00 15000.00 16000.00 17000.00 18000.00 19000.00 20000.00"
+ responses="-0.78 -0.71 -0.64 -0.60 -0.55 -0.50 -0.47 -0.42 -0.39 -0.36 -0.34 -0.33 -0.32 -0.29 -0.28 -0.28 -0.27 -0.25 -0.25 -0.24 -0.23 -0.23 -0.22 -0.22 -0.19 -0.17 -0.15 -0.15 -0.14 -0.14 -0.12 -0.11 -0.10 -0.10 -0.08 -0.07 -0.07 -0.04 -0.03 -0.01 0.00 0.04 0.06 0.07 0.08 0.13 0.09 0.14 0.19 0.23 0.28 0.29 0.31 0.37 0.88 0.86 0.77 0.78 0.84 0.86 1.05 1.12 1.18 1.25 1.43 1.66 1.83 2.02 2.23 2.59 2.84 3.35 4.01 6.82 6.62 6.42 7.30 8.23 7.54 12.68 13.76 18.69 19.68 20.90 23.70 25.10 21.65 16.18 18.84 25.44 23.48 23.22 24.89"
+ sensitivity="-37.0" max_spl="132.5" min_spl="28.5" orientation="0.0 0.0 1.0" geometric_location="0.0269 0.0058 0.0079" />
+ <microphone valid_mask="31" device_id="builtin_mic_2" type="AUDIO_DEVICE_IN_BACK_MIC" address="back" location="AUDIO_MICROPHONE_LOCATION_MAINBODY"
+ group="0" index_in_the_group="1" directionality="AUDIO_MICROPHONE_DIRECTIONALITY_OMNI" num_frequency_responses="92"
+ frequencies="106.00 112.00 118.00 125.00 132.00 140.00 150.00 160.00 170.00 180.00 190.00 200.00 212.00 224.00 236.00 250.00 265.00 280.00 300.00 315.00 335.00 355.00 375.00 400.00 425.00 450.00 475.00 500.00 530.00 560.00 600.00 630.00 670.00 710.00 750.00 800.00 850.00 900.00 950.00 1000.00 1060.00 1120.00 1180.00 1250.00 1320.00 1400.00 1500.00 1600.00 1700.00 1800.00 1900.00 2000.00 2120.00 2240.00 2360.00 2500.00 2650.00 2800.00 3000.00 3150.00 3350.00 3550.00 3750.00 4000.00 4250.00 4500.00 4750.00 5000.00 5300.00 5600.00 6000.00 6300.00 6700.00 7100.00 7500.00 8000.00 8500.00 9000.00 9500.00 10000.00 10600.00 11200.00 11800.00 12500.00 13200.00 14000.00 15000.00 16000.00 17000.00 18000.00 19000.00 20000.00"
+ responses="-0.75 -0.74 -0.69 -0.65 -0.62 -0.61 -0.56 -0.53 -0.50 -0.47 -0.43 -0.40 -0.37 -0.36 -0.33 -0.30 -0.28 -0.25 -0.24 -0.24 -0.24 -0.25 -0.24 -0.12 -0.10 -0.08 -0.09 -0.07 -0.07 -0.06 -0.06 -0.06 -0.05 -0.04 -0.05 -0.04 -0.01 0.02 0.02 0.00 0.02 0.03 0.07 0.10 0.10 0.13 0.01 0.01 0.10 0.11 0.19 0.24 0.38 0.46 0.26 0.27 0.43 0.76 0.75 1.09 1.09 0.94 1.06 1.21 1.47 1.45 1.36 2.07 2.85 2.90 3.85 4.65 5.84 5.46 6.15 7.50 8.30 10.62 12.70 16.65 20.95 25.41 26.32 20.20 16.60 11.24 7.85 7.62 20.19 7.32 2.87 5.18"
+ sensitivity="-37.0" max_spl="132.5" min_spl="28.5" orientation="0.0 1.0 0.0" geometric_location="0.0546 0.1456 0.00415" />
+ <microphone valid_mask="31" device_id="builtin_mic_3" type="AUDIO_DEVICE_IN_BUILTIN_MIC" address="" location="AUDIO_MICROPHONE_LOCATION_MAINBODY"
+ group="0" index_in_the_group="2" directionality="AUDIO_MICROPHONE_DIRECTIONALITY_OMNI" num_frequency_responses="92"
+ frequencies="100.00 106.00 112.00 118.00 125.00 132.00 140.00 150.00 160.00 170.00 180.00 190.00 200.00 212.00 224.00 236.00 250.00 265.00 280.00 300.00 315.00 335.00 355.00 375.00 400.00 425.00 450.00 475.00 500.00 530.00 560.00 600.00 630.00 670.00 710.00 750.00 800.00 850.00 900.00 950.00 1000.00 1060.00 1120.00 1180.00 1250.00 1320.00 1400.00 1500.00 1600.00 1700.00 1800.00 1900.00 2000.00 2120.00 2240.00 2360.00 2500.00 2650.00 2800.00 3000.00 3150.00 3350.00 3550.00 3750.00 4000.00 4250.00 4500.00 4750.00 5000.00 5300.00 5600.00 6000.00 6300.00 6700.00 7100.00 7500.00 8000.00 8500.00 9000.00 9500.00 10000.00 10600.00 11200.00 11800.00 12500.00 13200.00 14000.00 15000.00 16000.00 17000.00 18000.00 19000.00"
+ responses="-9.24 -9.31 -9.39 -9.45 -9.46 -9.47 -9.50 -9.52 -9.51 -9.52 -9.51 -9.50 -9.49 -9.47 -9.48 -9.49 -9.48 -9.50 -9.51 -9.53 -9.55 -9.59 -9.63 -9.67 -9.58 -9.57 -9.65 -9.68 -9.71 -9.75 -9.79 -9.84 -9.87 -9.87 -9.90 -9.90 -9.91 -9.97 -10.01 -10.05 -9.85 -9.93 -9.94 -9.98 -10.04 -10.12 -10.28 -10.25 -10.01 -9.86 -9.81 -9.82 -9.61 -9.46 -8.27 -8.42 -8.98 -8.99 -8.82 -9.21 -8.92 -8.97 -9.30 -9.44 -9.52 -9.28 -9.09 -8.81 -7.02 -5.72 -5.30 -7.26 -8.39 -12.28 -8.23 -6.99 -5.52 -4.87 -3.82 -6.09 0.00 -2.15 -0.26 1.48 5.22 10.92 6.41 9.55 12.96 3.35 22.00 19.75"
+ sensitivity="-37.0" max_spl="132.5" min_spl="28.5" orientation="0.0 0.0 1.0" geometric_location="0.0274 0.14065 0.0079" />
+ <microphone valid_mask="31" device_id="builtin_mic_4" type="AUDIO_DEVICE_IN_BACK_MIC" address="" location="AUDIO_MICROPHONE_LOCATION_MAINBODY"
+ group="0" index_in_the_group="3" directionality="AUDIO_MICROPHONE_DIRECTIONALITY_OMNI" num_frequency_responses="92"
+ frequencies="106.00 112.00 118.00 125.00 132.00 140.00 150.00 160.00 170.00 180.00 190.00 200.00 212.00 224.00 236.00 250.00 265.00 280.00 300.00 315.00 335.00 355.00 375.00 400.00 425.00 450.00 475.00 500.00 530.00 560.00 600.00 630.00 670.00 710.00 750.00 800.00 850.00 900.00 950.00 1000.00 1060.00 1120.00 1180.00 1250.00 1320.00 1400.00 1500.00 1600.00 1700.00 1800.00 1900.00 2000.00 2120.00 2240.00 2360.00 2500.00 2650.00 2800.00 3000.00 3150.00 3350.00 3550.00 3750.00 4000.00 4250.00 4500.00 4750.00 5000.00 5300.00 5600.00 6000.00 6300.00 6700.00 7100.00 7500.00 8000.00 8500.00 9000.00 9500.00 10000.00 10600.00 11200.00 11800.00 12500.00 13200.00 14000.00 15000.00 16000.00 17000.00 18000.00 19000.00 20000.00"
+ responses="-0.75 -0.74 -0.69 -0.65 -0.62 -0.61 -0.56 -0.53 -0.50 -0.47 -0.43 -0.40 -0.37 -0.36 -0.33 -0.30 -0.28 -0.25 -0.24 -0.24 -0.24 -0.25 -0.24 -0.12 -0.10 -0.08 -0.09 -0.07 -0.07 -0.06 -0.06 -0.06 -0.05 -0.04 -0.05 -0.04 -0.01 0.02 0.02 0.00 0.02 0.03 0.07 0.10 0.10 0.13 0.01 0.01 0.10 0.11 0.19 0.24 0.38 0.46 0.26 0.27 0.43 0.76 0.75 1.09 1.09 0.94 1.06 1.21 1.47 1.45 1.36 2.07 2.85 2.90 3.85 4.65 5.84 5.46 6.15 7.50 8.30 10.62 12.70 16.65 20.95 25.41 26.32 20.20 16.60 11.24 7.85 7.62 20.19 7.32 2.87 5.18"
+ sensitivity="-37.0" max_spl="132.5" min_spl="28.5" orientation="0.0 1.0 0.0" geometric_location="0.0546 0.1456 0.00415" />
+ </microphone_characteristics>
+ <snd_devices>
+ <input_snd_device>
+ <input_snd_device_mic_mapping>
+ <snd_dev in_snd_device="SND_DEVICE_IN_HANDSET_MIC">
+ <mic_info mic_device_id="builtin_mic_1"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ </snd_dev>
+ <snd_dev in_snd_device="SND_DEVICE_IN_HANDSET_MIC_AEC">
+ <mic_info mic_device_id="builtin_mic_1"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ </snd_dev>
+ <snd_dev in_snd_device="SND_DEVICE_IN_HANDSET_MIC_NS">
+ <mic_info mic_device_id="builtin_mic_1"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ </snd_dev>
+ <snd_dev in_snd_device="SND_DEVICE_IN_HANDSET_MIC_AEC_NS">
+ <mic_info mic_device_id="builtin_mic_1"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ </snd_dev>
+ <snd_dev in_snd_device="SND_DEVICE_IN_HANDSET_DMIC">
+ <mic_info mic_device_id="builtin_mic_1"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ <mic_info mic_device_id="builtin_mic_2"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ </snd_dev>
+ <snd_dev in_snd_device="SND_DEVICE_IN_HANDSET_DMIC_AEC">
+ <mic_info mic_device_id="builtin_mic_1"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ <mic_info mic_device_id="builtin_mic_2"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ </snd_dev>
+ <snd_dev in_snd_device="SND_DEVICE_IN_HANDSET_DMIC_NS">
+ <mic_info mic_device_id="builtin_mic_1"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ <mic_info mic_device_id="builtin_mic_2"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ </snd_dev>
+ <snd_dev in_snd_device="SND_DEVICE_IN_HANDSET_DMIC_AEC_NS">
+ <mic_info mic_device_id="builtin_mic_1"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ <mic_info mic_device_id="builtin_mic_2"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ </snd_dev>
+ <snd_dev in_snd_device="SND_DEVICE_IN_SPEAKER_MIC">
+ <mic_info mic_device_id="builtin_mic_1"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ </snd_dev>
+ <snd_dev in_snd_device="SND_DEVICE_IN_SPEAKER_MIC_AEC">
+ <mic_info mic_device_id="builtin_mic_1"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ </snd_dev>
+ <snd_dev in_snd_device="SND_DEVICE_IN_SPEAKER_MIC_NS">
+ <mic_info mic_device_id="builtin_mic_1"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ </snd_dev>
+ <snd_dev in_snd_device="SND_DEVICE_IN_SPEAKER_MIC_AEC_NS">
+ <mic_info mic_device_id="builtin_mic_1"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ </snd_dev>
+ <snd_dev in_snd_device="SND_DEVICE_IN_SPEAKER_DMIC">
+ <mic_info mic_device_id="builtin_mic_1"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ <mic_info mic_device_id="builtin_mic_2"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ </snd_dev>
+ <snd_dev in_snd_device="SND_DEVICE_IN_SPEAKER_DMIC_AEC">
+ <mic_info mic_device_id="builtin_mic_1"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ <mic_info mic_device_id="builtin_mic_2"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ </snd_dev>
+ <snd_dev in_snd_device="SND_DEVICE_IN_SPEAKER_DMIC_NS">
+ <mic_info mic_device_id="builtin_mic_1"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ <mic_info mic_device_id="builtin_mic_2"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ </snd_dev>
+ <snd_dev in_snd_device="SND_DEVICE_IN_SPEAKER_DMIC_AEC_NS">
+ <mic_info mic_device_id="builtin_mic_1"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ <mic_info mic_device_id="builtin_mic_2"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ </snd_dev>
+ <snd_dev in_snd_device="SND_DEVICE_IN_VOICE_SPEAKER_MIC">
+ <mic_info mic_device_id="builtin_mic_1"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ </snd_dev>
+ <snd_dev in_snd_device="SND_DEVICE_IN_CAMCORDER_MIC">
+ <mic_info mic_device_id="builtin_mic_1"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ </snd_dev>
+ <snd_dev in_snd_device="SND_DEVICE_IN_VOICE_DMIC">
+ <mic_info mic_device_id="builtin_mic_1"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ <mic_info mic_device_id="builtin_mic_2"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ </snd_dev>
+ <snd_dev in_snd_device="SND_DEVICE_IN_VOICE_SPEAKER_DMIC">
+ <mic_info mic_device_id="builtin_mic_1"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ <mic_info mic_device_id="builtin_mic_2"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ </snd_dev>
+ <snd_dev in_snd_device="SND_DEVICE_IN_VOICE_SPEAKER_TMIC">
+ <mic_info mic_device_id="builtin_mic_1"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ <mic_info mic_device_id="builtin_mic_2"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ <mic_info mic_device_id="builtin_mic_3"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ </snd_dev>
+ <snd_dev in_snd_device="SND_DEVICE_IN_VOICE_SPEAKER_QMIC">
+ <mic_info mic_device_id="builtin_mic_1"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ <mic_info mic_device_id="builtin_mic_2"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ <mic_info mic_device_id="builtin_mic_3"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ <mic_info mic_device_id="builtin_mic_4"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ </snd_dev>
+ <snd_dev in_snd_device="SND_DEVICE_IN_VOICE_REC_MIC">
+ <mic_info mic_device_id="builtin_mic_1"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ </snd_dev>
+ <snd_dev in_snd_device="SND_DEVICE_IN_VOICE_REC_MIC_NS">
+ <mic_info mic_device_id="builtin_mic_1"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ </snd_dev>
+ <snd_dev in_snd_device="SND_DEVICE_IN_VOICE_REC_DMIC_STEREO">
+ <mic_info mic_device_id="builtin_mic_1"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ <mic_info mic_device_id="builtin_mic_2"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ </snd_dev>
+ <snd_dev in_snd_device="SND_DEVICE_IN_VOICE_REC_DMIC_FLUENCE">
+ <mic_info mic_device_id="builtin_mic_1"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ <mic_info mic_device_id="builtin_mic_2"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ </snd_dev>
+ <snd_dev in_snd_device="SND_DEVICE_IN_AANC_HANDSET_MIC">
+ <mic_info mic_device_id="builtin_mic_1"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ <mic_info mic_device_id="builtin_mic_2"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ <mic_info mic_device_id="builtin_mic_3"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ </snd_dev>
+ <snd_dev in_snd_device="SND_DEVICE_IN_QUAD_MIC">
+ <mic_info mic_device_id="builtin_mic_1"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ <mic_info mic_device_id="builtin_mic_2"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ <mic_info mic_device_id="builtin_mic_3"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ <mic_info mic_device_id="builtin_mic_4"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ </snd_dev>
+ <snd_dev in_snd_device="SND_DEVICE_IN_HANDSET_STEREO_DMIC">
+ <mic_info mic_device_id="builtin_mic_1"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ <mic_info mic_device_id="builtin_mic_2"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ </snd_dev>
+ <snd_dev in_snd_device="SND_DEVICE_IN_SPEAKER_STEREO_DMIC">
+ <mic_info mic_device_id="builtin_mic_1"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ <mic_info mic_device_id="builtin_mic_2"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ </snd_dev>
+ <snd_dev in_snd_device="SND_DEVICE_IN_VOICE_SPEAKER_DMIC_BROADSIDE">
+ <mic_info mic_device_id="builtin_mic_1"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ <mic_info mic_device_id="builtin_mic_3"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ </snd_dev>
+ <snd_dev in_snd_device="SND_DEVICE_IN_SPEAKER_DMIC_BROADSIDE">
+ <mic_info mic_device_id="builtin_mic_1"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ <mic_info mic_device_id="builtin_mic_3"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ </snd_dev>
+ <snd_dev in_snd_device="SND_DEVICE_IN_SPEAKER_DMIC_AEC_BROADSIDE">
+ <mic_info mic_device_id="builtin_mic_1"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ <mic_info mic_device_id="builtin_mic_3"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ </snd_dev>
+ <snd_dev in_snd_device="SND_DEVICE_IN_SPEAKER_DMIC_NS_BROADSIDE">
+ <mic_info mic_device_id="builtin_mic_1"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ <mic_info mic_device_id="builtin_mic_3"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ </snd_dev>
+ <snd_dev in_snd_device="SND_DEVICE_IN_SPEAKER_DMIC_AEC_NS_BROADSIDE">
+ <mic_info mic_device_id="builtin_mic_1"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ <mic_info mic_device_id="builtin_mic_3"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ </snd_dev>
+ <snd_dev in_snd_device="SND_DEVICE_IN_VOICE_FLUENCE_DMIC_AANC">
+ <mic_info mic_device_id="builtin_mic_1"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ <mic_info mic_device_id="builtin_mic_2"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ <mic_info mic_device_id="builtin_mic_3"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ <mic_info mic_device_id="builtin_mic_4"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ </snd_dev>
+ <snd_dev in_snd_device="SND_DEVICE_IN_HANDSET_QMIC">
+ <mic_info mic_device_id="builtin_mic_1"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ <mic_info mic_device_id="builtin_mic_2"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ <mic_info mic_device_id="builtin_mic_3"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ <mic_info mic_device_id="builtin_mic_4"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ </snd_dev>
+ <snd_dev in_snd_device="SND_DEVICE_IN_SPEAKER_QMIC_AEC">
+ <mic_info mic_device_id="builtin_mic_1"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ <mic_info mic_device_id="builtin_mic_2"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ <mic_info mic_device_id="builtin_mic_3"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ <mic_info mic_device_id="builtin_mic_4"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ </snd_dev>
+ <snd_dev in_snd_device="SND_DEVICE_IN_SPEAKER_QMIC_NS">
+ <mic_info mic_device_id="builtin_mic_1"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ <mic_info mic_device_id="builtin_mic_2"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ <mic_info mic_device_id="builtin_mic_3"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ <mic_info mic_device_id="builtin_mic_4"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ </snd_dev>
+ <snd_dev in_snd_device="SND_DEVICE_IN_SPEAKER_QMIC_AEC_NS">
+ <mic_info mic_device_id="builtin_mic_1"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ <mic_info mic_device_id="builtin_mic_2"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ <mic_info mic_device_id="builtin_mic_3"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ <mic_info mic_device_id="builtin_mic_4"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ </snd_dev>
+ <snd_dev in_snd_device="SND_DEVICE_IN_THREE_MIC">
+ <mic_info mic_device_id="builtin_mic_1"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ <mic_info mic_device_id="builtin_mic_2"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ <mic_info mic_device_id="builtin_mic_3"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ </snd_dev>
+ <snd_dev in_snd_device="SND_DEVICE_IN_HANDSET_TMIC_FLUENCE_PRO">
+ <mic_info mic_device_id="builtin_mic_1"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ <mic_info mic_device_id="builtin_mic_2"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ <mic_info mic_device_id="builtin_mic_3"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ </snd_dev>
+ <snd_dev in_snd_device="SND_DEVICE_IN_HANDSET_TMIC">
+ <mic_info mic_device_id="builtin_mic_1"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ <mic_info mic_device_id="builtin_mic_2"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ <mic_info mic_device_id="builtin_mic_3"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ </snd_dev>
+ <snd_dev in_snd_device="SND_DEVICE_IN_SPEAKER_TMIC_AEC">
+ <mic_info mic_device_id="builtin_mic_1"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ <mic_info mic_device_id="builtin_mic_2"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ <mic_info mic_device_id="builtin_mic_3"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ </snd_dev>
+ <snd_dev in_snd_device="SND_DEVICE_IN_SPEAKER_TMIC_NS">
+ <mic_info mic_device_id="builtin_mic_1"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ <mic_info mic_device_id="builtin_mic_2"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ <mic_info mic_device_id="builtin_mic_3"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ </snd_dev>
+ <snd_dev in_snd_device="SND_DEVICE_IN_SPEAKER_TMIC_AEC_NS">
+ <mic_info mic_device_id="builtin_mic_1"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ <mic_info mic_device_id="builtin_mic_2"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ <mic_info mic_device_id="builtin_mic_3"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ </snd_dev>
+ <snd_dev in_snd_device="SND_DEVICE_IN_VOICE_REC_TMIC">
+ <mic_info mic_device_id="builtin_mic_1"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ <mic_info mic_device_id="builtin_mic_2"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ <mic_info mic_device_id="builtin_mic_3"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ </snd_dev>
+ <snd_dev in_snd_device="SND_DEVICE_IN_UNPROCESSED_MIC">
+ <mic_info mic_device_id="builtin_mic_1"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_DIRECT"/>
+ </snd_dev>
+ <snd_dev in_snd_device="SND_DEVICE_IN_UNPROCESSED_STEREO_MIC">
+ <mic_info mic_device_id="builtin_mic_1"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_DIRECT AUDIO_MICROPHONE_CHANNEL_MAPPING_UNUSED"/>
+ <mic_info mic_device_id="builtin_mic_2"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_UNUSED AUDIO_MICROPHONE_CHANNEL_MAPPING_DIRECT"/>
+ </snd_dev>
+ <snd_dev in_snd_device="SND_DEVICE_IN_UNPROCESSED_THREE_MIC">
+ <mic_info mic_device_id="builtin_mic_1"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_DIRECT AUDIO_MICROPHONE_CHANNEL_MAPPING_UNUSED AUDIO_MICROPHONE_CHANNEL_MAPPING_UNUSED"/>
+ <mic_info mic_device_id="builtin_mic_2"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_UNUSED AUDIO_MICROPHONE_CHANNEL_MAPPING_DIRECT AUDIO_MICROPHONE_CHANNEL_MAPPING_UNUSED"/>
+ <mic_info mic_device_id="builtin_mic_3"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_UNUSED AUDIO_MICROPHONE_CHANNEL_MAPPING_UNUSED AUDIO_MICROPHONE_CHANNEL_MAPPING_DIRECT"/>
+ </snd_dev>
+ <snd_dev in_snd_device="SND_DEVICE_IN_UNPROCESSED_QUAD_MIC">
+ <mic_info mic_device_id="builtin_mic_1"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_DIRECT AUDIO_MICROPHONE_CHANNEL_MAPPING_UNUSED AUDIO_MICROPHONE_CHANNEL_MAPPING_UNUSED AUDIO_MICROPHONE_CHANNEL_MAPPING_UNUSED"/>
+ <mic_info mic_device_id="builtin_mic_2"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_UNUSED AUDIO_MICROPHONE_CHANNEL_MAPPING_DIRECT AUDIO_MICROPHONE_CHANNEL_MAPPING_UNUSED AUDIO_MICROPHONE_CHANNEL_MAPPING_UNUSED"/>
+ <mic_info mic_device_id="builtin_mic_3"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_UNUSED AUDIO_MICROPHONE_CHANNEL_MAPPING_UNUSED AUDIO_MICROPHONE_CHANNEL_MAPPING_DIRECT AUDIO_MICROPHONE_CHANNEL_MAPPING_UNUSED"/>
+ <mic_info mic_device_id="builtin_mic_4"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_UNUSED AUDIO_MICROPHONE_CHANNEL_MAPPING_UNUSED AUDIO_MICROPHONE_CHANNEL_MAPPING_UNUSED AUDIO_MICROPHONE_CHANNEL_MAPPING_DIRECT"/>
+ </snd_dev>
+ <snd_dev in_snd_device="SND_DEVICE_IN_HANDSET_GENERIC_QMIC">
+ <mic_info mic_device_id="builtin_mic_1"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ <mic_info mic_device_id="builtin_mic_2"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ <mic_info mic_device_id="builtin_mic_3"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ <mic_info mic_device_id="builtin_mic_4"
+ channel_mapping="AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED"/>
+ </snd_dev>
+ </input_snd_device_mic_mapping>
+ </input_snd_device>
+ </snd_devices>
+</audio_platform_info>
+
diff --git a/configs/msm8937/audio_platform_info_intcodec.xml b/configs/msm8937/audio_platform_info_intcodec.xml
index cde7830..bc37572 100644
--- a/configs/msm8937/audio_platform_info_intcodec.xml
+++ b/configs/msm8937/audio_platform_info_intcodec.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
-<!-- Copyright (c) 2015 - 2016, 2018, The Linux Foundation. All rights reserved. -->
+<!-- Copyright (c) 2015 - 2016, 2018, 2020, The Linux Foundation. All rights reserved. -->
<!-- -->
<!-- Redistribution and use in source and binary forms, with or without -->
<!-- modification, are permitted provided that the following conditions are -->
@@ -47,6 +47,8 @@
<usecase name="USECASE_VOICEMMODE1_CALL" type="out" id="34"/>
<usecase name="USECASE_VOICEMMODE2_CALL" type="in" id="35"/>
<usecase name="USECASE_VOICEMMODE2_CALL" type="out" id="35"/>
+ <usecase name="USECASE_INCALL_MUSIC_UPLINK" type="out" id="1" />
+ <usecase name="USECASE_INCALL_MUSIC_UPLINK2" type="out" id="35" />
</pcm_ids>
<config_params>
<param key="spkr_1_tz_name" value="wsa881x.0f"/>
diff --git a/configs/msm8937/audio_platform_info_mtp.xml b/configs/msm8937/audio_platform_info_mtp.xml
index cde7830..bc37572 100644
--- a/configs/msm8937/audio_platform_info_mtp.xml
+++ b/configs/msm8937/audio_platform_info_mtp.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
-<!-- Copyright (c) 2015 - 2016, 2018, The Linux Foundation. All rights reserved. -->
+<!-- Copyright (c) 2015 - 2016, 2018, 2020, The Linux Foundation. All rights reserved. -->
<!-- -->
<!-- Redistribution and use in source and binary forms, with or without -->
<!-- modification, are permitted provided that the following conditions are -->
@@ -47,6 +47,8 @@
<usecase name="USECASE_VOICEMMODE1_CALL" type="out" id="34"/>
<usecase name="USECASE_VOICEMMODE2_CALL" type="in" id="35"/>
<usecase name="USECASE_VOICEMMODE2_CALL" type="out" id="35"/>
+ <usecase name="USECASE_INCALL_MUSIC_UPLINK" type="out" id="1" />
+ <usecase name="USECASE_INCALL_MUSIC_UPLINK2" type="out" id="35" />
</pcm_ids>
<config_params>
<param key="spkr_1_tz_name" value="wsa881x.0f"/>
diff --git a/configs/msm8937/audio_platform_info_tasha.xml b/configs/msm8937/audio_platform_info_tasha.xml
index cdf3249..ea8826a 100644
--- a/configs/msm8937/audio_platform_info_tasha.xml
+++ b/configs/msm8937/audio_platform_info_tasha.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
-<!-- Copyright (c) 2015 - 2016, 2018, The Linux Foundation. All rights reserved. -->
+<!-- Copyright (c) 2015 - 2016, 2018, 2020, The Linux Foundation. All rights reserved. -->
<!-- -->
<!-- Redistribution and use in source and binary forms, with or without -->
<!-- modification, are permitted provided that the following conditions are -->
@@ -50,6 +50,8 @@
<usecase name="USECASE_AUDIO_SPKR_CALIB_TX" type="in" id="37"/>
<usecase name="USECASE_QCHAT_CALL" type="in" id="42"/>
<usecase name="USECASE_QCHAT_CALL" type="out" id="42"/>
+ <usecase name="USECASE_INCALL_MUSIC_UPLINK" type="out" id="1" />
+ <usecase name="USECASE_INCALL_MUSIC_UPLINK2" type="out" id="35" />
</pcm_ids>
<acdb_ids>
<device name="SND_DEVICE_OUT_SPEAKER_EXTERNAL_1" acdb_id="14"/>
diff --git a/configs/msm8937/audio_platform_info_tashalite.xml b/configs/msm8937/audio_platform_info_tashalite.xml
index cdf3249..ea8826a 100644
--- a/configs/msm8937/audio_platform_info_tashalite.xml
+++ b/configs/msm8937/audio_platform_info_tashalite.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
-<!-- Copyright (c) 2015 - 2016, 2018, The Linux Foundation. All rights reserved. -->
+<!-- Copyright (c) 2015 - 2016, 2018, 2020, The Linux Foundation. All rights reserved. -->
<!-- -->
<!-- Redistribution and use in source and binary forms, with or without -->
<!-- modification, are permitted provided that the following conditions are -->
@@ -50,6 +50,8 @@
<usecase name="USECASE_AUDIO_SPKR_CALIB_TX" type="in" id="37"/>
<usecase name="USECASE_QCHAT_CALL" type="in" id="42"/>
<usecase name="USECASE_QCHAT_CALL" type="out" id="42"/>
+ <usecase name="USECASE_INCALL_MUSIC_UPLINK" type="out" id="1" />
+ <usecase name="USECASE_INCALL_MUSIC_UPLINK2" type="out" id="35" />
</pcm_ids>
<acdb_ids>
<device name="SND_DEVICE_OUT_SPEAKER_EXTERNAL_1" acdb_id="14"/>
diff --git a/configs/msm8937/audio_policy_configuration.xml b/configs/msm8937/audio_policy_configuration.xml
index 948ddba..0b2a31a 100644
--- a/configs/msm8937/audio_policy_configuration.xml
+++ b/configs/msm8937/audio_policy_configuration.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<!-- Copyright (c) 2016-2017, The Linux Foundation. All rights reserved
+<!-- Copyright (c) 2016-2017, 2020, The Linux Foundation. All rights reserved
Not a Contribution.
-->
<!-- Copyright (C) 2015 The Android Open Source Project
@@ -21,7 +21,7 @@
<!-- version section contains a “version” tag in the form “major.minor” e.g version=”1.0” -->
<!-- Global configuration Decalaration -->
- <globalConfiguration speaker_drc_enabled="true"/>
+ <globalConfiguration speaker_drc_enabled="true" call_screen_mode_supported="true"/>
<!-- Modules section:
@@ -142,6 +142,12 @@
samplingRates="8000,11025,12000,16000,22050,24000,32000,44100,48000"
channelMasks="AUDIO_CHANNEL_IN_MONO,AUDIO_CHANNEL_IN_STEREO,AUDIO_CHANNEL_IN_FRONT_BACK"/>
</mixPort>
+ <mixPort name="incall_music_uplink" role="source"
+ flags="AUDIO_OUTPUT_FLAG_INCALL_MUSIC">
+ <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+ samplingRates="8000,16000,48000"
+ channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
+ </mixPort>
<mixPort name="surround_sound" role="sink">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="8000,11025,12000,16000,22050,24000,32000,44100,48000"
@@ -249,6 +255,8 @@
sources="primary output,raw,deep_buffer,direct_pcm,compressed_offload"/>
<route type="mix" sink="Proxy"
sources="primary output,raw,deep_buffer,direct_pcm,compressed_offload"/>
+ <route type="mix" sink="Telephony Tx"
+ sources="voice_tx,incall_music_uplink"/>
<route type="mix" sink="FM"
sources="primary output"/>
<route type="mix" sink="BT SCO"
diff --git a/configs/msm8937/msm8937.mk b/configs/msm8937/msm8937.mk
index e8c8ea0..6ff61aa 100644
--- a/configs/msm8937/msm8937.mk
+++ b/configs/msm8937/msm8937.mk
@@ -48,7 +48,7 @@
AUDIO_FEATURE_ENABLED_HDMI_EDID := true
AUDIO_FEATURE_ENABLED_EXT_HDMI := true
AUDIO_FEATURE_ENABLED_HFP := true
-AUDIO_FEATURE_ENABLED_INCALL_MUSIC := false
+AUDIO_FEATURE_ENABLED_INCALL_MUSIC := true
AUDIO_FEATURE_ENABLED_MULTI_VOICE_SESSIONS := true
AUDIO_FEATURE_ENABLED_KPI_OPTIMIZE := true
AUDIO_FEATURE_ENABLED_SPKR_PROTECTION := true
@@ -310,4 +310,13 @@
android.hardware.audio@5.0-impl \
android.hardware.audio.effect@5.0 \
android.hardware.audio.effect@5.0-impl
+
+# enable audio hidl hal 6.0
+PRODUCT_PACKAGES += \
+ android.hardware.audio@5.0 \
+ android.hardware.audio.common@5.0 \
+ android.hardware.audio.common@5.0-util \
+ android.hardware.audio@5.0-impl \
+ android.hardware.audio.effect@5.0 \
+ android.hardware.audio.effect@5.0-impl
endif
diff --git a/configs/msm8953/audio_platform_info_intcodec.xml b/configs/msm8953/audio_platform_info_intcodec.xml
index c43795c..a071157 100644
--- a/configs/msm8953/audio_platform_info_intcodec.xml
+++ b/configs/msm8953/audio_platform_info_intcodec.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
-<!-- Copyright (c) 2015 - 2016, 2018, The Linux Foundation. All rights reserved. -->
+<!-- Copyright (c) 2015 - 2016, 2018, 2020, The Linux Foundation. All rights reserved. -->
<!-- -->
<!-- Redistribution and use in source and binary forms, with or without -->
<!-- modification, are permitted provided that the following conditions are -->
@@ -47,6 +47,8 @@
<usecase name="USECASE_VOICEMMODE1_CALL" type="out" id="34"/>
<usecase name="USECASE_VOICEMMODE2_CALL" type="in" id="35"/>
<usecase name="USECASE_VOICEMMODE2_CALL" type="out" id="35"/>
+ <usecase name="USECASE_INCALL_MUSIC_UPLINK" type="out" id="1" />
+ <usecase name="USECASE_INCALL_MUSIC_UPLINK2" type="out" id="35" />
</pcm_ids>
<config_params>
<param key="spkr_1_tz_name" value="wsa881x.0f"/>
diff --git a/configs/msm8953/audio_platform_info_sku4.xml b/configs/msm8953/audio_platform_info_sku4.xml
index c43795c..a071157 100644
--- a/configs/msm8953/audio_platform_info_sku4.xml
+++ b/configs/msm8953/audio_platform_info_sku4.xml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="ISO-8859-1"?>
-<!-- Copyright (c) 2015 - 2016, 2018, The Linux Foundation. All rights reserved. -->
+<!-- Copyright (c) 2015 - 2016, 2018, 2020, The Linux Foundation. All rights reserved. -->
<!-- -->
<!-- Redistribution and use in source and binary forms, with or without -->
<!-- modification, are permitted provided that the following conditions are -->
@@ -47,6 +47,8 @@
<usecase name="USECASE_VOICEMMODE1_CALL" type="out" id="34"/>
<usecase name="USECASE_VOICEMMODE2_CALL" type="in" id="35"/>
<usecase name="USECASE_VOICEMMODE2_CALL" type="out" id="35"/>
+ <usecase name="USECASE_INCALL_MUSIC_UPLINK" type="out" id="1" />
+ <usecase name="USECASE_INCALL_MUSIC_UPLINK2" type="out" id="35" />
</pcm_ids>
<config_params>
<param key="spkr_1_tz_name" value="wsa881x.0f"/>
diff --git a/configs/msm8953/audio_platform_info_tasha.xml b/configs/msm8953/audio_platform_info_tasha.xml
index 6bf8a08..96a34d0 100644
--- a/configs/msm8953/audio_platform_info_tasha.xml
+++ b/configs/msm8953/audio_platform_info_tasha.xml
@@ -59,6 +59,8 @@
<usecase name="USECASE_QCHAT_CALL" type="out" id="42"/>
<usecase name="USECASE_AUDIO_EC_REF_LOOPBACK" type="in" id="14"/>
<usecase name="USECASE_AUDIO_PLAYBACK_SILENCE" type="out" id="14"/>
+ <usecase name="USECASE_INCALL_MUSIC_UPLINK" type="out" id="1" />
+ <usecase name="USECASE_INCALL_MUSIC_UPLINK2" type="out" id="35" />
</pcm_ids>
<config_params>
<param key="native_audio_mode" value="src"/>
diff --git a/configs/msm8953/audio_platform_info_tashalite.xml b/configs/msm8953/audio_platform_info_tashalite.xml
index 1d30160..671095b 100644
--- a/configs/msm8953/audio_platform_info_tashalite.xml
+++ b/configs/msm8953/audio_platform_info_tashalite.xml
@@ -59,6 +59,8 @@
<usecase name="USECASE_QCHAT_CALL" type="out" id="42"/>
<usecase name="USECASE_AUDIO_EC_REF_LOOPBACK" type="in" id="14"/>
<usecase name="USECASE_AUDIO_PLAYBACK_SILENCE" type="out" id="14"/>
+ <usecase name="USECASE_INCALL_MUSIC_UPLINK" type="out" id="1" />
+ <usecase name="USECASE_INCALL_MUSIC_UPLINK2" type="out" id="35" />
</pcm_ids>
<config_params>
<param key="native_audio_mode" value="src"/>
diff --git a/configs/msm8953/audio_policy_configuration.xml b/configs/msm8953/audio_policy_configuration.xml
index 4e78004..0b8b7f3 100644
--- a/configs/msm8953/audio_policy_configuration.xml
+++ b/configs/msm8953/audio_policy_configuration.xml
@@ -21,7 +21,7 @@
<!-- version section contains a “version” tag in the form “major.minor” e.g version=”1.0” -->
<!-- Global configuration Decalaration -->
- <globalConfiguration speaker_drc_enabled="true"/>
+ <globalConfiguration speaker_drc_enabled="true" call_screen_mode_supported="true"/>
<!-- Modules section:
@@ -142,6 +142,12 @@
samplingRates="8000,11025,12000,16000,22050,24000,32000,44100,48000"
channelMasks="AUDIO_CHANNEL_IN_MONO,AUDIO_CHANNEL_IN_STEREO,AUDIO_CHANNEL_IN_FRONT_BACK"/>
</mixPort>
+ <mixPort name="incall_music_uplink" role="source"
+ flags="AUDIO_OUTPUT_FLAG_INCALL_MUSIC">
+ <profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
+ samplingRates="8000,16000,48000"
+ channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
+ </mixPort>
<mixPort name="surround_sound" role="sink">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="8000,11025,12000,16000,22050,24000,32000,44100,48000"
@@ -260,6 +266,8 @@
sources="primary output,raw,deep_buffer,direct_pcm,compressed_offload"/>
<route type="mix" sink="Proxy"
sources="primary output,raw,deep_buffer,direct_pcm,compressed_offload"/>
+ <route type="mix" sink="Telephony Tx"
+ sources="voice_tx,incall_music_uplink"/>
<route type="mix" sink="FM"
sources="primary output"/>
<route type="mix" sink="BT SCO"
diff --git a/configs/msm8953/msm8953.mk b/configs/msm8953/msm8953.mk
index b2bb40b..7a49cbc 100644
--- a/configs/msm8953/msm8953.mk
+++ b/configs/msm8953/msm8953.mk
@@ -46,7 +46,7 @@
AUDIO_FEATURE_ENABLED_HDMI_EDID := true
AUDIO_FEATURE_ENABLED_EXT_HDMI := true
AUDIO_FEATURE_ENABLED_HFP := true
-AUDIO_FEATURE_ENABLED_INCALL_MUSIC := false
+AUDIO_FEATURE_ENABLED_INCALL_MUSIC := true
AUDIO_FEATURE_ENABLED_MULTI_VOICE_SESSIONS := true
AUDIO_FEATURE_ENABLED_KPI_OPTIMIZE := true
AUDIO_FEATURE_ENABLED_SPKR_PROTECTION := true
@@ -310,4 +310,14 @@
android.hardware.audio@5.0-impl \
android.hardware.audio.effect@5.0 \
android.hardware.audio.effect@5.0-impl
+
+# enable audio hidl hal 6.0
+PRODUCT_PACKAGES += \
+ android.hardware.audio@6.0 \
+ android.hardware.audio.common@6.0 \
+ android.hardware.audio.common@6.0-util \
+ android.hardware.audio@6.0-impl \
+ android.hardware.audio.effect@6.0 \
+ android.hardware.audio.effect@6.0-impl
+
endif
diff --git a/hal/acdb.c b/hal/acdb.c
index d2b2b94..f4cebec 100644
--- a/hal/acdb.c
+++ b/hal/acdb.c
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2013-2019, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2013-2020, The Linux Foundation. All rights reserved.
* Not a Contribution.
*
* Copyright (C) 2013 The Android Open Source Project
@@ -102,7 +102,8 @@
int result = -1;
char *cvd_version = NULL;
- char platform_info_file[MIXER_PATH_MAX_LENGTH] = PLATFORM_INFO_XML_PATH;
+ char vendor_config_path[VENDOR_CONFIG_PATH_MAX_LENGTH];
+ char platform_info_file[VENDOR_CONFIG_FILE_MAX_LENGTH];
const char *snd_card_name = NULL;
struct acdb_platform_data *my_data = NULL;
@@ -118,6 +119,10 @@
}
list_init(&my_data->acdb_meta_key_list);
+ audio_get_vendor_config_path(vendor_config_path, sizeof(vendor_config_path));
+ /* Get path for platorm_info_xml_path_name in vendor */
+ snprintf(platform_info_file, sizeof(platform_info_file),
+ "%s/%s", vendor_config_path, PLATFORM_INFO_XML_PATH_NAME);
get_platform_file_for_device(mixer, platform_info_file);
/* Extract META KEY LIST INFO */
platform_info_init(platform_info_file, my_data, ACDB_EXTN);
diff --git a/hal/acdb.h b/hal/acdb.h
index e0d4628..10a78d3 100644
--- a/hal/acdb.h
+++ b/hal/acdb.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2013-2019, The Linux Foundation. All rights reserved.
+ * Copyright (c) 2013-2020, The Linux Foundation. All rights reserved.
* Not a Contribution.
*
* Copyright (C) 2013 The Android Open Source Project
@@ -28,11 +28,9 @@
#define CVD_VERSION_MIXER_CTL "CVD Version"
#define ACDB_METAINFO_KEY_MODULE_NAME_LEN 100
-#ifdef LINUX_ENABLED
-#define PLATFORM_INFO_XML_PATH "/etc/audio_platform_info.xml"
-#else
-#define PLATFORM_INFO_XML_PATH "/vendor/etc/audio_platform_info.xml"
-#endif
+
+#define PLATFORM_INFO_XML_PATH_NAME "audio_platform_info.xml"
+
enum {
ACDB_LOADER_INIT_V1 = 1,
diff --git a/hal/audio_extn/a2dp.c b/hal/audio_extn/a2dp.c
index 8422846..4bd9125 100644
--- a/hal/audio_extn/a2dp.c
+++ b/hal/audio_extn/a2dp.c
@@ -2524,6 +2524,7 @@
if (ret != 0 ) {
ALOGE("BT controller start failed");
a2dp.a2dp_source_started = false;
+ ret = -ETIMEDOUT;
} else {
if (configure_a2dp_encoder_format() == true) {
a2dp.a2dp_source_started = true;
diff --git a/hal/audio_extn/audio_extn.c b/hal/audio_extn/audio_extn.c
index 24dd068..d53db94 100644
--- a/hal/audio_extn/audio_extn.c
+++ b/hal/audio_extn/audio_extn.c
@@ -57,6 +57,10 @@
#include "edid.h"
#include "sound/compress_params.h"
+#ifdef AUDIO_GKI_ENABLED
+#include "sound/audio_compressed_formats.h"
+#endif
+
#ifdef DYNAMIC_LOG_ENABLED
#include <log_xml_parser.h>
#define LOG_MASK HAL_MOD_FILE_AUDIO_EXTN
@@ -3038,55 +3042,81 @@
}
#ifdef AUDIO_GKI_ENABLED
-int get_wma_dec_info(struct stream_out *out, struct str_parms *parms) {
+static int get_wma_dec_info(struct stream_out *out, struct str_parms *parms) {
int ret = 0;
char value[32];
- ret = str_parms_get_str(parms, AUDIO_OFFLOAD_CODEC_AVG_BIT_RATE, value, sizeof(value));
+ struct snd_generic_dec_wma *wma_dec = NULL;
+
+ /* reserved[0] will contain the WMA decoder type */
+ if (out->format == AUDIO_FORMAT_WMA) {
+ out->compr_config.codec->options.generic.reserved[0] = AUDIO_COMP_FORMAT_WMA;
+ } else if (out->format == AUDIO_FORMAT_WMA_PRO) {
+ out->compr_config.codec->options.generic.reserved[0] = AUDIO_COMP_FORMAT_WMA_PRO;
+ } else {
+ ALOGE("%s: unknown WMA format 0x%x\n", __func__, out->format);
+ return -EINVAL;
+ }
+
+ /* reserved[1] onwards will contain the WMA decoder format info */
+ wma_dec = (struct snd_generic_dec_wma *)
+ &(out->compr_config.codec->options.generic.reserved[1]);
+ ret = str_parms_get_str(parms, AUDIO_OFFLOAD_CODEC_AVG_BIT_RATE,
+ value, sizeof(value));
if (ret >= 0) {
- out->compr_config.codec->options.wma_dec.avg_bit_rate = atoi(value);
+ wma_dec->avg_bit_rate = atoi(value);
out->is_compr_metadata_avail = true;
}
- ret = str_parms_get_str(parms, AUDIO_OFFLOAD_CODEC_WMA_BLOCK_ALIGN, value, sizeof(value));
+ ret = str_parms_get_str(parms, AUDIO_OFFLOAD_CODEC_WMA_BLOCK_ALIGN,
+ value, sizeof(value));
if (ret >= 0) {
- out->compr_config.codec->options.wma_dec.super_block_align = atoi(value);
+ wma_dec->super_block_align = atoi(value);
out->is_compr_metadata_avail = true;
}
- ret = str_parms_get_str(parms, AUDIO_OFFLOAD_CODEC_WMA_BIT_PER_SAMPLE, value, sizeof(value));
+ ret = str_parms_get_str(parms, AUDIO_OFFLOAD_CODEC_WMA_BIT_PER_SAMPLE,
+ value, sizeof(value));
if (ret >= 0) {
- out->compr_config.codec->options.wma_dec.bits_per_sample = atoi(value);
+ wma_dec->bits_per_sample = atoi(value);
out->is_compr_metadata_avail = true;
}
- ret = str_parms_get_str(parms, AUDIO_OFFLOAD_CODEC_WMA_CHANNEL_MASK, value, sizeof(value));
+ ret = str_parms_get_str(parms, AUDIO_OFFLOAD_CODEC_WMA_CHANNEL_MASK,
+ value, sizeof(value));
if (ret >= 0) {
- out->compr_config.codec->options.wma_dec.channelmask = atoi(value);
+ wma_dec->channelmask = atoi(value);
out->is_compr_metadata_avail = true;
}
- ret = str_parms_get_str(parms, AUDIO_OFFLOAD_CODEC_WMA_ENCODE_OPTION, value, sizeof(value));
+ ret = str_parms_get_str(parms, AUDIO_OFFLOAD_CODEC_WMA_ENCODE_OPTION,
+ value, sizeof(value));
if (ret >= 0) {
- out->compr_config.codec->options.wma_dec.encodeopt = atoi(value);
+ wma_dec->encodeopt = atoi(value);
out->is_compr_metadata_avail = true;
}
- ret = str_parms_get_str(parms, AUDIO_OFFLOAD_CODEC_WMA_ENCODE_OPTION1, value, sizeof(value));
+ ret = str_parms_get_str(parms, AUDIO_OFFLOAD_CODEC_WMA_ENCODE_OPTION1,
+ value, sizeof(value));
if (ret >= 0) {
- out->compr_config.codec->options.wma_dec.encodeopt1 = atoi(value);
+ wma_dec->encodeopt1 = atoi(value);
out->is_compr_metadata_avail = true;
}
- ret = str_parms_get_str(parms, AUDIO_OFFLOAD_CODEC_WMA_ENCODE_OPTION2, value, sizeof(value));
+ ret = str_parms_get_str(parms, AUDIO_OFFLOAD_CODEC_WMA_ENCODE_OPTION2,
+ value, sizeof(value));
if (ret >= 0) {
- out->compr_config.codec->options.wma_dec.encodeopt2 = atoi(value);
+ wma_dec->encodeopt2 = atoi(value);
out->is_compr_metadata_avail = true;
}
- ALOGV("WMA params: fmt %x, bit rate %x, balgn %x, sr %d, chmsk %x"
- " encop %x, op1 %x, op2 %x",
+
+ ALOGV("WMA params: fmt 0x%x, id 0x%x, WMA type 0x%x, bit rate 0x%x,"
+ " balgn 0x%x, sr %d, chmsk 0x%x"
+ " encop 0x%x, op1 0x%x, op2 0x%x \n",
out->compr_config.codec->format,
- out->compr_config.codec->options.wma_dec.avg_bit_rate,
- out->compr_config.codec->options.wma_dec.super_block_align,
- out->compr_config.codec->options.wma_dec.bits_per_sample,
- out->compr_config.codec->options.wma_dec.channelmask,
- out->compr_config.codec->options.wma_dec.encodeopt,
- out->compr_config.codec->options.wma_dec.encodeopt1,
- out->compr_config.codec->options.wma_dec.encodeopt2);
+ out->compr_config.codec->id,
+ out->compr_config.codec->options.generic.reserved[0],
+ wma_dec->avg_bit_rate,
+ wma_dec->super_block_align,
+ wma_dec->bits_per_sample,
+ wma_dec->channelmask,
+ wma_dec->encodeopt,
+ wma_dec->encodeopt1,
+ wma_dec->encodeopt2);
return ret;
}
@@ -3145,6 +3175,315 @@
}
#endif
+#ifdef AUDIO_GKI_ENABLED
+static int get_flac_dec_info(struct stream_out *out, struct str_parms *parms) {
+ int ret = 0;
+ char value[32];
+ struct snd_generic_dec_flac *flac_dec = NULL;
+
+ /* reserved[0] will contain the FLAC decoder type */
+ out->compr_config.codec->options.generic.reserved[0] =
+ AUDIO_COMP_FORMAT_FLAC;
+ /* reserved[1] onwards will contain the FLAC decoder format info */
+ flac_dec = (struct snd_generic_dec_flac *)
+ &(out->compr_config.codec->options.generic.reserved[1]);
+ ret = str_parms_get_str(parms, AUDIO_OFFLOAD_CODEC_FLAC_MIN_BLK_SIZE,
+ value, sizeof(value));
+ if (ret >= 0) {
+ flac_dec->min_blk_size = atoi(value);
+ out->is_compr_metadata_avail = true;
+ }
+ ret = str_parms_get_str(parms, AUDIO_OFFLOAD_CODEC_FLAC_MAX_BLK_SIZE,
+ value, sizeof(value));
+ if (ret >= 0) {
+ flac_dec->max_blk_size = atoi(value);
+ out->is_compr_metadata_avail = true;
+ }
+ ret = str_parms_get_str(parms, AUDIO_OFFLOAD_CODEC_FLAC_MIN_FRAME_SIZE,
+ value, sizeof(value));
+ if (ret >= 0) {
+ flac_dec->min_frame_size = atoi(value);
+ out->is_compr_metadata_avail = true;
+ }
+ ret = str_parms_get_str(parms, AUDIO_OFFLOAD_CODEC_FLAC_MAX_FRAME_SIZE,
+ value, sizeof(value));
+ if (ret >= 0) {
+ flac_dec->max_frame_size = atoi(value);
+ out->is_compr_metadata_avail = true;
+ }
+
+ ALOGV("FLAC metadata: fmt 0x%x, id 0x%x, FLAC type 0x%x min_blk_size %d,"
+ " max_blk_size %d min_frame_size %d max_frame_size %d \n",
+ out->compr_config.codec->format,
+ out->compr_config.codec->id,
+ out->compr_config.codec->options.generic.reserved[0],
+ flac_dec->min_blk_size,
+ flac_dec->max_blk_size,
+ flac_dec->min_frame_size,
+ flac_dec->max_frame_size);
+
+ return ret;
+}
+
+static int get_alac_dec_info(struct stream_out *out, struct str_parms *parms) {
+ int ret = 0;
+ char value[32];
+ struct snd_generic_dec_alac *alac_dec = NULL;
+
+ /* reserved[0] will contain the ALAC decoder type */
+ out->compr_config.codec->options.generic.reserved[0] =
+ AUDIO_COMP_FORMAT_ALAC;
+ /* reserved[1] onwards will contain the ALAC decoder format info */
+ alac_dec = (struct snd_generic_dec_alac *)
+ &(out->compr_config.codec->options.generic.reserved[1]);
+ ret = str_parms_get_str(parms, AUDIO_OFFLOAD_CODEC_ALAC_FRAME_LENGTH,
+ value, sizeof(value));
+ if (ret >= 0) {
+ alac_dec->frame_length = atoi(value);
+ out->is_compr_metadata_avail = true;
+ }
+ ret = str_parms_get_str(parms, AUDIO_OFFLOAD_CODEC_ALAC_COMPATIBLE_VERSION,
+ value, sizeof(value));
+ if (ret >= 0) {
+ alac_dec->compatible_version = atoi(value);
+ out->is_compr_metadata_avail = true;
+ }
+ ret = str_parms_get_str(parms, AUDIO_OFFLOAD_CODEC_ALAC_BIT_DEPTH,
+ value, sizeof(value));
+ if (ret >= 0) {
+ alac_dec->bit_depth = atoi(value);
+ out->is_compr_metadata_avail = true;
+ }
+ ret = str_parms_get_str(parms, AUDIO_OFFLOAD_CODEC_ALAC_PB,
+ value, sizeof(value));
+ if (ret >= 0) {
+ alac_dec->pb = atoi(value);
+ out->is_compr_metadata_avail = true;
+ }
+ ret = str_parms_get_str(parms, AUDIO_OFFLOAD_CODEC_ALAC_MB,
+ value, sizeof(value));
+ if (ret >= 0) {
+ alac_dec->mb = atoi(value);
+ out->is_compr_metadata_avail = true;
+ }
+ ret = str_parms_get_str(parms, AUDIO_OFFLOAD_CODEC_ALAC_KB,
+ value, sizeof(value));
+ if (ret >= 0) {
+ alac_dec->kb = atoi(value);
+ out->is_compr_metadata_avail = true;
+ }
+ ret = str_parms_get_str(parms, AUDIO_OFFLOAD_CODEC_ALAC_NUM_CHANNELS,
+ value, sizeof(value));
+ if (ret >= 0) {
+ alac_dec->num_channels = atoi(value);
+ out->is_compr_metadata_avail = true;
+ }
+ ret = str_parms_get_str(parms, AUDIO_OFFLOAD_CODEC_ALAC_MAX_RUN,
+ value, sizeof(value));
+ if (ret >= 0) {
+ alac_dec->max_run = atoi(value);
+ out->is_compr_metadata_avail = true;
+ }
+ ret = str_parms_get_str(parms, AUDIO_OFFLOAD_CODEC_ALAC_MAX_FRAME_BYTES,
+ value, sizeof(value));
+ if (ret >= 0) {
+ alac_dec->max_frame_bytes = atoi(value);
+ out->is_compr_metadata_avail = true;
+ }
+ ret = str_parms_get_str(parms, AUDIO_OFFLOAD_CODEC_ALAC_AVG_BIT_RATE,
+ value, sizeof(value));
+ if (ret >= 0) {
+ alac_dec->avg_bit_rate = atoi(value);
+ out->is_compr_metadata_avail = true;
+ }
+ ret = str_parms_get_str(parms, AUDIO_OFFLOAD_CODEC_ALAC_SAMPLING_RATE,
+ value, sizeof(value));
+ if (ret >= 0) {
+ alac_dec->sample_rate = atoi(value);
+ out->is_compr_metadata_avail = true;
+ }
+ ret = str_parms_get_str(parms, AUDIO_OFFLOAD_CODEC_ALAC_CHANNEL_LAYOUT_TAG,
+ value, sizeof(value));
+ if (ret >= 0) {
+ alac_dec->channel_layout_tag = atoi(value);
+ out->is_compr_metadata_avail = true;
+ }
+
+ ALOGV("ALAC CSD values: fmt 0x%x, id 0x%x, ALAC type 0x%x, frameLength %d"
+ "bitDepth %d numChannels %d"
+ " maxFrameBytes %d, avgBitRate %d, sampleRate %d \n",
+ out->compr_config.codec->format,
+ out->compr_config.codec->id,
+ out->compr_config.codec->options.generic.reserved[0],
+ alac_dec->frame_length,
+ alac_dec->bit_depth,
+ alac_dec->num_channels,
+ alac_dec->max_frame_bytes,
+ alac_dec->avg_bit_rate,
+ alac_dec->sample_rate);
+
+ return ret;
+}
+
+static int get_ape_dec_info(struct stream_out *out, struct str_parms *parms) {
+ int ret = 0;
+ char value[32];
+ struct snd_generic_dec_ape *ape_dec = NULL;
+
+ /* reserved[0] will contain the APE decoder type */
+ out->compr_config.codec->options.generic.reserved[0] =
+ AUDIO_COMP_FORMAT_APE;
+
+ /* reserved[1] onwards will contain the APE decoder format info */
+ ape_dec = (struct snd_generic_dec_ape *)
+ &(out->compr_config.codec->options.generic.reserved[1]);
+
+ ret = str_parms_get_str(parms, AUDIO_OFFLOAD_CODEC_APE_COMPATIBLE_VERSION,
+ value, sizeof(value));
+ if (ret >= 0) {
+ ape_dec->compatible_version = atoi(value);
+ out->is_compr_metadata_avail = true;
+ }
+ ret = str_parms_get_str(parms, AUDIO_OFFLOAD_CODEC_APE_COMPRESSION_LEVEL,
+ value, sizeof(value));
+ if (ret >= 0) {
+ ape_dec->compression_level = atoi(value);
+ out->is_compr_metadata_avail = true;
+ }
+ ret = str_parms_get_str(parms, AUDIO_OFFLOAD_CODEC_APE_FORMAT_FLAGS,
+ value, sizeof(value));
+ if (ret >= 0) {
+ ape_dec->format_flags = atoi(value);
+ out->is_compr_metadata_avail = true;
+ }
+ ret = str_parms_get_str(parms, AUDIO_OFFLOAD_CODEC_APE_BLOCKS_PER_FRAME,
+ value, sizeof(value));
+ if (ret >= 0) {
+ ape_dec->blocks_per_frame = atoi(value);
+ out->is_compr_metadata_avail = true;
+ }
+ ret = str_parms_get_str(parms, AUDIO_OFFLOAD_CODEC_APE_FINAL_FRAME_BLOCKS,
+ value, sizeof(value));
+ if (ret >= 0) {
+ ape_dec->final_frame_blocks = atoi(value);
+ out->is_compr_metadata_avail = true;
+ }
+ ret = str_parms_get_str(parms, AUDIO_OFFLOAD_CODEC_APE_TOTAL_FRAMES, value,
+ sizeof(value));
+ if (ret >= 0) {
+ ape_dec->total_frames = atoi(value);
+ out->is_compr_metadata_avail = true;
+ }
+ ret = str_parms_get_str(parms, AUDIO_OFFLOAD_CODEC_APE_BITS_PER_SAMPLE,
+ value, sizeof(value));
+ if (ret >= 0) {
+ ape_dec->bits_per_sample = atoi(value);
+ out->is_compr_metadata_avail = true;
+ }
+ ret = str_parms_get_str(parms, AUDIO_OFFLOAD_CODEC_APE_NUM_CHANNELS,
+ value, sizeof(value));
+ if (ret >= 0) {
+ ape_dec->num_channels = atoi(value);
+ out->is_compr_metadata_avail = true;
+ }
+ ret = str_parms_get_str(parms, AUDIO_OFFLOAD_CODEC_APE_SAMPLE_RATE,
+ value, sizeof(value));
+ if (ret >= 0) {
+ ape_dec->sample_rate = atoi(value);
+ out->is_compr_metadata_avail = true;
+ }
+ ret = str_parms_get_str(parms, AUDIO_OFFLOAD_CODEC_APE_SEEK_TABLE_PRESENT,
+ value, sizeof(value));
+ if (ret >= 0) {
+ ape_dec->seek_table_present = atoi(value);
+ out->is_compr_metadata_avail = true;
+ }
+
+ ALOGV("APE CSD values: fmt 0x%x, id 0x%x, APE type 0x%x"
+ " compatibleVersion %d compressionLevel %d"
+ " formatFlags %d blocksPerFrame %d finalFrameBlocks %d"
+ " totalFrames %d bitsPerSample %d numChannels %d"
+ " sampleRate %d seekTablePresent %d",
+ out->compr_config.codec->format,
+ out->compr_config.codec->id,
+ out->compr_config.codec->options.generic.reserved[0],
+ ape_dec->compatible_version,
+ ape_dec->compression_level,
+ ape_dec->format_flags,
+ ape_dec->blocks_per_frame,
+ ape_dec->final_frame_blocks,
+ ape_dec->total_frames,
+ ape_dec->bits_per_sample,
+ ape_dec->num_channels,
+ ape_dec->sample_rate,
+ ape_dec->seek_table_present);
+
+ return ret;
+}
+
+static int get_vorbis_dec_info(struct stream_out *out,
+ struct str_parms *parms) {
+ int ret = 0;
+ char value[32];
+ struct snd_generic_dec_vorbis *vorbis_dec = NULL;
+
+ /* reserved[0] will contain the Vorbis decoder type */
+ out->compr_config.codec->options.generic.reserved[0] =
+ AUDIO_COMP_FORMAT_VORBIS;
+ /* reserved[1] onwards will contain the Vorbis decoder format info */
+ vorbis_dec = (struct snd_generic_dec_vorbis *)
+ &(out->compr_config.codec->options.generic.reserved[1]);
+ ret = str_parms_get_str(parms, AUDIO_OFFLOAD_CODEC_VORBIS_BITSTREAM_FMT,
+ value, sizeof(value));
+ if (ret >= 0) {
+ // transcoded bitstream mode
+ vorbis_dec->bit_stream_fmt = (atoi(value) > 0) ? 1 : 0;
+ out->is_compr_metadata_avail = true;
+ }
+
+ ALOGV("Vorbis values: fmt 0x%x, id 0x%x, Vorbis type 0x%x"
+ " bitStreamFmt %d\n",
+ out->compr_config.codec->format,
+ out->compr_config.codec->id,
+ out->compr_config.codec->options.generic.reserved[0],
+ vorbis_dec->bit_stream_fmt);
+
+ return ret;
+}
+
+int audio_extn_parse_compress_metadata(struct stream_out *out,
+ struct str_parms *parms)
+{
+ int ret = 0;
+ char value[32];
+
+ if (!if_compress_meta_data_feature_enabled())
+ return ret;
+
+ if (out->format == AUDIO_FORMAT_FLAC) {
+ ret = get_flac_dec_info(out, parms);
+ } else if (out->format == AUDIO_FORMAT_ALAC) {
+ ret = get_alac_dec_info(out, parms);
+ } else if (out->format == AUDIO_FORMAT_APE) {
+ ret = get_ape_dec_info(out, parms);
+ } else if (out->format == AUDIO_FORMAT_VORBIS) {
+ ret = get_vorbis_dec_info(out, parms);
+ } else if (out->format == AUDIO_FORMAT_WMA ||
+ out->format == AUDIO_FORMAT_WMA_PRO) {
+ ret = str_parms_get_str(parms, AUDIO_OFFLOAD_CODEC_WMA_FORMAT_TAG,
+ value, sizeof(value));
+ if (ret >= 0) {
+ out->compr_config.codec->format = atoi(value);
+ out->is_compr_metadata_avail = true;
+ }
+
+ ret = get_wma_dec_info(out, parms);
+ }
+
+ return ret;
+}
+
+#else
int audio_extn_parse_compress_metadata(struct stream_out *out,
struct str_parms *parms)
{
@@ -3337,15 +3676,12 @@
out->compr_config.codec->format = atoi(value);
out->is_compr_metadata_avail = true;
}
-#ifdef AUDIO_GKI_ENABLED
- ret = get_wma_dec_info(out, parms);
-#else
- ret = get_wma_info(out, parms);
-#endif
+ ret = get_wma_info(out, parms);
}
return ret;
}
+#endif
#ifdef AUXPCM_BT_ENABLED
int32_t audio_extn_read_xml(struct audio_device *adev, uint32_t mixer_card,
diff --git a/hal/audio_extn/audio_extn.h b/hal/audio_extn/audio_extn.h
index ef6fe47..0e4b9b0 100644
--- a/hal/audio_extn/audio_extn.h
+++ b/hal/audio_extn/audio_extn.h
@@ -115,6 +115,9 @@
#define AUDIO_PARAMETER_KEY_HIFI_AUDIO_FILTER "hifi_filter"
+#define VENDOR_CONFIG_PATH_MAX_LENGTH 128
+#define VENDOR_CONFIG_FILE_MAX_LENGTH 128
+
struct snd_card_split {
char device[HW_INFO_ARRAY_MAX_SIZE];
char snd_card[HW_INFO_ARRAY_MAX_SIZE];
@@ -1402,4 +1405,6 @@
snd_device_t audio_extn_get_loopback_snd_device(struct audio_device *adev,
struct audio_usecase *usecase,
int channel_count);
+
+void audio_get_vendor_config_path(char* config_file_path, int path_size);
#endif /* AUDIO_EXTN_H */
diff --git a/hal/audio_extn/ffv.c b/hal/audio_extn/ffv.c
index fe6ffa6..4f51cb1 100644
--- a/hal/audio_extn/ffv.c
+++ b/hal/audio_extn/ffv.c
@@ -61,21 +61,9 @@
#define AUDIO_PARAMETER_FFV_EC_REF_DEVICE "ffv_ec_ref_dev"
#define AUDIO_PARAMETER_FFV_CHANNEL_INDEX "ffv_channel_index"
-#if LINUX_ENABLED
-#define FFV_CONFIG_FILE_PATH "/etc/BF_1out.cfg"
-#ifdef __LP64__
-#define FFV_LIB "/usr/lib64/libffv.so"
-#else
-#define FFV_LIB "/usr/lib/libffv.so"
-#endif
-#else
-#define FFV_CONFIG_FILE_PATH "/vendor/etc/BF_1out.cfg"
-#ifdef __LP64__
-#define FFV_LIB "/vendor/lib64/libffv.so"
-#else
-#define FFV_LIB "/vendor/lib/libffv.so"
-#endif
-#endif
+
+#define FFV_CONFIG_FILE_NAME "BF_1out.cfg"
+#define FFV_LIB_NAME "libffv.so"
#define FFV_SAMPLING_RATE_16000 16000
#define FFV_EC_REF_LOOPBACK_DEVICE_MONO "ec-ref-loopback-mono"
@@ -200,18 +188,46 @@
.format = PCM_FORMAT_S16_LE,
};
+void audio_get_lib_path(char* lib_path, int path_size)
+{
+#ifdef LINUX_ENABLED
+#ifdef __LP64__
+ /* libs are stored in /usr/lib64 */
+ snprintf(lib_path, path_size, "%s", "/usr/lib64");
+#else
+ /* libs are stored in /usr/lib */
+ snprintf(lib_path, path_size, "%s", "/usr/lib");
+#endif
+#else
+#ifdef __LP64__
+ /* libs are stored in /vendor/lib64 */
+ snprintf(lib_path, path_size, "%s", "/vendor/lib64");
+#else
+ /* libs are stored in /vendor/lib */
+ snprintf(lib_path, path_size, "%s", "/vendor/lib");
+#endif
+#endif
+}
+
static int32_t ffv_init_lib()
{
int status = 0;
+ char lib_path[VENDOR_CONFIG_PATH_MAX_LENGTH];
+ char lib_file[VENDOR_CONFIG_FILE_MAX_LENGTH];
+ /* Get path for lib in vendor */
+ audio_get_lib_path(lib_path, sizeof(lib_path));
+
+ /* Get path for ffv_lib_file */
+ snprintf(lib_file, sizeof(lib_file), "%s/%s", lib_path, FFV_LIB_NAME);
if (ffvmod.ffv_lib_handle) {
ALOGE("%s: FFV library is already initialized", __func__);
return 0;
}
- ffvmod.ffv_lib_handle = dlopen(FFV_LIB, RTLD_NOW);
+ ffvmod.ffv_lib_handle = dlopen(lib_file, RTLD_NOW);
if (!ffvmod.ffv_lib_handle) {
- ALOGE("%s: Unable to open %s, error %s", __func__, FFV_LIB,
+ ALOGE("%s: Unable to open %s, error %s", __func__, lib_file,
dlerror());
status = -ENOENT;
goto exit;
@@ -438,7 +454,9 @@
int num_tx_in_ch, num_out_ch, num_ec_ref_ch;
int frame_len;
int sample_rate;
- const char *config_file_path = FFV_CONFIG_FILE_PATH;
+ const char *config_file_path;
+ char vendor_config_path[VENDOR_CONFIG_PATH_MAX_LENGTH];
+ char platform_info_xml_path_file[VENDOR_CONFIG_FILE_MAX_LENGTH];
int total_mem_size;
FfvStatusType status_type;
const char *sm_buffer = "DISABLE_KEYWORD_DETECTION";
@@ -447,6 +465,11 @@
int param_size = 0;
int param_id;
+ audio_get_vendor_config_path(vendor_config_path, sizeof(vendor_config_path));
+ /* Get path for ffv_config_file_name in vendor */
+ snprintf(platform_info_xml_path_file, sizeof(platform_info_xml_path_file),
+ "%s/%s", vendor_config_path, FFV_CONFIG_FILE_NAME);
+ config_file_path = platform_info_xml_path_file;
if (!audio_extn_ffv_get_enabled()) {
ALOGE("Rejecting FFV -- init is called without enabling FFV");
goto fail;
diff --git a/hal/audio_extn/utils.c b/hal/audio_extn/utils.c
index a888a07..5f10ca7 100644
--- a/hal/audio_extn/utils.c
+++ b/hal/audio_extn/utils.c
@@ -54,13 +54,8 @@
#include "audio_parsers.h"
#endif
-#ifdef LINUX_ENABLED
-#define AUDIO_OUTPUT_POLICY_VENDOR_CONFIG_FILE "/etc/audio_output_policy.conf"
-#define AUDIO_IO_POLICY_VENDOR_CONFIG_FILE "/etc/audio_io_policy.conf"
-#else
-#define AUDIO_OUTPUT_POLICY_VENDOR_CONFIG_FILE "/vendor/etc/audio_output_policy.conf"
-#define AUDIO_IO_POLICY_VENDOR_CONFIG_FILE "/vendor/etc/audio_io_policy.conf"
-#endif
+#define AUDIO_IO_POLICY_VENDOR_CONFIG_FILE_NAME "audio_io_policy.conf"
+#define AUDIO_OUTPUT_POLICY_VENDOR_CONFIG_FILE_NAME "audio_output_policy.conf"
#define OUTPUTS_TAG "outputs"
#define INPUTS_TAG "inputs"
@@ -517,6 +512,25 @@
}
}
+/* Function to retrieve audio vendor configs path */
+void audio_get_vendor_config_path (char* config_file_path, int path_size)
+{
+ char vendor_sku[PROPERTY_VALUE_MAX] = {'\0'};
+ if (property_get("ro.boot.product.vendor.sku", vendor_sku, "") <= 0) {
+#ifdef LINUX_ENABLED
+ /* Audio configs are stored in /etc */
+ snprintf(config_file_path, path_size, "%s", "/etc");
+#else
+ /* Audio configs are stored in /vendor/etc */
+ snprintf(config_file_path, path_size, "%s", "/vendor/etc");
+#endif
+ } else {
+ /* Audio configs are stored in /vendor/etc/audio/sku_${vendor_sku} */
+ snprintf(config_file_path, path_size,
+ "%s%s", "/vendor/etc/audio/sku_", vendor_sku);
+ }
+}
+
void audio_extn_utils_update_streams_cfg_lists(void *platform,
struct mixer *mixer,
struct listnode *streams_output_cfg_list,
@@ -524,6 +538,9 @@
{
cnode *root;
char *data = NULL;
+ char vendor_config_path[VENDOR_CONFIG_PATH_MAX_LENGTH];
+ char audio_io_policy_file[VENDOR_CONFIG_FILE_MAX_LENGTH];
+ char audio_output_policy_file[VENDOR_CONFIG_FILE_MAX_LENGTH];
ALOGV("%s", __func__);
list_init(streams_output_cfg_list);
@@ -535,11 +552,29 @@
return;
}
- data = (char *)load_file(AUDIO_IO_POLICY_VENDOR_CONFIG_FILE, NULL);
+ /* Get path for audio configuration files in vendor */
+ audio_get_vendor_config_path(vendor_config_path,
+ sizeof(vendor_config_path));
+
+ /* Get path for audio_io_policy_file in vendor */
+ snprintf(audio_io_policy_file, sizeof(audio_io_policy_file),
+ "%s/%s", vendor_config_path, AUDIO_IO_POLICY_VENDOR_CONFIG_FILE_NAME);
+
+ /* Load audio_io_policy_file from vendor */
+ data = (char *)load_file(audio_io_policy_file, NULL);
+
if (data == NULL) {
ALOGD("%s: failed to open io config file(%s), trying older config file",
- __func__, AUDIO_IO_POLICY_VENDOR_CONFIG_FILE);
- data = (char *)load_file(AUDIO_OUTPUT_POLICY_VENDOR_CONFIG_FILE, NULL);
+ __func__, audio_io_policy_file);
+
+ /* Get path for audio_output_policy_file in vendor */
+ snprintf(audio_output_policy_file, sizeof(audio_output_policy_file),
+ "%s/%s", vendor_config_path,
+ AUDIO_OUTPUT_POLICY_VENDOR_CONFIG_FILE_NAME);
+
+ /* Load audio_output_policy_file from vendor */
+ data = (char *)load_file(audio_output_policy_file, NULL);
+
if (data == NULL) {
send_app_type_cfg(platform, mixer,
streams_output_cfg_list,
@@ -1682,6 +1717,64 @@
return bytes;
}
+#ifdef AUDIO_GKI_ENABLED
+int get_snd_codec_id(audio_format_t format)
+{
+ int id = 0;
+
+ switch (format & AUDIO_FORMAT_MAIN_MASK) {
+ case AUDIO_FORMAT_MP3:
+ id = SND_AUDIOCODEC_MP3;
+ break;
+ case AUDIO_FORMAT_AAC:
+ id = SND_AUDIOCODEC_AAC;
+ break;
+ case AUDIO_FORMAT_AAC_ADTS:
+ id = SND_AUDIOCODEC_AAC;
+ break;
+ case AUDIO_FORMAT_AAC_LATM:
+ id = SND_AUDIOCODEC_AAC;
+ break;
+ case AUDIO_FORMAT_PCM:
+ id = SND_AUDIOCODEC_PCM;
+ break;
+ case AUDIO_FORMAT_FLAC:
+ case AUDIO_FORMAT_ALAC:
+ case AUDIO_FORMAT_APE:
+ case AUDIO_FORMAT_VORBIS:
+ case AUDIO_FORMAT_WMA:
+ case AUDIO_FORMAT_WMA_PRO:
+ case AUDIO_FORMAT_DSD:
+ case AUDIO_FORMAT_APTX:
+ id = SND_AUDIOCODEC_BESPOKE;
+ break;
+ case AUDIO_FORMAT_MP2:
+ id = SND_AUDIOCODEC_MP2;
+ break;
+ case AUDIO_FORMAT_AC3:
+ id = SND_AUDIOCODEC_AC3;
+ break;
+ case AUDIO_FORMAT_E_AC3:
+ case AUDIO_FORMAT_E_AC3_JOC:
+ id = SND_AUDIOCODEC_EAC3;
+ break;
+ case AUDIO_FORMAT_DTS:
+ case AUDIO_FORMAT_DTS_HD:
+ id = SND_AUDIOCODEC_DTS;
+ break;
+ case AUDIO_FORMAT_DOLBY_TRUEHD:
+ id = SND_AUDIOCODEC_TRUEHD;
+ break;
+ case AUDIO_FORMAT_IEC61937:
+ id = SND_AUDIOCODEC_IEC61937;
+ break;
+ default:
+ ALOGE("%s: Unsupported audio format :%x", __func__, format);
+ }
+
+ return id;
+}
+#else
int get_snd_codec_id(audio_format_t format)
{
int id = 0;
@@ -1752,6 +1845,7 @@
return id;
}
+#endif
void audio_extn_utils_send_audio_calibration(struct audio_device *adev,
struct audio_usecase *usecase)
diff --git a/hal/audio_hw.c b/hal/audio_hw.c
index 5f53431..0594b7b 100644
--- a/hal/audio_hw.c
+++ b/hal/audio_hw.c
@@ -78,6 +78,11 @@
#include "ip_hdlr_intf.h"
#include "sound/compress_params.h"
+
+#ifdef AUDIO_GKI_ENABLED
+#include "sound/audio_compressed_formats.h"
+#endif
+
#include "sound/asound.h"
#ifdef DYNAMIC_LOG_ENABLED
@@ -1419,10 +1424,13 @@
__func__, device_name);
}
- if ((SND_DEVICE_OUT_BT_A2DP == snd_device) &&
- (audio_extn_a2dp_start_playback() < 0)) {
- ALOGE(" fail to configure A2dp Source control path ");
- goto err;
+ if (SND_DEVICE_OUT_BT_A2DP == snd_device) {
+ if (audio_extn_a2dp_start_playback() < 0) {
+ ALOGE(" fail to configure A2dp Source control path ");
+ goto err;
+ } else {
+ adev->a2dp_started = true;
+ }
}
if ((SND_DEVICE_IN_BT_A2DP == snd_device) &&
@@ -1529,9 +1537,10 @@
audio_route_reset_and_update_path(adev->audio_route, device_name);
}
- if (snd_device == SND_DEVICE_OUT_BT_A2DP)
+ if (snd_device == SND_DEVICE_OUT_BT_A2DP) {
audio_extn_a2dp_stop_playback();
- else if (snd_device == SND_DEVICE_IN_BT_A2DP)
+ adev->a2dp_started = false;
+ } else if (snd_device == SND_DEVICE_IN_BT_A2DP)
audio_extn_a2dp_stop_capture();
else if ((snd_device == SND_DEVICE_OUT_HDMI) ||
(snd_device == SND_DEVICE_OUT_DISPLAY_PORT))
@@ -3922,7 +3931,26 @@
assign_devices(&out->device_list, &dev);
}
} else {
- select_devices(adev, out->usecase);
+ select_devices(adev, out->usecase);
+ if (is_a2dp_out_device_type(&out->device_list) &&
+ !adev->a2dp_started) {
+ if (is_speaker_active || is_speaker_safe_active) {
+ struct listnode dev;
+ list_init(&dev);
+ assign_devices(&dev, &out->device_list);
+ if (compare_device_type(&dev, AUDIO_DEVICE_OUT_SPEAKER_SAFE))
+ reassign_device_list(&out->device_list,
+ AUDIO_DEVICE_OUT_SPEAKER_SAFE, "");
+ else
+ reassign_device_list(&out->device_list,
+ AUDIO_DEVICE_OUT_SPEAKER, "");
+ select_devices(adev, out->usecase);
+ assign_devices(&out->device_list, &dev);
+ } else {
+ ret = -EINVAL;
+ goto error_open;
+ }
+ }
}
if (out->usecase == USECASE_INCALL_MUSIC_UPLINK ||
@@ -6026,8 +6054,10 @@
if (out->last_fifo_valid) {
// compute drain to see if there is an underrun.
const int64_t current_ns = systemTime(SYSTEM_TIME_MONOTONIC); // sys call
- const int64_t frames_by_time =
- (current_ns - out->last_fifo_time_ns) * out->config.rate / NANOS_PER_SECOND;
+ int64_t time_diff_ns = current_ns - out->last_fifo_time_ns;
+ int64_t frames_by_time =
+ ((time_diff_ns > 0) && (time_diff_ns < (INT64_MAX / out->config.rate))) ?
+ (time_diff_ns * out->config.rate / NANOS_PER_SECOND) : 0;
const int64_t underrun = frames_by_time - out->last_fifo_frames_remaining;
if (underrun > 0) {
@@ -7670,6 +7700,9 @@
bool force_haptic_path =
property_get_bool("vendor.audio.test_haptic", false);
bool is_voip_rx = flags & AUDIO_OUTPUT_FLAG_VOIP_RX;
+#ifdef AUDIO_GKI_ENABLED
+ __s32 *generic_dec;
+#endif
if (is_usb_dev && (!audio_extn_usb_connected(NULL))) {
is_usb_dev = false;
@@ -8095,8 +8128,16 @@
if (out->flags & AUDIO_OUTPUT_FLAG_TIMESTAMP) {
out->compr_config.fragment_size += sizeof(struct snd_codec_metadata);
}
- if (config->offload_info.format == AUDIO_FORMAT_FLAC)
+ if (config->offload_info.format == AUDIO_FORMAT_FLAC) {
+#ifdef AUDIO_GKI_ENABLED
+ generic_dec =
+ &(out->compr_config.codec->options.generic.reserved[1]);
+ ((struct snd_generic_dec_flac *)generic_dec)->sample_size =
+ AUDIO_OUTPUT_BIT_WIDTH;
+#else
out->compr_config.codec->options.flac_dec.sample_size = AUDIO_OUTPUT_BIT_WIDTH;
+#endif
+ }
if (config->offload_info.format == AUDIO_FORMAT_APTX) {
audio_extn_send_aptx_dec_bt_addr_to_dsp(out);
@@ -10484,6 +10525,7 @@
adev->enable_hfp = false;
adev->use_old_pspd_mix_ctrl = false;
adev->adm_routing_changed = false;
+ adev->a2dp_started = false;
audio_extn_perf_lock_init();
diff --git a/hal/audio_hw.h b/hal/audio_hw.h
index 055a96b..6931d8d 100644
--- a/hal/audio_hw.h
+++ b/hal/audio_hw.h
@@ -739,6 +739,7 @@
struct listnode audio_patch_record_list;
Hashmap *patch_map;
Hashmap *io_streams_map;
+ bool a2dp_started;
bool ha_proxy_enable;
};
diff --git a/hal/msm8974/platform.c b/hal/msm8974/platform.c
index 87c70e9..68fcbd4 100644
--- a/hal/msm8974/platform.c
+++ b/hal/msm8974/platform.c
@@ -60,33 +60,17 @@
#define MIXER_XML_BASE_STRING "mixer_paths"
#define MIXER_XML_DEFAULT_PATH "mixer_paths.xml"
-#ifdef LINUX_ENABLED
-#define PLATFORM_INFO_XML_PATH_INTCODEC "/etc/audio_platform_info_intcodec.xml"
-#define PLATFORM_INFO_XML_PATH_SKUSH "/etc/audio_platform_info_skush.xml"
-#define PLATFORM_INFO_XML_PATH_SKUW "/etc/audio_platform_info_skuw.xml"
-#define PLATFORM_INFO_XML_PATH_QRD "/etc/audio_platform_info_qrd.xml"
-#define PLATFORM_INFO_XML_PATH_LAGOON_QRD "/etc/audio_platform_info_lagoon_qrd.xml"
-#define PLATFORM_INFO_XML_PATH "/etc/audio_platform_info.xml"
-#define MIXER_XML_PATH_AUXPCM "/etc/mixer_paths_auxpcm.xml"
-#define MIXER_XML_PATH_I2S "/etc/mixer_paths_i2s.xml"
-#define PLATFORM_INFO_XML_PATH_I2S "/etc/audio_platform_info_extcodec.xml"
-#define PLATFORM_INFO_XML_PATH_WSA "/etc/audio_platform_info_wsa.xml"
-#define PLATFORM_INFO_XML_PATH_TDM "/etc/audio_platform_info_tdm.xml"
-#define PLATFORM_INFO_XML_PATH_SCUBA_IDP "/etc/audio_platform_info_scubaidp.xml"
-#else
-#define PLATFORM_INFO_XML_PATH_INTCODEC "/vendor/etc/audio_platform_info_intcodec.xml"
-#define PLATFORM_INFO_XML_PATH_SKUSH "/vendor/etc/audio_platform_info_skush.xml"
-#define PLATFORM_INFO_XML_PATH_SKUW "/vendor/etc/audio_platform_info_skuw.xml"
-#define PLATFORM_INFO_XML_PATH_QRD "/vendor/etc/audio_platform_info_qrd.xml"
-#define PLATFORM_INFO_XML_PATH_LAGOON_QRD "/vendor/etc/audio_platform_info_lagoon_qrd.xml"
-#define PLATFORM_INFO_XML_PATH "/vendor/etc/audio_platform_info.xml"
-#define MIXER_XML_PATH_AUXPCM "/vendor/etc/mixer_paths_auxpcm.xml"
-#define MIXER_XML_PATH_I2S "/vendor/etc/mixer_paths_i2s.xml"
-#define PLATFORM_INFO_XML_PATH_I2S "/vendor/etc/audio_platform_info_i2s.xml"
-#define PLATFORM_INFO_XML_PATH_WSA "/vendor/etc/audio_platform_info_wsa.xml"
-#define PLATFORM_INFO_XML_PATH_TDM "/vendor/etc/audio_platform_info_tdm.xml"
-#define PLATFORM_INFO_XML_PATH_SCUBA_IDP "/vendor/etc/audio_platform_info_scubaidp.xml"
-#endif
+#define PLATFORM_INFO_XML_PATH_INTCODEC_NAME "audio_platform_info_intcodec.xml"
+#define PLATFORM_INFO_XML_PATH_SKUSH_NAME "audio_platform_info_skush.xml"
+#define PLATFORM_INFO_XML_PATH_SKUW_NAME "audio_platform_info_skuw.xml"
+#define PLATFORM_INFO_XML_PATH_QRD_NAME "audio_platform_info_qrd.xml"
+#define PLATFORM_INFO_XML_PATH_LAGOON_QRD_NAME "audio_platform_info_lagoon_qrd.xml"
+#define PLATFORM_INFO_XML_PATH_NAME "audio_platform_info.xml"
+#define MIXER_XML_PATH_AUXPCM_NAME "mixer_paths_auxpcm.xml"
+#define MIXER_XML_PATH_I2S_NAME "mixer_paths_i2s.xml"
+#define PLATFORM_INFO_XML_PATH_I2S_NAME "audio_platform_info_extcodec.xml"
+#define PLATFORM_INFO_XML_PATH_WSA_NAME "audio_platform_info_wsa.xml"
+#define PLATFORM_INFO_XML_PATH_TDM_NAME "audio_platform_info_tdm.xml"
#include <linux/msm_audio.h>
#if defined (PLATFORM_MSM8998) || (PLATFORM_SDM845) || (PLATFORM_SDM710) || \
@@ -251,6 +235,8 @@
};
#define PLATFORM_CONFIG_KEY_OPERATOR_INFO "operator_info"
+char vendor_config_path[VENDOR_CONFIG_PATH_MAX_LENGTH];
+char xml_file_path[VENDOR_CONFIG_FILE_MAX_LENGTH];
struct operator_info {
struct listnode list;
@@ -1685,6 +1671,14 @@
}
}
+const char* get_xml_file_path(const char* file_name)
+{
+ audio_get_vendor_config_path(vendor_config_path, sizeof(vendor_config_path));
+ snprintf(xml_file_path, sizeof(xml_file_path),
+ "%s/%s", vendor_config_path, file_name);
+ return xml_file_path;
+}
+
static char *get_current_operator()
{
struct listnode *node;
@@ -3353,54 +3347,66 @@
if (ret || !my_data->is_internal_codec)
my_data->hifi_audio = true;
set_platform_defaults(my_data);
-
/* Initialize ACDB ID's */
- if (my_data->is_i2s_ext_modem && !is_auto_snd_card(snd_card_name))
- platform_info_init(PLATFORM_INFO_XML_PATH_I2S, my_data, PLATFORM);
- else if (!strncmp(snd_card_name, "sdm660-snd-card-skush",
- sizeof("sdm660-snd-card-skush")))
- platform_info_init(PLATFORM_INFO_XML_PATH_SKUSH, my_data, PLATFORM);
- else if (!strncmp(snd_card_name, "sdm670-skuw-snd-card",
- sizeof("sdm670-skuw-snd-card")))
- platform_info_init(PLATFORM_INFO_XML_PATH_SKUW, my_data, PLATFORM);
- else if (!strncmp(snd_card_name, "sm6150-qrd-snd-card",
- sizeof("sm6150-qrd-snd-card")))
- platform_info_init(PLATFORM_INFO_XML_PATH_QRD, my_data, PLATFORM);
- else if (!strncmp(snd_card_name, "sm6150-wcd9375qrd-snd-card",
- sizeof("sm6150-wcd9375qrd-snd-card")))
- platform_info_init(PLATFORM_INFO_XML_PATH_QRD, my_data, PLATFORM);
- else if (!strncmp(snd_card_name, "lahaina-qrd-snd-card",
- sizeof("lahaina-qrd-snd-card")))
- platform_info_init(PLATFORM_INFO_XML_PATH_QRD, my_data, PLATFORM);
- else if (!strncmp(snd_card_name, "kona-qrd-snd-card",
- sizeof("kona-qrd-snd-card")))
- platform_info_init(PLATFORM_INFO_XML_PATH_QRD, my_data, PLATFORM);
- else if (!strncmp(snd_card_name, "sm8150-tavil-qrd-snd-card",
- sizeof("sm8150-tavil-qrd-snd-card")))
- platform_info_init(PLATFORM_INFO_XML_PATH_QRD, my_data, PLATFORM);
- else if (!strncmp(snd_card_name, "lito-qrd-snd-card",
- sizeof("lito-qrd-snd-card")))
- platform_info_init(PLATFORM_INFO_XML_PATH_QRD, my_data, PLATFORM);
- else if (!strncmp(snd_card_name, "lito-lagoonqrd-snd-card",
- sizeof("lito-lagoonqrd-snd-card")))
- platform_info_init(PLATFORM_INFO_XML_PATH_LAGOON_QRD, my_data, PLATFORM);
- else if (!strncmp(snd_card_name, "atoll-qrd-snd-card",
- sizeof("atoll-qrd-snd-card")))
- platform_info_init(PLATFORM_INFO_XML_PATH_QRD, my_data, PLATFORM);
- else if (!strncmp(snd_card_name, "bengal-qrd-snd-card",
- sizeof("bengal-qrd-snd-card")))
- platform_info_init(PLATFORM_INFO_XML_PATH_QRD, my_data, PLATFORM);
- else if (!strncmp(snd_card_name, "bengal-scubaidp-snd-card",
- sizeof("bengal-scubaidp-snd-card")))
- platform_info_init(PLATFORM_INFO_XML_PATH_SCUBA_IDP, my_data, PLATFORM);
- else if (!strncmp(snd_card_name, "qcs405-wsa-snd-card",
- sizeof("qcs405-wsa-snd-card")))
- platform_info_init(PLATFORM_INFO_XML_PATH_WSA, my_data, PLATFORM);
- else if (!strncmp(snd_card_name, "qcs405-tdm-snd-card",
- sizeof("qcs405-tdm-snd-card")))
- platform_info_init(PLATFORM_INFO_XML_PATH_TDM, my_data, PLATFORM);
- else if (my_data->is_internal_codec)
- platform_info_init(PLATFORM_INFO_XML_PATH_INTCODEC, my_data, PLATFORM);
+ if (my_data->is_i2s_ext_modem && !is_auto_snd_card(snd_card_name)) {
+ platform_info_init(get_xml_file_path(PLATFORM_INFO_XML_PATH_I2S_NAME),
+ my_data, PLATFORM);
+ } else if (!strncmp(snd_card_name, "sdm660-snd-card-skush",
+ sizeof("sdm660-snd-card-skush"))) {
+ platform_info_init(get_xml_file_path(PLATFORM_INFO_XML_PATH_SKUSH_NAME),
+ my_data, PLATFORM);
+ } else if (!strncmp(snd_card_name, "sdm670-skuw-snd-card",
+ sizeof("sdm670-skuw-snd-card"))) {
+ platform_info_init(get_xml_file_path(PLATFORM_INFO_XML_PATH_SKUW_NAME),
+ my_data, PLATFORM);
+ } else if (!strncmp(snd_card_name, "sm6150-qrd-snd-card",
+ sizeof("sm6150-qrd-snd-card"))) {
+ platform_info_init(get_xml_file_path(PLATFORM_INFO_XML_PATH_QRD_NAME),
+ my_data, PLATFORM);
+ } else if (!strncmp(snd_card_name, "sm6150-wcd9375qrd-snd-card",
+ sizeof("sm6150-wcd9375qrd-snd-card"))) {
+ platform_info_init(get_xml_file_path(PLATFORM_INFO_XML_PATH_QRD_NAME),
+ my_data, PLATFORM);
+ } else if (!strncmp(snd_card_name, "lahaina-qrd-snd-card",
+ sizeof("lahaina-qrd-snd-card"))) {
+ platform_info_init(get_xml_file_path(PLATFORM_INFO_XML_PATH_QRD_NAME),
+ my_data, PLATFORM);
+ } else if (!strncmp(snd_card_name, "kona-qrd-snd-card",
+ sizeof("kona-qrd-snd-card"))) {
+ platform_info_init(get_xml_file_path(PLATFORM_INFO_XML_PATH_QRD_NAME),
+ my_data, PLATFORM);
+ } else if (!strncmp(snd_card_name, "sm8150-tavil-qrd-snd-card",
+ sizeof("sm8150-tavil-qrd-snd-card"))) {
+ platform_info_init(get_xml_file_path(PLATFORM_INFO_XML_PATH_QRD_NAME),
+ my_data, PLATFORM);
+ } else if (!strncmp(snd_card_name, "lito-qrd-snd-card",
+ sizeof("lito-qrd-snd-card"))) {
+ platform_info_init(get_xml_file_path(PLATFORM_INFO_XML_PATH_QRD_NAME),
+ my_data, PLATFORM);
+ } else if (!strncmp(snd_card_name, "lito-lagoonqrd-snd-card",
+ sizeof("lito-lagoonqrd-snd-card"))) {
+ platform_info_init(get_xml_file_path(PLATFORM_INFO_XML_PATH_LAGOON_QRD_NAME),
+ my_data, PLATFORM);
+ } else if (!strncmp(snd_card_name, "atoll-qrd-snd-card",
+ sizeof("atoll-qrd-snd-card"))){
+ platform_info_init(get_xml_file_path(PLATFORM_INFO_XML_PATH_QRD_NAME),
+ my_data, PLATFORM);
+ } else if (!strncmp(snd_card_name, "bengal-qrd-snd-card",
+ sizeof("bengal-qrd-snd-card"))) {
+ platform_info_init(get_xml_file_path(PLATFORM_INFO_XML_PATH_QRD_NAME),
+ my_data, PLATFORM);
+ } else if (!strncmp(snd_card_name, "qcs405-wsa-snd-card",
+ sizeof("qcs405-wsa-snd-card"))) {
+ platform_info_init(get_xml_file_path(PLATFORM_INFO_XML_PATH_WSA_NAME),
+ my_data, PLATFORM);
+ } else if (!strncmp(snd_card_name, "qcs405-tdm-snd-card",
+ sizeof("qcs405-tdm-snd-card"))) {
+ platform_info_init(get_xml_file_path(PLATFORM_INFO_XML_PATH_TDM_NAME),
+ my_data, PLATFORM);
+ } else if (my_data->is_internal_codec) {
+ platform_info_init(get_xml_file_path(PLATFORM_INFO_XML_PATH_INTCODEC_NAME),
+ my_data, PLATFORM);
+ }
else {
// Try to load pixel or default
audio_extn_utils_get_platform_info(snd_card_name, platform_info_file);
@@ -3414,9 +3420,8 @@
if (platform_is_i2s_ext_modem(snd_card_name, my_data) &&
!is_auto_snd_card(snd_card_name)) {
ALOGD("%s: Call MIXER_XML_PATH_I2S", __func__);
-
adev->audio_route = audio_route_init(adev->snd_card,
- MIXER_XML_PATH_I2S);
+ get_xml_file_path(MIXER_XML_PATH_I2S_NAME));
} else {
/* Get the codec internal name from the sound card name
* and form the mixer paths file name dynamically. This
@@ -3453,7 +3458,7 @@
ALOGD("%s: Loading mixer file: %s", __func__, mixer_xml_file);
if (audio_extn_read_xml(adev, adev->snd_card, mixer_xml_file,
- MIXER_XML_PATH_AUXPCM) == -ENOSYS) {
+ get_xml_file_path(MIXER_XML_PATH_AUXPCM_NAME)) == -ENOSYS) {
adev->audio_route = audio_route_init(adev->snd_card, mixer_xml_file);
}
}
diff --git a/hal/msm8974/platform.h b/hal/msm8974/platform.h
index a42e686..9ac3316 100644
--- a/hal/msm8974/platform.h
+++ b/hal/msm8974/platform.h
@@ -387,7 +387,7 @@
#define ALL_SESSION_VSID 0xFFFFFFFF
#define DEFAULT_MUTE_RAMP_DURATION_MS 20
#define DEFAULT_VOLUME_RAMP_DURATION_MS 20
-#define MIXER_PATH_MAX_LENGTH 100
+#define MIXER_PATH_MAX_LENGTH 128
#define CODEC_VERSION_MAX_LENGTH 100
#define CODEC_VARIANT_MAX_LENGTH 100
diff --git a/hal/platform_info.c b/hal/platform_info.c
index 9b64c79..76239ac 100644
--- a/hal/platform_info.c
+++ b/hal/platform_info.c
@@ -39,6 +39,7 @@
#include <audio_hw.h>
#include "acdb.h"
#include "platform_api.h"
+#include "audio_extn.h"
#include <platform.h>
#include <math.h>
@@ -49,6 +50,8 @@
#endif
#define BUF_SIZE 1024
+char vendor_config_path[VENDOR_CONFIG_PATH_MAX_LENGTH];
+char platform_info_xml_path_file[VENDOR_CONFIG_FILE_MAX_LENGTH];
typedef enum {
ROOT,
@@ -83,6 +86,15 @@
typedef void (* section_process_fn)(const XML_Char **attr);
+const char* get_platform_xml_path()
+{
+ audio_get_vendor_config_path(vendor_config_path, sizeof(vendor_config_path));
+ /* Get path for platorm_info_xml_path_name in vendor */
+ snprintf(platform_info_xml_path_file, sizeof(platform_info_xml_path_file),
+ "%s/%s", vendor_config_path, PLATFORM_INFO_XML_PATH_NAME);
+ return platform_info_xml_path_file;
+}
+
static void process_acdb_id(const XML_Char **attr);
static void process_audio_effect(const XML_Char **attr, effect_type_t effect_type);
static void process_effect_aec(const XML_Char **attr);
@@ -456,7 +468,7 @@
snd_device = platform_get_snd_device_index((char *)attr[1]);
if (snd_device < 0) {
ALOGE("%s: Device %s in %s not found, no ACDB ID set!",
- __func__, (char *)attr[3], PLATFORM_INFO_XML_PATH);
+ __func__, (char *)attr[3], get_platform_xml_path());
goto done;
}
@@ -493,7 +505,7 @@
snd_device = platform_get_snd_device_index((char *)attr[1]);
if (snd_device < 0) {
ALOGE("%s: Device %s in %s not found, no ACDB ID set!",
- __func__, (char *)attr[3], PLATFORM_INFO_XML_PATH);
+ __func__, (char *)attr[3], get_platform_xml_path());
goto done;
}
@@ -719,7 +731,7 @@
snd_device = platform_get_snd_device_index((char *)attr[1]);
if (snd_device < 0) {
ALOGE("%s: Device %s in %s not found, no ACDB ID set!",
- __func__, (char *)attr[3], PLATFORM_INFO_XML_PATH);
+ __func__, (char *)attr[3], get_platform_xml_path());
goto done;
}
@@ -816,7 +828,10 @@
static void process_microphone_characteristic(const XML_Char **attr) {
struct audio_microphone_characteristic_t microphone;
uint32_t curIdx = 0;
+ char platform_info_xml_path[VENDOR_CONFIG_FILE_MAX_LENGTH];
+ strlcpy(platform_info_xml_path, get_platform_xml_path(),
+ sizeof(platform_info_xml_path));
if (strcmp(attr[curIdx++], "valid_mask")) {
ALOGE("%s: valid_mask not found", __func__);
goto done;
@@ -840,7 +855,7 @@
if (!find_enum_by_string(device_in_types, (char*)attr[curIdx++],
ARRAY_SIZE(device_in_types), µphone.device)) {
ALOGE("%s: type %s in %s not found!",
- __func__, attr[--curIdx], PLATFORM_INFO_XML_PATH);
+ __func__, attr[--curIdx], platform_info_xml_path);
goto done;
}
@@ -869,7 +884,7 @@
if (!find_enum_by_string(mic_locations, (char*)attr[curIdx++],
AUDIO_MICROPHONE_LOCATION_CNT, µphone.location)) {
ALOGE("%s: location %s in %s not found!",
- __func__, attr[--curIdx], PLATFORM_INFO_XML_PATH);
+ __func__, attr[--curIdx], platform_info_xml_path);
goto done;
}
@@ -892,7 +907,7 @@
if (!find_enum_by_string(mic_directionalities, (char*)attr[curIdx++],
AUDIO_MICROPHONE_DIRECTIONALITY_CNT, µphone.directionality)) {
ALOGE("%s: directionality %s in %s not found!",
- __func__, attr[--curIdx], PLATFORM_INFO_XML_PATH);
+ __func__, attr[--curIdx], platform_info_xml_path);
goto done;
}
@@ -1059,7 +1074,10 @@
{
uint32_t curIdx = 0;
struct mic_info microphone;
+ char platform_info_xml_path[VENDOR_CONFIG_FILE_MAX_LENGTH];
+ strlcpy(platform_info_xml_path, get_platform_xml_path(),
+ sizeof(platform_info_xml_path));
memset(µphone.channel_mapping, AUDIO_MICROPHONE_CHANNEL_MAPPING_UNUSED,
sizeof(microphone.channel_mapping));
@@ -1082,7 +1100,7 @@
AUDIO_MICROPHONE_CHANNEL_MAPPING_CNT,
µphone.channel_mapping[idx++])) {
ALOGE("%s: channel_mapping %s in %s not found!",
- __func__, attr[--curIdx], PLATFORM_INFO_XML_PATH);
+ __func__, attr[--curIdx], platform_info_xml_path);
goto on_error;
}
token = strtok_r(NULL, " ", &context);
@@ -1581,10 +1599,13 @@
int bytes_read;
void *buf;
char platform_info_file_name[MIXER_PATH_MAX_LENGTH]= {0};
+ char platform_info_xml_path[VENDOR_CONFIG_FILE_MAX_LENGTH];
+ strlcpy(platform_info_xml_path, get_platform_xml_path(),
+ sizeof(platform_info_xml_path));
pthread_mutex_lock(&parser_lock);
if (filename == NULL)
- strlcpy(platform_info_file_name, PLATFORM_INFO_XML_PATH,
+ strlcpy(platform_info_file_name, platform_info_xml_path,
MIXER_PATH_MAX_LENGTH);
else
strlcpy(platform_info_file_name, filename, MIXER_PATH_MAX_LENGTH);