Merge "hal: Add change to dynamically load audio config file"
diff --git a/configs/bengal/mixer_paths_scubaidp.xml b/configs/bengal/mixer_paths_scubaidp.xml
index 4afdbba..8d07291 100644
--- a/configs/bengal/mixer_paths_scubaidp.xml
+++ b/configs/bengal/mixer_paths_scubaidp.xml
@@ -381,6 +381,7 @@
<!-- Headphone class-H mode -->
<ctl name="RX HPH Mode" value="CLS_AB" />
+ <ctl name="RX_HPH_PWR_MODE" value="LOHIFI" />
<!-- IIR/voice anc -->
<ctl name="IIR0 Band1" id ="0" value="268435456" />
@@ -2622,13 +2623,9 @@
</path>
<path name="hph-highquality-mode">
- <ctl name="RX_HPH_PWR_MODE" value="LOHIFI" />
- <ctl name="RX HPH Mode" value="CLS_H_LOHIFI" />
</path>
<path name="hph-lowpower-mode">
- <ctl name="RX_HPH_PWR_MODE" value="ULP" />
- <ctl name="RX HPH Mode" value="CLS_H_ULP" />
</path>
<path name="hph-class-ab-mode">
diff --git a/configs/bengal/mixer_paths_scubaqrd.xml b/configs/bengal/mixer_paths_scubaqrd.xml
index b26a949..305a587 100644
--- a/configs/bengal/mixer_paths_scubaqrd.xml
+++ b/configs/bengal/mixer_paths_scubaqrd.xml
@@ -365,6 +365,7 @@
<!-- Headphone class-H mode -->
<ctl name="RX HPH Mode" value="CLS_AB" />
+ <ctl name="RX_HPH_PWR_MODE" value="LOHIFI" />
<!-- IIR/voice anc -->
<ctl name="IIR0 Band1" id ="0" value="268435456" />
@@ -2599,13 +2600,9 @@
</path>
<path name="hph-highquality-mode">
- <ctl name="RX_HPH_PWR_MODE" value="LOHIFI" />
- <ctl name="RX HPH Mode" value="CLS_H_LOHIFI" />
</path>
<path name="hph-lowpower-mode">
- <ctl name="RX_HPH_PWR_MODE" value="ULP" />
- <ctl name="RX HPH Mode" value="CLS_H_ULP" />
</path>
<path name="hph-class-ab-mode">
diff --git a/configs/lahaina/audio_platform_info.xml b/configs/lahaina/audio_platform_info.xml
index 5535e64..1be9667 100644
--- a/configs/lahaina/audio_platform_info.xml
+++ b/configs/lahaina/audio_platform_info.xml
@@ -115,6 +115,9 @@
<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" />
+ <usecase name="USECASE_INCALL_REC_UPLINK_AND_DOWNLINK" type="in" id="23" />
</pcm_ids>
<config_params>
<param key="spkr_1_tz_name" value="wsatz.13"/>
diff --git a/configs/lahaina/audio_platform_info_intcodec.xml b/configs/lahaina/audio_platform_info_intcodec.xml
index eb2be18..9595c6b 100644
--- a/configs/lahaina/audio_platform_info_intcodec.xml
+++ b/configs/lahaina/audio_platform_info_intcodec.xml
@@ -98,6 +98,9 @@
<usecase name="USECASE_AUDIO_RECORD_COMPRESS2" type="in" id="37" />
<usecase name="USECASE_AUDIO_PLAYBACK_WITH_HAPTICS" type="out" id="40" />
<usecase name="USECASE_AUDIO_PLAYBACK_HAPTICS" type="out" id="41" />
+ <usecase name="USECASE_INCALL_REC_UPLINK" type="in" id="23" />
+ <usecase name="USECASE_INCALL_REC_DOWNLINK" type="in" id="23" />
+ <usecase name="USECASE_INCALL_REC_UPLINK_AND_DOWNLINK" type="in" id="23" />
</pcm_ids>
<config_params>
<!-- In the below value string, the value indicates default mono -->
@@ -156,7 +159,11 @@
<device name="SND_DEVICE_OUT_LINE" backend="headphones" interface="RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_ANC_HEADSET" backend="headphones" interface="RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_SPEAKER_AND_HEADPHONES" backend="speaker-and-headphones" interface="WSA_CDC_DMA_RX_0-and-RX_CDC_DMA_RX_0"/>
- <device name="SND_DEVICE_OUT_SPEAKER_AND_HEADPHONES_HIFI_FILTER" backend="speaker-and-headphones" interface="WSA_CDC_DMA_RX_0-and-RX_CDC_DMA_RX_0"/>
+ <device name="SND_DEVICE_OUT_SPEAKER_HEADPHONES_AND_HAPTICS" backend="speaker-headphones-and-haptics" interface="WSA_CDC_DMA_RX_0-and-RX_CDC_DMA_RX_0"/>
+ <device name="SND_DEVICE_OUT_SPEAKER_SAFE_HEADPHONES_AND_HAPTICS" backend="speaker-safe-headphones-and-haptics" interface="WSA_CDC_DMA_RX_0-and-RX_CDC_DMA_RX_0"/>
+ <device name="SND_DEVICE_OUT_SPEAKER_USB_HEADSET_AND_HAPTICS" backend="speaker-usb-headphones-and-haptics" interface="WSA_CDC_DMA_RX_0-and-USB_AUDIO_RX"/>
+ <device name="SND_DEVICE_OUT_SPEAKER_SAFE_USB_HEADSET_AND_HAPTICS" backend="speaker-safe-usb-headphones-and-haptics" interface="WSA_CDC_DMA_RX_0-and-USB_AUDIO_RX"/>
+ <device name="SND_DEVICE_OUT_SPEAKER_AND_HEADPHONES_HIFI_FILTER" backend="speaker-and-headphones" interface="WSA_CDC_DMA_RX_0-and-RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_SPEAKER_AND_LINE" backend="speaker-and-headphones" interface="WSA_CDC_DMA_RX_0-and-RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_SPEAKER_AND_ANC_HEADSET" backend="speaker-and-headphones" interface="WSA_CDC_DMA_RX_0-and-RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_VOICE_HEADPHONES" backend="headphones" interface="RX_CDC_DMA_RX_0"/>
@@ -186,6 +193,9 @@
<device name="SND_DEVICE_OUT_SPEAKER_AND_HDMI" interface="WSA_CDC_DMA_RX_0-and-HDMI"/>
<device name="SND_DEVICE_OUT_SPEAKER_AND_DISPLAY_PORT" interface="WSA_CDC_DMA_RX_0-and-DISPLAY_PORT"/>
<device name="SND_DEVICE_OUT_SPEAKER_AND_BT_A2DP" interface="WSA_CDC_DMA_RX_0-and-SLIMBUS_7_RX"/>
+ <device name="SND_DEVICE_OUT_SPEAKER_DISPLAY_PORT_AND_HAPTICS" interface="WSA_CDC_DMA_RX_0-and-DISPLAY_PORT"/>
+ <device name="SND_DEVICE_OUT_SPEAKER_BT_A2DP_AND_HAPTICS" backend="speaker-bt-a2dp-and-haptics" interface="WSA_CDC_DMA_RX_0-and-SLIMBUS_7_RX"/>
+ <device name="SND_DEVICE_OUT_SPEAKER_SAFE_BT_A2DP_AND_HAPTICS" backend="speaker-safe-bt-a2dp-and-haptics" interface="WSA_CDC_DMA_RX_0-and-SLIMBUS_7_RX"/>
<device name="SND_DEVICE_OUT_VOICE_TTY_HCO_HANDSET" interface="WSA_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_ANC_FB_HEADSET" interface="RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_VOICE_ANC_FB_HEADSET" interface="RX_CDC_DMA_RX_0"/>
@@ -302,6 +312,12 @@
<device name="SND_DEVICE_OUT_SPEAKER_AND_BT_SCO" backend="speaker-and-bt-sco" interface="WSA_CDC_DMA_RX_0-and-SLIMBUS_7_RX"/>
<device name="SND_DEVICE_OUT_SPEAKER_AND_BT_SCO_WB" backend="speaker-and-bt-sco-wb" interface="WSA_CDC_DMA_RX_0-and-SLIMBUS_7_RX"/>
<device name="SND_DEVICE_OUT_SPEAKER_AND_BT_SCO_SWB" backend="speaker-and-bt-sco-swb" interface="WSA_CDC_DMA_RX_0-and-SLIMBUS_7_RX"/>
+ <device name="SND_DEVICE_OUT_SPEAKER_BT_SCO_AND_HAPTICS" backend="speaker-bt-sco-and-haptics" interface="WSA_CDC_DMA_RX_0-and-SLIMBUS_7_RX"/>
+ <device name="SND_DEVICE_OUT_SPEAKER_BT_SCO_WB_AND_HAPTICS" backend="speaker-bt-sco-wb-and-haptics" interface="WSA_CDC_DMA_RX_0-and-SLIMBUS_7_RX"/>
+ <device name="SND_DEVICE_OUT_SPEAKER_BT_SCO_SWB_AND_HAPTICS" backend="speaker-bt-sco-swb-and-haptics" interface="WSA_CDC_DMA_RX_0-and-SLIMBUS_7_RX"/>
+ <device name="SND_DEVICE_OUT_SPEAKER_SAFE_BT_SCO_AND_HAPTICS" backend="speaker-safe-bt-sco-and-haptics" interface="WSA_CDC_DMA_RX_0-and-SLIMBUS_7_RX"/>
+ <device name="SND_DEVICE_OUT_SPEAKER_SAFE_BT_SCO_WB_AND_HAPTICS" backend="speaker-safe-bt-sco-wb-and-haptics" interface="WSA_CDC_DMA_RX_0-and-SLIMBUS_7_RX"/>
+ <device name="SND_DEVICE_OUT_SPEAKER_SAFE_BT_SCO_SWB_AND_HAPTICS" backend="speaker-safe-bt-sco-swb-and-haptics" interface="WSA_CDC_DMA_RX_0-and-SLIMBUS_7_RX"/>
</backend_names>
<!-- below values are for ref purpose to OEM, doesn't contain actual hardware info on MTP -->
<microphone_characteristics>
diff --git a/configs/lahaina/audio_platform_info_qrd.xml b/configs/lahaina/audio_platform_info_qrd.xml
index 088a9d9..22b28ca 100644
--- a/configs/lahaina/audio_platform_info_qrd.xml
+++ b/configs/lahaina/audio_platform_info_qrd.xml
@@ -98,6 +98,9 @@
<usecase name="USECASE_AUDIO_RECORD_COMPRESS2" type="in" id="37" />
<usecase name="USECASE_AUDIO_PLAYBACK_WITH_HAPTICS" type="out" id="40" />
<usecase name="USECASE_AUDIO_PLAYBACK_HAPTICS" type="out" id="41" />
+ <usecase name="USECASE_INCALL_REC_UPLINK" type="in" id="23" />
+ <usecase name="USECASE_INCALL_REC_DOWNLINK" type="in" id="23" />
+ <usecase name="USECASE_INCALL_REC_UPLINK_AND_DOWNLINK" type="in" id="23" />
</pcm_ids>
<config_params>
<!-- In the below value string, the value indicates default mono -->
@@ -156,7 +159,11 @@
<device name="SND_DEVICE_OUT_LINE" backend="headphones" interface="RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_ANC_HEADSET" backend="headphones" interface="RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_SPEAKER_AND_HEADPHONES" backend="speaker-and-headphones" interface="WSA_CDC_DMA_RX_0-and-RX_CDC_DMA_RX_0"/>
- <device name="SND_DEVICE_OUT_SPEAKER_AND_HEADPHONES_HIFI_FILTER" backend="speaker-and-headphones" interface="WSA_CDC_DMA_RX_0-and-RX_CDC_DMA_RX_0"/>
+ <device name="SND_DEVICE_OUT_SPEAKER_HEADPHONES_AND_HAPTICS" backend="speaker-headphones-and-haptics" interface="WSA_CDC_DMA_RX_0-and-RX_CDC_DMA_RX_0"/>
+ <device name="SND_DEVICE_OUT_SPEAKER_SAFE_HEADPHONES_AND_HAPTICS" backend="speaker-safe-headphones-and-haptics" interface="WSA_CDC_DMA_RX_0-and-RX_CDC_DMA_RX_0"/>
+ <device name="SND_DEVICE_OUT_SPEAKER_USB_HEADSET_AND_HAPTICS" backend="speaker-usb-headphones-and-haptics" interface="WSA_CDC_DMA_RX_0-and-USB_AUDIO_RX"/>
+ <device name="SND_DEVICE_OUT_SPEAKER_SAFE_USB_HEADSET_AND_HAPTICS" backend="speaker-safe-usb-headphones-and-haptics" interface="WSA_CDC_DMA_RX_0-and-USB_AUDIO_RX"/>
+ <device name="SND_DEVICE_OUT_SPEAKER_AND_HEADPHONES_HIFI_FILTER" backend="speaker-and-headphones" interface="WSA_CDC_DMA_RX_0-and-RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_SPEAKER_AND_LINE" backend="speaker-and-headphones" interface="WSA_CDC_DMA_RX_0-and-RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_SPEAKER_AND_ANC_HEADSET" backend="speaker-and-headphones" interface="WSA_CDC_DMA_RX_0-and-RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_VOICE_HEADPHONES" backend="headphones" interface="RX_CDC_DMA_RX_0"/>
@@ -186,6 +193,9 @@
<device name="SND_DEVICE_OUT_SPEAKER_AND_HDMI" interface="WSA_CDC_DMA_RX_0-and-HDMI"/>
<device name="SND_DEVICE_OUT_SPEAKER_AND_DISPLAY_PORT" interface="WSA_CDC_DMA_RX_0-and-DISPLAY_PORT"/>
<device name="SND_DEVICE_OUT_SPEAKER_AND_BT_A2DP" interface="WSA_CDC_DMA_RX_0-and-SLIMBUS_7_RX"/>
+ <device name="SND_DEVICE_OUT_SPEAKER_DISPLAY_PORT_AND_HAPTICS" interface="WSA_CDC_DMA_RX_0-and-DISPLAY_PORT"/>
+ <device name="SND_DEVICE_OUT_SPEAKER_BT_A2DP_AND_HAPTICS" backend="speaker-bt-a2dp-and-haptics" interface="WSA_CDC_DMA_RX_0-and-SLIMBUS_7_RX"/>
+ <device name="SND_DEVICE_OUT_SPEAKER_SAFE_BT_A2DP_AND_HAPTICS" backend="speaker-safe-bt-a2dp-and-haptics" interface="WSA_CDC_DMA_RX_0-and-SLIMBUS_7_RX"/>
<device name="SND_DEVICE_OUT_VOICE_TTY_HCO_HANDSET" interface="WSA_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_ANC_FB_HEADSET" interface="RX_CDC_DMA_RX_0"/>
<device name="SND_DEVICE_OUT_VOICE_ANC_FB_HEADSET" interface="RX_CDC_DMA_RX_0"/>
@@ -302,6 +312,12 @@
<device name="SND_DEVICE_OUT_SPEAKER_AND_BT_SCO" backend="speaker-and-bt-sco" interface="WSA_CDC_DMA_RX_0-and-SLIMBUS_7_RX"/>
<device name="SND_DEVICE_OUT_SPEAKER_AND_BT_SCO_WB" backend="speaker-and-bt-sco-wb" interface="WSA_CDC_DMA_RX_0-and-SLIMBUS_7_RX"/>
<device name="SND_DEVICE_OUT_SPEAKER_AND_BT_SCO_SWB" backend="speaker-and-bt-sco-swb" interface="WSA_CDC_DMA_RX_0-and-SLIMBUS_7_RX"/>
+ <device name="SND_DEVICE_OUT_SPEAKER_BT_SCO_AND_HAPTICS" backend="speaker-bt-sco-and-haptics" interface="WSA_CDC_DMA_RX_0-and-SLIMBUS_7_RX"/>
+ <device name="SND_DEVICE_OUT_SPEAKER_BT_SCO_WB_AND_HAPTICS" backend="speaker-bt-sco-wb-and-haptics" interface="WSA_CDC_DMA_RX_0-and-SLIMBUS_7_RX"/>
+ <device name="SND_DEVICE_OUT_SPEAKER_BT_SCO_SWB_AND_HAPTICS" backend="speaker-bt-sco-swb-and-haptics" interface="WSA_CDC_DMA_RX_0-and-SLIMBUS_7_RX"/>
+ <device name="SND_DEVICE_OUT_SPEAKER_SAFE_BT_SCO_AND_HAPTICS" backend="speaker-safe-bt-sco-and-haptics" interface="WSA_CDC_DMA_RX_0-and-SLIMBUS_7_RX"/>
+ <device name="SND_DEVICE_OUT_SPEAKER_SAFE_BT_SCO_WB_AND_HAPTICS" backend="speaker-safe-bt-sco-wb-and-haptics" interface="WSA_CDC_DMA_RX_0-and-SLIMBUS_7_RX"/>
+ <device name="SND_DEVICE_OUT_SPEAKER_SAFE_BT_SCO_SWB_AND_HAPTICS" backend="speaker-safe-bt-sco-swb-and-haptics" interface="WSA_CDC_DMA_RX_0-and-SLIMBUS_7_RX"/>
</backend_names>
<!-- below values are for ref purpose to OEM, doesn't contain actual hardware info on MTP -->
<microphone_characteristics>
diff --git a/configs/lahaina/audio_policy_configuration.xml b/configs/lahaina/audio_policy_configuration.xml
index f469c65..9a66b1e 100644
--- a/configs/lahaina/audio_policy_configuration.xml
+++ b/configs/lahaina/audio_policy_configuration.xml
@@ -349,15 +349,15 @@
<route type="mix" sink="FM"
sources="primary output"/>
<route type="mix" sink="BT SCO"
- sources="primary output,raw,deep_buffer,direct_pcm,compressed_offload,voip_rx"/>
+ sources="primary output,raw,deep_buffer,direct_pcm,compressed_offload,voip_rx,haptics output"/>
<route type="mix" sink="BT SCO Headset"
- sources="primary output,raw,deep_buffer,direct_pcm,compressed_offload,voip_rx"/>
+ sources="primary output,raw,deep_buffer,direct_pcm,compressed_offload,voip_rx,haptics output"/>
<route type="mix" sink="BT SCO Car Kit"
- sources="primary output,raw,deep_buffer,direct_pcm,compressed_offload,voip_rx"/>
+ sources="primary output,raw,deep_buffer,direct_pcm,compressed_offload,voip_rx,haptics output"/>
<route type="mix" sink="USB Device Out"
- sources="primary output,raw,deep_buffer,direct_pcm,compressed_offload,voip_rx,mmap_no_irq_out,hifi_playback"/>
+ sources="primary output,raw,deep_buffer,direct_pcm,compressed_offload,voip_rx,mmap_no_irq_out,hifi_playback,haptics output"/>
<route type="mix" sink="USB Headset Out"
- sources="primary output,raw,deep_buffer,direct_pcm,compressed_offload,voip_rx,mmap_no_irq_out,hifi_playback"/>
+ sources="primary output,raw,deep_buffer,direct_pcm,compressed_offload,voip_rx,mmap_no_irq_out,hifi_playback,haptics output"/>
<route type="mix" sink="Telephony Tx"
sources="voice_tx,incall_music_uplink"/>
<route type="mix" sink="voice_rx"
@@ -377,11 +377,11 @@
<route type="mix" sink="mmap_no_irq_in"
sources="Built-In Mic,Built-In Back Mic,Wired Headset Mic,USB Device In,USB Headset In"/>
<route type="mix" sink="BT A2DP Out"
- sources="primary output,deep_buffer,direct_pcm,compressed_offload,voip_rx"/>
+ sources="primary output,deep_buffer,direct_pcm,compressed_offload,voip_rx,haptics output"/>
<route type="mix" sink="BT A2DP Headphones"
- sources="primary output,deep_buffer,direct_pcm,compressed_offload,voip_rx"/>
+ sources="primary output,deep_buffer,direct_pcm,compressed_offload,voip_rx,haptics output"/>
<route type="mix" sink="BT A2DP Speaker"
- sources="primary output,deep_buffer,direct_pcm,compressed_offload,voip_rx"/>
+ sources="primary output,deep_buffer,direct_pcm,compressed_offload,voip_rx,haptics output"/>
<route type="mix" sink="hifi_input" sources="USB Device In,USB Headset In" />
</routes>
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 dbbfdf1..ee0f9da 100644
--- a/configs/lahaina/mixer_paths.xml
+++ b/configs/lahaina/mixer_paths.xml
@@ -246,8 +246,8 @@
<!-- RT Proxy Cal end -->
<!-- Incall Recording -->
- <ctl name="MultiMedia1 Mixer VOC_REC_UL" value="0" />
- <ctl name="MultiMedia1 Mixer VOC_REC_DL" value="0" />
+ <ctl name="MultiMedia9 Mixer VOC_REC_UL" value="0" />
+ <ctl name="MultiMedia9 Mixer VOC_REC_DL" value="0" />
<ctl name="MultiMedia8 Mixer VOC_REC_UL" value="0" />
<ctl name="MultiMedia8 Mixer VOC_REC_DL" value="0" />
<!-- Incall Recording End -->
@@ -1836,7 +1836,7 @@
</path>
<path name="incall-rec-uplink">
- <ctl name="MultiMedia1 Mixer VOC_REC_UL" value="1" />
+ <ctl name="MultiMedia9 Mixer VOC_REC_UL" value="1" />
</path>
<path name="incall-rec-uplink bt-sco">
@@ -1896,7 +1896,7 @@
</path>
<path name="incall-rec-downlink">
- <ctl name="MultiMedia1 Mixer VOC_REC_DL" value="1" />
+ <ctl name="MultiMedia9 Mixer VOC_REC_DL" value="1" />
</path>
<path name="incall-rec-downlink bt-sco">
@@ -2326,6 +2326,78 @@
<ctl name="RX_CDC_DMA_RX_0 Audio Mixer MultiMedia31" value="1" />
</path>
+ <path name="audio-with-haptics-playback speaker-headphones-and-haptics">
+ <ctl name="RX_CDC_DMA_RX_6 Audio Mixer MultiMedia32" value="1"/>
+ <ctl name="RX_CDC_DMA_RX_0 Audio Mixer MultiMedia31" value="1" />
+ <ctl name="WSA_CDC_DMA_RX_0 Audio Mixer MultiMedia31" value="1" />
+ </path>
+
+ <path name="audio-with-haptics-playback speaker-saefe-headphones-and-haptics">
+ <ctl name="RX_CDC_DMA_RX_6 Audio Mixer MultiMedia32" value="1"/>
+ <ctl name="RX_CDC_DMA_RX_0 Audio Mixer MultiMedia31" value="1" />
+ <ctl name="WSA_CDC_DMA_RX_0 Audio Mixer MultiMedia31" value="1" />
+ </path>
+
+ <path name="audio-with-haptics-playback speaker-usb-headphones-and-haptics">
+ <ctl name="RX_CDC_DMA_RX_6 Audio Mixer MultiMedia32" value="1"/>
+ <ctl name="WSA_CDC_DMA_RX_0 Audio Mixer MultiMedia31" value="1" />
+ <ctl name="USB_AUDIO_RX Audio Mixer MultiMedia31" value="1" />
+ </path>
+
+ <path name="audio-with-haptics-playback speaker-safe-usb-headphones-and-haptics">
+ <ctl name="RX_CDC_DMA_RX_6 Audio Mixer MultiMedia32" value="1"/>
+ <ctl name="WSA_CDC_DMA_RX_0 Audio Mixer MultiMedia31" value="1" />
+ <ctl name="USB_AUDIO_RX Audio Mixer MultiMedia31" value="1" />
+ </path>
+
+ <path name="audio-with-haptics-playback speaker-bt-a2dp-and-haptics">
+ <ctl name="RX_CDC_DMA_RX_6 Audio Mixer MultiMedia32" value="1"/>
+ <ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia31" value="1" />
+ <ctl name="WSA_CDC_DMA_RX_0 Audio Mixer MultiMedia31" value="1" />
+ </path>
+
+ <path name="audio-with-haptics-playback speaker-safe-bt-a2dp-and-haptics">
+ <ctl name="RX_CDC_DMA_RX_6 Audio Mixer MultiMedia32" value="1"/>
+ <ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia31" value="1" />
+ <ctl name="WSA_CDC_DMA_RX_0 Audio Mixer MultiMedia31" value="1" />
+ </path>
+
+ <path name="audio-with-haptics-playback speaker-bt-sco-and-haptics">
+ <ctl name="RX_CDC_DMA_RX_6 Audio Mixer MultiMedia32" value="1"/>
+ <ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia31" value="1" />
+ <ctl name="WSA_CDC_DMA_RX_0 Audio Mixer MultiMedia31" value="1" />
+ </path>
+
+ <path name="audio-with-haptics-playback speaker-safe-bt-sco-and-haptics">
+ <ctl name="RX_CDC_DMA_RX_6 Audio Mixer MultiMedia32" value="1"/>
+ <ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia31" value="1" />
+ <ctl name="WSA_CDC_DMA_RX_0 Audio Mixer MultiMedia31" value="1" />
+ </path>
+
+ <path name="audio-with-haptics-playback speaker-bt-sco-wb-and-haptics">
+ <ctl name="RX_CDC_DMA_RX_6 Audio Mixer MultiMedia32" value="1"/>
+ <ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia31" value="1" />
+ <ctl name="WSA_CDC_DMA_RX_0 Audio Mixer MultiMedia31" value="1" />
+ </path>
+
+ <path name="audio-with-haptics-playback speaker-safe-bt-sco-wb-and-haptics">
+ <ctl name="RX_CDC_DMA_RX_6 Audio Mixer MultiMedia32" value="1"/>
+ <ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia31" value="1" />
+ <ctl name="WSA_CDC_DMA_RX_0 Audio Mixer MultiMedia31" value="1" />
+ </path>
+
+ <path name="audio-with-haptics-playback speaker-bt-sco-swb-and-haptics">
+ <ctl name="RX_CDC_DMA_RX_6 Audio Mixer MultiMedia32" value="1"/>
+ <ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia31" value="1" />
+ <ctl name="WSA_CDC_DMA_RX_0 Audio Mixer MultiMedia31" value="1" />
+ </path>
+
+ <path name="audio-with-haptics-playback speaker-safe-bt-sco-swb-and-haptics">
+ <ctl name="RX_CDC_DMA_RX_6 Audio Mixer MultiMedia32" value="1"/>
+ <ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia31" value="1" />
+ <ctl name="WSA_CDC_DMA_RX_0 Audio Mixer MultiMedia31" value="1" />
+ </path>
+
<!-- These are actual sound device specific mixer settings -->
<path name="amic2">
<ctl name="TX DEC0 MUX" value="SWR_MIC" />
@@ -2701,6 +2773,11 @@
<path name="speaker" />
</path>
+ <path name="speaker-headphones-and-haptics">
+ <path name="headphones" />
+ <path name="speaker-and-haptics" />
+ </path>
+
<path name="speaker-and-headphones-hifi-filter">
<path name="headphones" />
<path name="speaker" />
@@ -2744,6 +2821,11 @@
<path name="usb-headphones" />
</path>
+ <path name="speaker-usb-headphones-and-haptics">
+ <path name="speaker-and-haptics" />
+ <path name="usb-headphones" />
+ </path>
+
<path name="speaker-safe-and-usb-headphones">
<path name="speaker-safe" />
<path name="usb-headphones" />
diff --git a/configs/lahaina/mixer_paths_cdp.xml b/configs/lahaina/mixer_paths_cdp.xml
index a3a0ac8..8bdb4a6 100644
--- a/configs/lahaina/mixer_paths_cdp.xml
+++ b/configs/lahaina/mixer_paths_cdp.xml
@@ -146,6 +146,7 @@
<ctl name="WSA_CDC_DMA_TX_0 Format" value="UNPACKED" />
<ctl name="RX_CDC_DMA_RX_0 Format" value="UNPACKED" />
<ctl name="TX_CDC_DMA_TX_3 Format" value="UNPACKED" />
+ <ctl name="WSA_CDC_DMA_TX_0 SampleRate" value="KHZ_48" />
<!-- HFP start -->
<ctl name="HFP_SLIM7_UL_HL Switch" value="0" />
<ctl name="WSA_CDC_DMA_RX_0 Port Mixer SLIM_7_TX" value="0" />
@@ -230,8 +231,8 @@
<!-- RT Proxy Cal end -->
<!-- Incall Recording -->
- <ctl name="MultiMedia1 Mixer VOC_REC_UL" value="0" />
- <ctl name="MultiMedia1 Mixer VOC_REC_DL" value="0" />
+ <ctl name="MultiMedia9 Mixer VOC_REC_UL" value="0" />
+ <ctl name="MultiMedia9 Mixer VOC_REC_DL" value="0" />
<ctl name="MultiMedia8 Mixer VOC_REC_UL" value="0" />
<ctl name="MultiMedia8 Mixer VOC_REC_DL" value="0" />
<!-- Incall Recording End -->
@@ -1722,7 +1723,7 @@
</path>
<path name="incall-rec-uplink">
- <ctl name="MultiMedia1 Mixer VOC_REC_UL" value="1" />
+ <ctl name="MultiMedia9 Mixer VOC_REC_UL" value="1" />
</path>
<path name="incall-rec-uplink bt-sco">
@@ -1782,7 +1783,7 @@
</path>
<path name="incall-rec-downlink">
- <ctl name="MultiMedia1 Mixer VOC_REC_DL" value="1" />
+ <ctl name="MultiMedia9 Mixer VOC_REC_DL" value="1" />
</path>
<path name="incall-rec-downlink bt-sco">
@@ -2183,6 +2184,78 @@
<ctl name="RX_CDC_DMA_RX_0 Audio Mixer MultiMedia31" value="1" />
</path>
+ <path name="audio-with-haptics-playback speaker-headphones-and-haptics">
+ <ctl name="RX_CDC_DMA_RX_6 Audio Mixer MultiMedia32" value="1"/>
+ <ctl name="RX_CDC_DMA_RX_0 Audio Mixer MultiMedia31" value="1" />
+ <ctl name="WSA_CDC_DMA_RX_0 Audio Mixer MultiMedia31" value="1" />
+ </path>
+
+ <path name="audio-with-haptics-playback speaker-saefe-headphones-and-haptics">
+ <ctl name="RX_CDC_DMA_RX_6 Audio Mixer MultiMedia32" value="1"/>
+ <ctl name="RX_CDC_DMA_RX_0 Audio Mixer MultiMedia31" value="1" />
+ <ctl name="WSA_CDC_DMA_RX_0 Audio Mixer MultiMedia31" value="1" />
+ </path>
+
+ <path name="audio-with-haptics-playback speaker-usb-headphones-and-haptics">
+ <ctl name="RX_CDC_DMA_RX_6 Audio Mixer MultiMedia32" value="1"/>
+ <ctl name="WSA_CDC_DMA_RX_0 Audio Mixer MultiMedia31" value="1" />
+ <ctl name="USB_AUDIO_RX Audio Mixer MultiMedia31" value="1" />
+ </path>
+
+ <path name="audio-with-haptics-playback speaker-safe-usb-headphones-and-haptics">
+ <ctl name="RX_CDC_DMA_RX_6 Audio Mixer MultiMedia32" value="1"/>
+ <ctl name="WSA_CDC_DMA_RX_0 Audio Mixer MultiMedia31" value="1" />
+ <ctl name="USB_AUDIO_RX Audio Mixer MultiMedia31" value="1" />
+ </path>
+
+ <path name="audio-with-haptics-playback speaker-bt-a2dp-and-haptics">
+ <ctl name="RX_CDC_DMA_RX_6 Audio Mixer MultiMedia32" value="1"/>
+ <ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia31" value="1" />
+ <ctl name="WSA_CDC_DMA_RX_0 Audio Mixer MultiMedia31" value="1" />
+ </path>
+
+ <path name="audio-with-haptics-playback speaker-safe-bt-a2dp-and-haptics">
+ <ctl name="RX_CDC_DMA_RX_6 Audio Mixer MultiMedia32" value="1"/>
+ <ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia31" value="1" />
+ <ctl name="WSA_CDC_DMA_RX_0 Audio Mixer MultiMedia31" value="1" />
+ </path>
+
+ <path name="audio-with-haptics-playback speaker-bt-sco-and-haptics">
+ <ctl name="RX_CDC_DMA_RX_6 Audio Mixer MultiMedia32" value="1"/>
+ <ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia31" value="1" />
+ <ctl name="WSA_CDC_DMA_RX_0 Audio Mixer MultiMedia31" value="1" />
+ </path>
+
+ <path name="audio-with-haptics-playback speaker-safe-bt-sco-and-haptics">
+ <ctl name="RX_CDC_DMA_RX_6 Audio Mixer MultiMedia32" value="1"/>
+ <ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia31" value="1" />
+ <ctl name="WSA_CDC_DMA_RX_0 Audio Mixer MultiMedia31" value="1" />
+ </path>
+
+ <path name="audio-with-haptics-playback speaker-bt-sco-wb-and-haptics">
+ <ctl name="RX_CDC_DMA_RX_6 Audio Mixer MultiMedia32" value="1"/>
+ <ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia31" value="1" />
+ <ctl name="WSA_CDC_DMA_RX_0 Audio Mixer MultiMedia31" value="1" />
+ </path>
+
+ <path name="audio-with-haptics-playback speaker-safe-bt-sco-wb-and-haptics">
+ <ctl name="RX_CDC_DMA_RX_6 Audio Mixer MultiMedia32" value="1"/>
+ <ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia31" value="1" />
+ <ctl name="WSA_CDC_DMA_RX_0 Audio Mixer MultiMedia31" value="1" />
+ </path>
+
+ <path name="audio-with-haptics-playback speaker-bt-sco-swb-and-haptics">
+ <ctl name="RX_CDC_DMA_RX_6 Audio Mixer MultiMedia32" value="1"/>
+ <ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia31" value="1" />
+ <ctl name="WSA_CDC_DMA_RX_0 Audio Mixer MultiMedia31" value="1" />
+ </path>
+
+ <path name="audio-with-haptics-playback speaker-safe-bt-sco-swb-and-haptics">
+ <ctl name="RX_CDC_DMA_RX_6 Audio Mixer MultiMedia32" value="1"/>
+ <ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia31" value="1" />
+ <ctl name="WSA_CDC_DMA_RX_0 Audio Mixer MultiMedia31" value="1" />
+ </path>
+
<!-- These are actual sound device specific mixer settings -->
<path name="amic1">
<ctl name="TX DEC1 MUX" value="SWR_MIC" />
@@ -2598,6 +2671,11 @@
<path name="speaker" />
</path>
+ <path name="speaker-headphones-and-haptics">
+ <path name="headphones" />
+ <path name="speaker-and-haptics" />
+ </path>
+
<path name="speaker-and-headphones-hifi-filter">
<path name="headphones" />
<path name="speaker" />
@@ -2638,6 +2716,11 @@
<path name="usb-headphones" />
</path>
+ <path name="speaker-usb-headphones-and-haptics">
+ <path name="speaker-and-haptics" />
+ <path name="usb-headphones" />
+ </path>
+
<path name="speaker-safe-and-usb-headphones">
<path name="speaker-safe" />
<path name="usb-headphones" />
diff --git a/configs/lahaina/mixer_paths_qrd.xml b/configs/lahaina/mixer_paths_qrd.xml
index e03ba15..8ef7fae 100644
--- a/configs/lahaina/mixer_paths_qrd.xml
+++ b/configs/lahaina/mixer_paths_qrd.xml
@@ -246,8 +246,8 @@
<!-- RT Proxy Cal end -->
<!-- Incall Recording -->
- <ctl name="MultiMedia1 Mixer VOC_REC_UL" value="0" />
- <ctl name="MultiMedia1 Mixer VOC_REC_DL" value="0" />
+ <ctl name="MultiMedia9 Mixer VOC_REC_UL" value="0" />
+ <ctl name="MultiMedia9 Mixer VOC_REC_DL" value="0" />
<ctl name="MultiMedia8 Mixer VOC_REC_UL" value="0" />
<ctl name="MultiMedia8 Mixer VOC_REC_DL" value="0" />
<!-- Incall Recording End -->
@@ -1836,7 +1836,7 @@
</path>
<path name="incall-rec-uplink">
- <ctl name="MultiMedia1 Mixer VOC_REC_UL" value="1" />
+ <ctl name="MultiMedia9 Mixer VOC_REC_UL" value="1" />
</path>
<path name="incall-rec-uplink bt-sco">
@@ -1896,7 +1896,7 @@
</path>
<path name="incall-rec-downlink">
- <ctl name="MultiMedia1 Mixer VOC_REC_DL" value="1" />
+ <ctl name="MultiMedia9 Mixer VOC_REC_DL" value="1" />
</path>
<path name="incall-rec-downlink bt-sco">
@@ -2326,6 +2326,78 @@
<ctl name="RX_CDC_DMA_RX_0 Audio Mixer MultiMedia31" value="1" />
</path>
+ <path name="audio-with-haptics-playback speaker-headphones-and-haptics">
+ <ctl name="RX_CDC_DMA_RX_6 Audio Mixer MultiMedia32" value="1"/>
+ <ctl name="RX_CDC_DMA_RX_0 Audio Mixer MultiMedia31" value="1" />
+ <ctl name="WSA_CDC_DMA_RX_0 Audio Mixer MultiMedia31" value="1" />
+ </path>
+
+ <path name="audio-with-haptics-playback speaker-saefe-headphones-and-haptics">
+ <ctl name="RX_CDC_DMA_RX_6 Audio Mixer MultiMedia32" value="1"/>
+ <ctl name="RX_CDC_DMA_RX_0 Audio Mixer MultiMedia31" value="1" />
+ <ctl name="WSA_CDC_DMA_RX_0 Audio Mixer MultiMedia31" value="1" />
+ </path>
+
+ <path name="audio-with-haptics-playback speaker-usb-headphones-and-haptics">
+ <ctl name="RX_CDC_DMA_RX_6 Audio Mixer MultiMedia32" value="1"/>
+ <ctl name="WSA_CDC_DMA_RX_0 Audio Mixer MultiMedia31" value="1" />
+ <ctl name="USB_AUDIO_RX Audio Mixer MultiMedia31" value="1" />
+ </path>
+
+ <path name="audio-with-haptics-playback speaker-safe-usb-headphones-and-haptics">
+ <ctl name="RX_CDC_DMA_RX_6 Audio Mixer MultiMedia32" value="1"/>
+ <ctl name="WSA_CDC_DMA_RX_0 Audio Mixer MultiMedia31" value="1" />
+ <ctl name="USB_AUDIO_RX Audio Mixer MultiMedia31" value="1" />
+ </path>
+
+ <path name="audio-with-haptics-playback speaker-bt-a2dp-and-haptics">
+ <ctl name="RX_CDC_DMA_RX_6 Audio Mixer MultiMedia32" value="1"/>
+ <ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia31" value="1" />
+ <ctl name="WSA_CDC_DMA_RX_0 Audio Mixer MultiMedia31" value="1" />
+ </path>
+
+ <path name="audio-with-haptics-playback speaker-safe-bt-a2dp-and-haptics">
+ <ctl name="RX_CDC_DMA_RX_6 Audio Mixer MultiMedia32" value="1"/>
+ <ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia31" value="1" />
+ <ctl name="WSA_CDC_DMA_RX_0 Audio Mixer MultiMedia31" value="1" />
+ </path>
+
+ <path name="audio-with-haptics-playback speaker-bt-sco-and-haptics">
+ <ctl name="RX_CDC_DMA_RX_6 Audio Mixer MultiMedia32" value="1"/>
+ <ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia31" value="1" />
+ <ctl name="WSA_CDC_DMA_RX_0 Audio Mixer MultiMedia31" value="1" />
+ </path>
+
+ <path name="audio-with-haptics-playback speaker-safe-bt-sco-and-haptics">
+ <ctl name="RX_CDC_DMA_RX_6 Audio Mixer MultiMedia32" value="1"/>
+ <ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia31" value="1" />
+ <ctl name="WSA_CDC_DMA_RX_0 Audio Mixer MultiMedia31" value="1" />
+ </path>
+
+ <path name="audio-with-haptics-playback speaker-bt-sco-wb-and-haptics">
+ <ctl name="RX_CDC_DMA_RX_6 Audio Mixer MultiMedia32" value="1"/>
+ <ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia31" value="1" />
+ <ctl name="WSA_CDC_DMA_RX_0 Audio Mixer MultiMedia31" value="1" />
+ </path>
+
+ <path name="audio-with-haptics-playback speaker-safe-bt-sco-wb-and-haptics">
+ <ctl name="RX_CDC_DMA_RX_6 Audio Mixer MultiMedia32" value="1"/>
+ <ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia31" value="1" />
+ <ctl name="WSA_CDC_DMA_RX_0 Audio Mixer MultiMedia31" value="1" />
+ </path>
+
+ <path name="audio-with-haptics-playback speaker-bt-sco-swb-and-haptics">
+ <ctl name="RX_CDC_DMA_RX_6 Audio Mixer MultiMedia32" value="1"/>
+ <ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia31" value="1" />
+ <ctl name="WSA_CDC_DMA_RX_0 Audio Mixer MultiMedia31" value="1" />
+ </path>
+
+ <path name="audio-with-haptics-playback speaker-safe-bt-sco-swb-and-haptics">
+ <ctl name="RX_CDC_DMA_RX_6 Audio Mixer MultiMedia32" value="1"/>
+ <ctl name="SLIMBUS_7_RX Audio Mixer MultiMedia31" value="1" />
+ <ctl name="WSA_CDC_DMA_RX_0 Audio Mixer MultiMedia31" value="1" />
+ </path>
+
<!-- These are actual sound device specific mixer settings -->
<path name="amic1">
<ctl name="TX DEC2 MUX" value="SWR_MIC" />
@@ -2721,6 +2793,11 @@
<path name="speaker" />
</path>
+ <path name="speaker-headphones-and-haptics">
+ <path name="headphones" />
+ <path name="speaker-and-haptics" />
+ </path>
+
<path name="speaker-and-headphones-hifi-filter">
<path name="headphones" />
<path name="speaker" />
@@ -2770,6 +2847,11 @@
<path name="usb-headphones" />
</path>
+ <path name="speaker-usb-headphones-and-haptics">
+ <path name="speaker-and-haptics" />
+ <path name="usb-headphones" />
+ </path>
+
<path name="speaker-safe-and-usb-headphones">
<path name="speaker-safe" />
<path name="usb-headphones" />
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/spkr_protection.c b/hal/audio_extn/spkr_protection.c
index ad77b10..8af4d80 100644
--- a/hal/audio_extn/spkr_protection.c
+++ b/hal/audio_extn/spkr_protection.c
@@ -461,7 +461,6 @@
}
if (handle.spkr_in_use) {
*sec = 0;
- handle.trigger_cal = false;
return true;
} else {
clock_gettime(CLOCK_BOOTTIME, &temp);
diff --git a/hal/audio_extn/utils.c b/hal/audio_extn/utils.c
index a888a07..2653564 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,
diff --git a/hal/audio_hw.c b/hal/audio_hw.c
index 5f53431..8aaab92 100644
--- a/hal/audio_hw.c
+++ b/hal/audio_hw.c
@@ -6026,8 +6026,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) {
diff --git a/hal/msm8974/platform.c b/hal/msm8974/platform.c
index 2f675ea..68fcbd4 100644
--- a/hal/msm8974/platform.c
+++ b/hal/msm8974/platform.c
@@ -540,6 +540,7 @@
[SND_DEVICE_OUT_SPEAKER_SAFE_AND_HEADPHONES] = "speaker-safe-and-headphones",
[SND_DEVICE_OUT_SPEAKER_AND_LINE] = "speaker-and-line",
[SND_DEVICE_OUT_SPEAKER_SAFE_AND_LINE] = "speaker-safe-and-line",
+ [SND_DEVICE_OUT_SPEAKER_HEADPHONES_AND_HAPTICS] = "speaker-headphones-and-haptics",
[SND_DEVICE_OUT_SPEAKER_AND_HEADPHONES_EXTERNAL_1] = "speaker-and-headphones-ext-1",
[SND_DEVICE_OUT_SPEAKER_AND_HEADPHONES_EXTERNAL_2] = "speaker-and-headphones-ext-2",
[SND_DEVICE_OUT_VOICE_HANDSET] = "voice-handset",
@@ -566,6 +567,8 @@
[SND_DEVICE_OUT_BT_A2DP] = "bt-a2dp",
[SND_DEVICE_OUT_SPEAKER_AND_BT_A2DP] = "speaker-and-bt-a2dp",
[SND_DEVICE_OUT_SPEAKER_SAFE_AND_BT_A2DP] = "speaker-safe-and-bt-a2dp",
+ [SND_DEVICE_OUT_SPEAKER_BT_A2DP_AND_HAPTICS] = "speaker-bt-a2dp-and-haptics",
+ [SND_DEVICE_OUT_SPEAKER_SAFE_BT_A2DP_AND_HAPTICS] = "speaker-safe-bt-a2dp-and-haptics",
[SND_DEVICE_OUT_VOICE_HANDSET_TMUS] = "voice-handset-tmus",
[SND_DEVICE_OUT_VOICE_TTY_FULL_HEADPHONES] = "voice-tty-full-headphones",
[SND_DEVICE_OUT_VOICE_TTY_FULL_HEADSET] = "voice-tty-full-headset",
@@ -583,6 +586,8 @@
[SND_DEVICE_OUT_VOICE_USB_HEADPHONES] = "usb-headphones",
[SND_DEVICE_OUT_SPEAKER_AND_USB_HEADSET] = "speaker-and-usb-headphones",
[SND_DEVICE_OUT_SPEAKER_SAFE_AND_USB_HEADSET] = "speaker-safe-and-usb-headphones",
+ [SND_DEVICE_OUT_SPEAKER_USB_HEADSET_AND_HAPTICS] = "speaker-usb-headphones-and-haptics",
+ [SND_DEVICE_OUT_SPEAKER_SAFE_USB_HEADSET_AND_HAPTICS] = "speaker-safe-usb-headphones-and-haptics",
[SND_DEVICE_OUT_TRANSMISSION_FM] = "transmission-fm",
[SND_DEVICE_OUT_ANC_HEADSET] = "anc-headphones",
[SND_DEVICE_OUT_ANC_FB_HEADSET] = "anc-fb-headphones",
@@ -613,6 +618,12 @@
[SND_DEVICE_OUT_SPEAKER_AND_BT_SCO_SWB] = "speaker-and-bt-sco-swb",
[SND_DEVICE_OUT_SPEAKER_SAFE_AND_BT_SCO_WB] = "speaker-safe-and-bt-sco-wb",
[SND_DEVICE_OUT_SPEAKER_SAFE_AND_BT_SCO_SWB] = "speaker-safe-and-bt-sco-swb",
+ [SND_DEVICE_OUT_SPEAKER_BT_SCO_AND_HAPTICS] = "speaker-bt-sco-and-haptics",
+ [SND_DEVICE_OUT_SPEAKER_SAFE_BT_SCO_AND_HAPTICS] = "speaker-safe-bt-sco-and-haptics",
+ [SND_DEVICE_OUT_SPEAKER_BT_SCO_WB_AND_HAPTICS] = "speaker-bt-sco-wb-and-haptics",
+ [SND_DEVICE_OUT_SPEAKER_BT_SCO_SWB_AND_HAPTICS] = "speaker-bt-sco-swb-and-haptics",
+ [SND_DEVICE_OUT_SPEAKER_SAFE_BT_SCO_WB_AND_HAPTICS] = "speaker-safe-bt-sco-wb-and-haptics",
+ [SND_DEVICE_OUT_SPEAKER_SAFE_BT_SCO_SWB_AND_HAPTICS] = "speaker-safe-bt-sco-swb-and-haptics",
[SND_DEVICE_OUT_SPEAKER_WSA_AND_BT_SCO] = "wsa-speaker-and-bt-sco",
[SND_DEVICE_OUT_SPEAKER_WSA_AND_BT_SCO_WB] = "wsa-speaker-and-bt-sco-wb",
[SND_DEVICE_OUT_SPEAKER_WSA_AND_BT_SCO_SWB] = "wsa-speaker-and-bt-sco-wb",
@@ -835,6 +846,8 @@
[SND_DEVICE_OUT_SPEAKER_AND_HAPTICS] = 10,
[SND_DEVICE_OUT_SPEAKER_AND_HEADPHONES] = 10,
[SND_DEVICE_OUT_SPEAKER_SAFE_AND_HEADPHONES] = 10,
+ [SND_DEVICE_OUT_SPEAKER_HEADPHONES_AND_HAPTICS] = 10,
+ [SND_DEVICE_OUT_SPEAKER_SAFE_HEADPHONES_AND_HAPTICS] = 10,
[SND_DEVICE_OUT_SPEAKER_AND_LINE] = 10,
[SND_DEVICE_OUT_SPEAKER_SAFE_AND_LINE] = 10,
[SND_DEVICE_OUT_SPEAKER_AND_HEADPHONES_EXTERNAL_1] = 130,
@@ -863,15 +876,22 @@
[SND_DEVICE_OUT_DISPLAY_PORT1] = 18,
[SND_DEVICE_OUT_SPEAKER_AND_DISPLAY_PORT] = 14,
[SND_DEVICE_OUT_SPEAKER_AND_DISPLAY_PORT1] = 14,
+ [SND_DEVICE_OUT_SPEAKER_DISPLAY_PORT_AND_HAPTICS] = 14,
+ [SND_DEVICE_OUT_SPEAKER_DISPLAY_PORT1_AND_HAPTICS] = 14,
[SND_DEVICE_OUT_BT_SCO] = 22,
[SND_DEVICE_OUT_SPEAKER_SAFE_AND_BT_SCO] = 14,
+ [SND_DEVICE_OUT_SPEAKER_SAFE_BT_SCO_AND_HAPTICS] = 14,
[SND_DEVICE_OUT_BT_SCO_WB] = 39,
[SND_DEVICE_OUT_BT_SCO_SWB] = 39,
[SND_DEVICE_OUT_SPEAKER_SAFE_AND_BT_SCO_WB] = 14,
[SND_DEVICE_OUT_SPEAKER_SAFE_AND_BT_SCO_SWB] = 14,
+ [SND_DEVICE_OUT_SPEAKER_SAFE_BT_SCO_WB_AND_HAPTICS] = 14,
+ [SND_DEVICE_OUT_SPEAKER_SAFE_BT_SCO_SWB_AND_HAPTICS] = 14,
[SND_DEVICE_OUT_BT_A2DP] = 20,
[SND_DEVICE_OUT_SPEAKER_AND_BT_A2DP] = 14,
[SND_DEVICE_OUT_SPEAKER_SAFE_AND_BT_A2DP] = 14,
+ [SND_DEVICE_OUT_SPEAKER_BT_A2DP_AND_HAPTICS] = 14,
+ [SND_DEVICE_OUT_SPEAKER_SAFE_BT_A2DP_AND_HAPTICS] = 14,
[SND_DEVICE_OUT_VOICE_HANDSET_TMUS] = 88,
[SND_DEVICE_OUT_VOICE_TTY_FULL_HEADPHONES] = 17,
[SND_DEVICE_OUT_VOICE_TTY_FULL_HEADSET] = 17,
@@ -889,6 +909,8 @@
[SND_DEVICE_OUT_VOICE_USB_HEADPHONES] = 45,
[SND_DEVICE_OUT_SPEAKER_AND_USB_HEADSET] = 14,
[SND_DEVICE_OUT_SPEAKER_SAFE_AND_USB_HEADSET] = 14,
+ [SND_DEVICE_OUT_SPEAKER_USB_HEADSET_AND_HAPTICS] = 14,
+ [SND_DEVICE_OUT_SPEAKER_SAFE_USB_HEADSET_AND_HAPTICS] = 14,
[SND_DEVICE_OUT_TRANSMISSION_FM] = 0,
[SND_DEVICE_OUT_ANC_HEADSET] = 26,
[SND_DEVICE_OUT_ANC_FB_HEADSET] = 27,
@@ -1085,6 +1107,8 @@
{TO_NAME_INDEX(SND_DEVICE_OUT_HEADPHONES_AND_HAPTICS)},
{TO_NAME_INDEX(SND_DEVICE_OUT_SPEAKER_AND_HEADPHONES)},
{TO_NAME_INDEX(SND_DEVICE_OUT_SPEAKER_SAFE_AND_HEADPHONES)},
+ {TO_NAME_INDEX(SND_DEVICE_OUT_SPEAKER_HEADPHONES_AND_HAPTICS)},
+ {TO_NAME_INDEX(SND_DEVICE_OUT_SPEAKER_SAFE_HEADPHONES_AND_HAPTICS)},
{TO_NAME_INDEX(SND_DEVICE_OUT_SPEAKER_AND_LINE)},
{TO_NAME_INDEX(SND_DEVICE_OUT_SPEAKER_SAFE_AND_LINE)},
{TO_NAME_INDEX(SND_DEVICE_OUT_SPEAKER_AND_HEADPHONES_EXTERNAL_1)},
@@ -1106,15 +1130,20 @@
{TO_NAME_INDEX(SND_DEVICE_OUT_DISPLAY_PORT)},
{TO_NAME_INDEX(SND_DEVICE_OUT_DISPLAY_PORT1)},
{TO_NAME_INDEX(SND_DEVICE_OUT_SPEAKER_AND_DISPLAY_PORT)},
+ {TO_NAME_INDEX(SND_DEVICE_OUT_SPEAKER_DISPLAY_PORT_AND_HAPTICS)},
{TO_NAME_INDEX(SND_DEVICE_OUT_BT_SCO)},
{TO_NAME_INDEX(SND_DEVICE_OUT_SPEAKER_SAFE_AND_BT_SCO)},
+ {TO_NAME_INDEX(SND_DEVICE_OUT_SPEAKER_SAFE_BT_SCO_AND_HAPTICS)},
{TO_NAME_INDEX(SND_DEVICE_OUT_BT_SCO_WB)},
{TO_NAME_INDEX(SND_DEVICE_OUT_BT_SCO_SWB)},
{TO_NAME_INDEX(SND_DEVICE_OUT_SPEAKER_SAFE_AND_BT_SCO_WB)},
- {TO_NAME_INDEX(SND_DEVICE_OUT_SPEAKER_SAFE_AND_BT_SCO_SWB)},
+ {TO_NAME_INDEX(SND_DEVICE_OUT_SPEAKER_SAFE_BT_SCO_WB_AND_HAPTICS)},
+ {TO_NAME_INDEX(SND_DEVICE_OUT_SPEAKER_SAFE_BT_SCO_SWB_AND_HAPTICS)},
{TO_NAME_INDEX(SND_DEVICE_OUT_BT_A2DP)},
{TO_NAME_INDEX(SND_DEVICE_OUT_SPEAKER_AND_BT_A2DP)},
{TO_NAME_INDEX(SND_DEVICE_OUT_SPEAKER_SAFE_AND_BT_A2DP)},
+ {TO_NAME_INDEX(SND_DEVICE_OUT_SPEAKER_BT_A2DP_AND_HAPTICS)},
+ {TO_NAME_INDEX(SND_DEVICE_OUT_SPEAKER_SAFE_BT_A2DP_AND_HAPTICS)},
{TO_NAME_INDEX(SND_DEVICE_OUT_VOICE_HANDSET_TMUS)},
{TO_NAME_INDEX(SND_DEVICE_OUT_VOICE_HAC_HANDSET)},
{TO_NAME_INDEX(SND_DEVICE_OUT_VOICE_TTY_FULL_HEADPHONES)},
@@ -1127,6 +1156,9 @@
{TO_NAME_INDEX(SND_DEVICE_OUT_SPEAKER_WSA_AND_BT_SCO)},
{TO_NAME_INDEX(SND_DEVICE_OUT_SPEAKER_WSA_AND_BT_SCO_WB)},
{TO_NAME_INDEX(SND_DEVICE_OUT_SPEAKER_WSA_AND_BT_SCO_SWB)},
+ {TO_NAME_INDEX(SND_DEVICE_OUT_SPEAKER_BT_SCO_AND_HAPTICS)},
+ {TO_NAME_INDEX(SND_DEVICE_OUT_SPEAKER_BT_SCO_WB_AND_HAPTICS)},
+ {TO_NAME_INDEX(SND_DEVICE_OUT_SPEAKER_BT_SCO_SWB_AND_HAPTICS)},
{TO_NAME_INDEX(SND_DEVICE_OUT_VOICE_TTY_FULL_USB)},
{TO_NAME_INDEX(SND_DEVICE_OUT_VOICE_TTY_VCO_USB)},
{TO_NAME_INDEX(SND_DEVICE_OUT_VOICE_TX)},
@@ -1137,6 +1169,8 @@
{TO_NAME_INDEX(SND_DEVICE_OUT_VOICE_USB_HEADPHONES)},
{TO_NAME_INDEX(SND_DEVICE_OUT_SPEAKER_AND_USB_HEADSET)},
{TO_NAME_INDEX(SND_DEVICE_OUT_SPEAKER_SAFE_AND_USB_HEADSET)},
+ {TO_NAME_INDEX(SND_DEVICE_OUT_SPEAKER_USB_HEADSET_AND_HAPTICS)},
+ {TO_NAME_INDEX(SND_DEVICE_OUT_SPEAKER_SAFE_USB_HEADSET_AND_HAPTICS)},
{TO_NAME_INDEX(SND_DEVICE_OUT_USB_HEADSET_SPEC)},
{TO_NAME_INDEX(SND_DEVICE_OUT_TRANSMISSION_FM)},
{TO_NAME_INDEX(SND_DEVICE_OUT_ANC_HEADSET)},
@@ -5801,6 +5835,12 @@
new_snd_devices[0] = SND_DEVICE_OUT_SPEAKER;
new_snd_devices[1] = SND_DEVICE_OUT_HEADPHONES;
ret = 0;
+ } else if (snd_device == SND_DEVICE_OUT_SPEAKER_HEADPHONES_AND_HAPTICS &&
+ !platform_check_backends_match(SND_DEVICE_OUT_SPEAKER, SND_DEVICE_OUT_HEADPHONES)) {
+ *num_devices = 2;
+ new_snd_devices[0] = SND_DEVICE_OUT_SPEAKER_AND_HAPTICS;
+ new_snd_devices[1] = SND_DEVICE_OUT_HEADPHONES;
+ ret = 0;
} else if (snd_device == SND_DEVICE_OUT_SPEAKER_AND_LINE &&
!platform_check_backends_match(SND_DEVICE_OUT_SPEAKER, SND_DEVICE_OUT_LINE)) {
*num_devices = 2;
@@ -5813,6 +5853,12 @@
new_snd_devices[0] = SND_DEVICE_OUT_SPEAKER_SAFE;
new_snd_devices[1] = SND_DEVICE_OUT_HEADPHONES;
ret = 0;
+ } else if (snd_device == SND_DEVICE_OUT_SPEAKER_SAFE_HEADPHONES_AND_HAPTICS &&
+ !platform_check_backends_match(SND_DEVICE_OUT_SPEAKER_SAFE, SND_DEVICE_OUT_HEADPHONES)) {
+ *num_devices = 2;
+ new_snd_devices[0] = SND_DEVICE_OUT_SPEAKER_SAFE_AND_HAPTICS;
+ new_snd_devices[1] = SND_DEVICE_OUT_HEADPHONES;
+ ret = 0;
} else if (snd_device == SND_DEVICE_OUT_SPEAKER_SAFE_AND_LINE &&
!platform_check_backends_match(SND_DEVICE_OUT_SPEAKER_SAFE, SND_DEVICE_OUT_LINE)) {
*num_devices = 2;
@@ -5907,6 +5953,12 @@
new_snd_devices[0] = SND_DEVICE_OUT_SPEAKER;
new_snd_devices[1] = SND_DEVICE_OUT_USB_HEADSET;
ret = 0;
+ } else if (snd_device == SND_DEVICE_OUT_SPEAKER_USB_HEADSET_AND_HAPTICS &&
+ !platform_check_backends_match(SND_DEVICE_OUT_SPEAKER, SND_DEVICE_OUT_USB_HEADSET)) {
+ *num_devices = 2;
+ new_snd_devices[0] = SND_DEVICE_OUT_SPEAKER_AND_HAPTICS;
+ new_snd_devices[1] = SND_DEVICE_OUT_USB_HEADSET;
+ ret = 0;
} else if (snd_device == SND_DEVICE_OUT_SPEAKER_AND_HEADPHONES_HIFI_FILTER &&
!platform_check_backends_match(SND_DEVICE_OUT_SPEAKER, SND_DEVICE_OUT_HEADPHONES_HIFI_FILTER)) {
*num_devices = 2;
@@ -5919,6 +5971,12 @@
new_snd_devices[0] = SND_DEVICE_OUT_SPEAKER;
new_snd_devices[1] = SND_DEVICE_OUT_BT_SCO;
ret = 0;
+ } else if (snd_device == SND_DEVICE_OUT_SPEAKER_BT_SCO_AND_HAPTICS &&
+ !platform_check_backends_match(SND_DEVICE_OUT_SPEAKER, SND_DEVICE_OUT_BT_SCO)) {
+ *num_devices = 2;
+ new_snd_devices[0] = SND_DEVICE_OUT_SPEAKER_AND_HAPTICS;
+ new_snd_devices[1] = SND_DEVICE_OUT_BT_SCO;
+ ret = 0;
} else if (snd_device == SND_DEVICE_OUT_SPEAKER_SAFE_AND_BT_SCO &&
!platform_check_backends_match(SND_DEVICE_OUT_SPEAKER_SAFE,
SND_DEVICE_OUT_BT_SCO)) {
@@ -5926,12 +5984,31 @@
new_snd_devices[0] = SND_DEVICE_OUT_SPEAKER_SAFE;
new_snd_devices[1] = SND_DEVICE_OUT_BT_SCO;
ret = 0;
+ } else if (snd_device == SND_DEVICE_OUT_SPEAKER_SAFE_BT_SCO_AND_HAPTICS &&
+ !platform_check_backends_match(SND_DEVICE_OUT_SPEAKER_SAFE,
+ SND_DEVICE_OUT_BT_SCO)) {
+ *num_devices = 2;
+ new_snd_devices[0] = SND_DEVICE_OUT_SPEAKER_SAFE_AND_HAPTICS;
+ new_snd_devices[1] = SND_DEVICE_OUT_BT_SCO;
+ ret = 0;
+ } else if (snd_device == SND_DEVICE_OUT_SPEAKER_BT_SCO_WB_AND_HAPTICS &&
+ !platform_check_backends_match(SND_DEVICE_OUT_SPEAKER, SND_DEVICE_OUT_BT_SCO_WB)) {
+ *num_devices = 2;
+ new_snd_devices[0] = SND_DEVICE_OUT_SPEAKER_AND_HAPTICS;
+ new_snd_devices[1] = SND_DEVICE_OUT_BT_SCO_WB;
+ ret = 0;
} else if (snd_device == SND_DEVICE_OUT_SPEAKER_AND_BT_SCO_WB &&
!platform_check_backends_match(SND_DEVICE_OUT_SPEAKER, SND_DEVICE_OUT_BT_SCO_WB)) {
*num_devices = 2;
new_snd_devices[0] = SND_DEVICE_OUT_SPEAKER;
new_snd_devices[1] = SND_DEVICE_OUT_BT_SCO_WB;
ret = 0;
+ } else if (snd_device == SND_DEVICE_OUT_SPEAKER_BT_SCO_WB_AND_HAPTICS &&
+ !platform_check_backends_match(SND_DEVICE_OUT_SPEAKER, SND_DEVICE_OUT_BT_SCO_WB)) {
+ *num_devices = 2;
+ new_snd_devices[0] = SND_DEVICE_OUT_SPEAKER_AND_HAPTICS;
+ new_snd_devices[1] = SND_DEVICE_OUT_BT_SCO_WB;
+ ret = 0;
} else if (snd_device == SND_DEVICE_OUT_SPEAKER_SAFE_AND_BT_SCO_WB &&
!platform_check_backends_match(SND_DEVICE_OUT_SPEAKER_SAFE,
SND_DEVICE_OUT_BT_SCO_WB)) {
@@ -5945,6 +6022,12 @@
new_snd_devices[0] = SND_DEVICE_OUT_SPEAKER;
new_snd_devices[1] = SND_DEVICE_OUT_BT_SCO_SWB;
ret = 0;
+ } else if (snd_device == SND_DEVICE_OUT_SPEAKER_BT_SCO_SWB_AND_HAPTICS &&
+ !platform_check_backends_match(SND_DEVICE_OUT_SPEAKER, SND_DEVICE_OUT_BT_SCO_SWB)) {
+ *num_devices = 2;
+ new_snd_devices[0] = SND_DEVICE_OUT_SPEAKER_AND_HAPTICS;
+ new_snd_devices[1] = SND_DEVICE_OUT_BT_SCO_SWB;
+ ret = 0;
} else if (snd_device == SND_DEVICE_OUT_SPEAKER_SAFE_AND_BT_SCO_SWB &&
!platform_check_backends_match(SND_DEVICE_OUT_SPEAKER_SAFE,
SND_DEVICE_OUT_BT_SCO_SWB)) {
@@ -5952,12 +6035,25 @@
new_snd_devices[0] = SND_DEVICE_OUT_SPEAKER_SAFE;
new_snd_devices[1] = SND_DEVICE_OUT_BT_SCO_SWB;
ret = 0;
+ } else if (snd_device == SND_DEVICE_OUT_SPEAKER_SAFE_BT_SCO_SWB_AND_HAPTICS &&
+ !platform_check_backends_match(SND_DEVICE_OUT_SPEAKER_SAFE,
+ SND_DEVICE_OUT_BT_SCO_SWB)) {
+ *num_devices = 2;
+ new_snd_devices[0] = SND_DEVICE_OUT_SPEAKER_SAFE_AND_HAPTICS;
+ new_snd_devices[1] = SND_DEVICE_OUT_BT_SCO_SWB;
+ ret = 0;
} else if (snd_device == SND_DEVICE_OUT_SPEAKER_SAFE_AND_USB_HEADSET &&
!platform_check_backends_match(SND_DEVICE_OUT_SPEAKER_SAFE, SND_DEVICE_OUT_USB_HEADSET)) {
*num_devices = 2;
new_snd_devices[0] = SND_DEVICE_OUT_SPEAKER_SAFE;
new_snd_devices[1] = SND_DEVICE_OUT_USB_HEADSET;
ret = 0;
+ } else if (snd_device == SND_DEVICE_OUT_SPEAKER_SAFE_USB_HEADSET_AND_HAPTICS &&
+ !platform_check_backends_match(SND_DEVICE_OUT_SPEAKER_SAFE, SND_DEVICE_OUT_USB_HEADSET)) {
+ *num_devices = 2;
+ new_snd_devices[0] = SND_DEVICE_OUT_SPEAKER_SAFE_AND_HAPTICS;
+ new_snd_devices[1] = SND_DEVICE_OUT_USB_HEADSET;
+ ret = 0;
} else if (snd_device == SND_DEVICE_OUT_SPEAKER_WSA_AND_BT_SCO &&
!platform_check_backends_match(SND_DEVICE_OUT_SPEAKER_WSA, SND_DEVICE_OUT_BT_SCO)) {
*num_devices = 2;
@@ -5970,12 +6066,16 @@
new_snd_devices[0] = SND_DEVICE_OUT_SPEAKER_WSA;
new_snd_devices[1] = SND_DEVICE_OUT_BT_SCO_WB;
ret = 0;
- }
-else if (SND_DEVICE_OUT_SPEAKER_AND_BT_A2DP == snd_device) {
+ } else if (SND_DEVICE_OUT_SPEAKER_AND_BT_A2DP == snd_device) {
*num_devices = 2;
new_snd_devices[0] = SND_DEVICE_OUT_SPEAKER;
new_snd_devices[1] = SND_DEVICE_OUT_BT_A2DP;
ret = 0;
+ } else if (SND_DEVICE_OUT_SPEAKER_BT_A2DP_AND_HAPTICS == snd_device) {
+ *num_devices = 2;
+ new_snd_devices[0] = SND_DEVICE_OUT_SPEAKER_AND_HAPTICS;
+ new_snd_devices[1] = SND_DEVICE_OUT_BT_A2DP;
+ ret = 0;
} else if (SND_DEVICE_OUT_SPEAKER_SAFE_AND_BT_A2DP == snd_device &&
!platform_check_backends_match(SND_DEVICE_OUT_SPEAKER_SAFE,
SND_DEVICE_OUT_BT_A2DP)) {
@@ -5983,6 +6083,13 @@
new_snd_devices[0] = SND_DEVICE_OUT_SPEAKER_SAFE;
new_snd_devices[1] = SND_DEVICE_OUT_BT_A2DP;
ret = 0;
+ } else if (SND_DEVICE_OUT_SPEAKER_SAFE_BT_A2DP_AND_HAPTICS == snd_device &&
+ !platform_check_backends_match(SND_DEVICE_OUT_SPEAKER_SAFE,
+ SND_DEVICE_OUT_BT_A2DP)) {
+ *num_devices = 2;
+ new_snd_devices[0] = SND_DEVICE_OUT_SPEAKER_SAFE_AND_HAPTICS;
+ new_snd_devices[1] = SND_DEVICE_OUT_BT_A2DP;
+ ret = 0;
} else if (SND_DEVICE_IN_INCALL_REC_RX_TX == snd_device) {
*num_devices = 2;
new_snd_devices[0] = SND_DEVICE_IN_INCALL_REC_RX;
@@ -6227,6 +6334,8 @@
else if (audio_extn_is_hifi_filter_enabled(adev, out, snd_device,
my_data->codec_variant, channel_count, 1))
snd_device = SND_DEVICE_OUT_SPEAKER_AND_HEADPHONES_HIFI_FILTER;
+ else if (out->usecase == USECASE_AUDIO_PLAYBACK_WITH_HAPTICS)
+ snd_device = SND_DEVICE_OUT_SPEAKER_HEADPHONES_AND_HAPTICS;
else
snd_device = SND_DEVICE_OUT_SPEAKER_AND_HEADPHONES;
} else if (compare_device_type(&devices, AUDIO_DEVICE_OUT_LINE) &&
@@ -6256,6 +6365,8 @@
else {
if (is_active_voice_call)
snd_device = SND_DEVICE_OUT_VOICE_SPEAKER_AND_VOICE_HEADPHONES;
+ else if (out->usecase == USECASE_AUDIO_PLAYBACK_WITH_HAPTICS)
+ snd_device = SND_DEVICE_OUT_SPEAKER_HEADPHONES_AND_HAPTICS;
else
snd_device = SND_DEVICE_OUT_SPEAKER_AND_HEADPHONES;
}
@@ -6287,18 +6398,30 @@
}
} else if (compare_device_type(&devices, AUDIO_DEVICE_OUT_ANLG_DOCK_HEADSET) &&
compare_device_type(&devices, AUDIO_DEVICE_OUT_SPEAKER)) {
- snd_device = SND_DEVICE_OUT_SPEAKER_AND_USB_HEADSET;
+ if (out->usecase == USECASE_AUDIO_PLAYBACK_WITH_HAPTICS)
+ snd_device = SND_DEVICE_OUT_SPEAKER_USB_HEADSET_AND_HAPTICS;
+ else
+ snd_device = SND_DEVICE_OUT_SPEAKER_AND_USB_HEADSET;
} else if ((compare_device_type(&devices, AUDIO_DEVICE_OUT_USB_DEVICE) &&
compare_device_type(&devices, AUDIO_DEVICE_OUT_SPEAKER)) ||
(compare_device_type(&devices, AUDIO_DEVICE_OUT_USB_HEADSET) &&
compare_device_type(&devices, AUDIO_DEVICE_OUT_SPEAKER))) {
- snd_device = SND_DEVICE_OUT_SPEAKER_AND_USB_HEADSET;
+ if (out->usecase == USECASE_AUDIO_PLAYBACK_WITH_HAPTICS)
+ snd_device = SND_DEVICE_OUT_SPEAKER_USB_HEADSET_AND_HAPTICS;
+ else
+ snd_device = SND_DEVICE_OUT_SPEAKER_AND_USB_HEADSET;
} else if (compare_device_type(&devices, AUDIO_DEVICE_OUT_SPEAKER) &&
is_a2dp_out_device_type(&devices)) {
- snd_device = SND_DEVICE_OUT_SPEAKER_AND_BT_A2DP;
+ if (out->usecase == USECASE_AUDIO_PLAYBACK_WITH_HAPTICS)
+ snd_device = SND_DEVICE_OUT_SPEAKER_BT_A2DP_AND_HAPTICS;
+ else
+ snd_device = SND_DEVICE_OUT_SPEAKER_AND_BT_A2DP;
} else if (compare_device_type(&devices, AUDIO_DEVICE_OUT_SPEAKER_SAFE) &&
is_a2dp_out_device_type(&devices)) {
- snd_device = SND_DEVICE_OUT_SPEAKER_SAFE_AND_BT_A2DP;
+ if (out->usecase == USECASE_AUDIO_PLAYBACK_WITH_HAPTICS)
+ snd_device = SND_DEVICE_OUT_SPEAKER_SAFE_BT_A2DP_AND_HAPTICS;
+ else
+ snd_device = SND_DEVICE_OUT_SPEAKER_SAFE_AND_BT_A2DP;
} else if (is_sco_out_device_type(&devices) &&
compare_device_type(&devices, AUDIO_DEVICE_OUT_SPEAKER)) {
if (my_data->is_wsa_speaker) {
@@ -6311,6 +6434,10 @@
} else {
if (adev->swb_speech_mode != SPEECH_MODE_INVALID)
snd_device = SND_DEVICE_OUT_SPEAKER_AND_BT_SCO_SWB;
+ else if (out->usecase == USECASE_AUDIO_PLAYBACK_WITH_HAPTICS)
+ snd_device = adev->bt_wb_speech_enabled ?
+ SND_DEVICE_OUT_SPEAKER_BT_SCO_SWB_AND_HAPTICS :
+ SND_DEVICE_OUT_SPEAKER_BT_SCO_AND_HAPTICS;
else
snd_device = adev->bt_wb_speech_enabled ?
SND_DEVICE_OUT_SPEAKER_AND_BT_SCO_WB :
@@ -6320,6 +6447,10 @@
compare_device_type(&devices, AUDIO_DEVICE_OUT_SPEAKER_SAFE)) {
if (adev->swb_speech_mode != SPEECH_MODE_INVALID)
snd_device = SND_DEVICE_OUT_SPEAKER_SAFE_AND_BT_SCO_SWB;
+ else if (out->usecase == USECASE_AUDIO_PLAYBACK_WITH_HAPTICS)
+ snd_device = adev->bt_wb_speech_enabled ?
+ SND_DEVICE_OUT_SPEAKER_SAFE_BT_SCO_SWB_AND_HAPTICS :
+ SND_DEVICE_OUT_SPEAKER_SAFE_BT_SCO_AND_HAPTICS;
else
snd_device = adev->bt_wb_speech_enabled ?
SND_DEVICE_OUT_SPEAKER_SAFE_AND_BT_SCO_WB :
@@ -6328,7 +6459,10 @@
compare_device_type(&devices, AUDIO_DEVICE_OUT_SPEAKER_SAFE)) ||
(compare_device_type(&devices, AUDIO_DEVICE_OUT_USB_HEADSET) &&
compare_device_type(&devices, AUDIO_DEVICE_OUT_SPEAKER_SAFE))) {
- snd_device = SND_DEVICE_OUT_SPEAKER_SAFE_AND_USB_HEADSET;
+ if (out->usecase == USECASE_AUDIO_PLAYBACK_WITH_HAPTICS)
+ snd_device = SND_DEVICE_OUT_SPEAKER_SAFE_USB_HEADSET_AND_HAPTICS;
+ else
+ snd_device = SND_DEVICE_OUT_SPEAKER_SAFE_AND_USB_HEADSET;
} else {
ALOGE("%s: Invalid combo device(%#x)", __func__, get_device_types(&devices));
goto exit;
diff --git a/hal/msm8974/platform.h b/hal/msm8974/platform.h
index 88c035b..9ac3316 100644
--- a/hal/msm8974/platform.h
+++ b/hal/msm8974/platform.h
@@ -74,9 +74,12 @@
SND_DEVICE_OUT_HEADPHONES_44_1,
SND_DEVICE_OUT_HEADPHONES_AND_HAPTICS,
SND_DEVICE_OUT_SPEAKER_AND_HAPTICS,
+ SND_DEVICE_OUT_SPEAKER_SAFE_AND_HAPTICS,
SND_DEVICE_OUT_SPEAKER_AND_HEADPHONES,
SND_DEVICE_OUT_SPEAKER_AND_HEADPHONES_HIFI_FILTER,
SND_DEVICE_OUT_SPEAKER_SAFE_AND_HEADPHONES,
+ SND_DEVICE_OUT_SPEAKER_HEADPHONES_AND_HAPTICS,
+ SND_DEVICE_OUT_SPEAKER_SAFE_HEADPHONES_AND_HAPTICS,
SND_DEVICE_OUT_SPEAKER_AND_LINE,
SND_DEVICE_OUT_SPEAKER_SAFE_AND_LINE,
SND_DEVICE_OUT_SPEAKER_AND_HEADPHONES_EXTERNAL_1,
@@ -96,12 +99,16 @@
SND_DEVICE_OUT_DISPLAY_PORT1,
SND_DEVICE_OUT_SPEAKER_AND_DISPLAY_PORT,
SND_DEVICE_OUT_SPEAKER_AND_DISPLAY_PORT1,
+ SND_DEVICE_OUT_SPEAKER_DISPLAY_PORT_AND_HAPTICS,
+ SND_DEVICE_OUT_SPEAKER_DISPLAY_PORT1_AND_HAPTICS,
SND_DEVICE_OUT_BT_SCO,
SND_DEVICE_OUT_BT_SCO_WB,
SND_DEVICE_OUT_BT_SCO_SWB,
SND_DEVICE_OUT_BT_A2DP,
SND_DEVICE_OUT_SPEAKER_AND_BT_A2DP,
SND_DEVICE_OUT_SPEAKER_SAFE_AND_BT_A2DP,
+ SND_DEVICE_OUT_SPEAKER_BT_A2DP_AND_HAPTICS,
+ SND_DEVICE_OUT_SPEAKER_SAFE_BT_A2DP_AND_HAPTICS,
SND_DEVICE_OUT_VOICE_HANDSET_TMUS,
SND_DEVICE_OUT_SPEAKER_AND_BT_SCO,
SND_DEVICE_OUT_SPEAKER_SAFE_AND_BT_SCO,
@@ -109,6 +116,12 @@
SND_DEVICE_OUT_SPEAKER_SAFE_AND_BT_SCO_WB,
SND_DEVICE_OUT_SPEAKER_AND_BT_SCO_SWB,
SND_DEVICE_OUT_SPEAKER_SAFE_AND_BT_SCO_SWB,
+ SND_DEVICE_OUT_SPEAKER_BT_SCO_AND_HAPTICS,
+ SND_DEVICE_OUT_SPEAKER_SAFE_BT_SCO_AND_HAPTICS,
+ SND_DEVICE_OUT_SPEAKER_BT_SCO_WB_AND_HAPTICS,
+ SND_DEVICE_OUT_SPEAKER_SAFE_BT_SCO_WB_AND_HAPTICS,
+ SND_DEVICE_OUT_SPEAKER_BT_SCO_SWB_AND_HAPTICS,
+ SND_DEVICE_OUT_SPEAKER_SAFE_BT_SCO_SWB_AND_HAPTICS,
SND_DEVICE_OUT_SPEAKER_WSA_AND_BT_SCO,
SND_DEVICE_OUT_SPEAKER_WSA_AND_BT_SCO_WB,
SND_DEVICE_OUT_SPEAKER_WSA_AND_BT_SCO_SWB,
@@ -128,6 +141,8 @@
SND_DEVICE_OUT_USB_HEADPHONES,
SND_DEVICE_OUT_SPEAKER_AND_USB_HEADSET,
SND_DEVICE_OUT_SPEAKER_SAFE_AND_USB_HEADSET,
+ SND_DEVICE_OUT_SPEAKER_USB_HEADSET_AND_HAPTICS,
+ SND_DEVICE_OUT_SPEAKER_SAFE_USB_HEADSET_AND_HAPTICS,
SND_DEVICE_OUT_VOICE_USB_HEADPHONES,
SND_DEVICE_OUT_VOICE_USB_HEADSET,
SND_DEVICE_OUT_USB_HEADSET_SPEC,