Merge "Revert "configs: Copy xml's to chipset specific sku folder""
diff --git a/configs/lahaina/lahaina.mk b/configs/lahaina/lahaina.mk
index a6504a8..04b0c9c 100644
--- a/configs/lahaina/lahaina.mk
+++ b/configs/lahaina/lahaina.mk
@@ -400,7 +400,8 @@
vendor.audio.feature.vbat.enable=true \
vendor.audio.feature.wsa.enable=false \
vendor.audio.feature.audiozoom.enable=false \
-vendor.audio.feature.snd_mon.enable=true
+vendor.audio.feature.snd_mon.enable=true \
+vendor.audio.feature.power_mode.enable=true
# for HIDL related packages
PRODUCT_PACKAGES += \
diff --git a/configs/lahaina/mixer_paths.xml b/configs/lahaina/mixer_paths.xml
index 85fca5f..63127d0 100644
--- a/configs/lahaina/mixer_paths.xml
+++ b/configs/lahaina/mixer_paths.xml
@@ -1771,7 +1771,7 @@
<ctl name="MultiMedia17 Mixer SLIM_7_TX" value="1" />
</path>
- <path name="audio-record-compress bt-sco-wb">
+ <path name="audio-record-compress2 bt-sco-wb">
<path name="audio-record-compress2 bt-sco" />
</path>
diff --git a/configs/lahaina/mixer_paths_cdp.xml b/configs/lahaina/mixer_paths_cdp.xml
index 51ea04a..f8e09ad 100644
--- a/configs/lahaina/mixer_paths_cdp.xml
+++ b/configs/lahaina/mixer_paths_cdp.xml
@@ -1643,7 +1643,7 @@
<ctl name="MultiMedia17 Mixer SLIM_7_TX" value="1" />
</path>
- <path name="audio-record-compress bt-sco-wb">
+ <path name="audio-record-compress2 bt-sco-wb">
<path name="audio-record-compress2 bt-sco" />
</path>
diff --git a/configs/lahaina/mixer_paths_qrd.xml b/configs/lahaina/mixer_paths_qrd.xml
index c953d75..e80ae22 100644
--- a/configs/lahaina/mixer_paths_qrd.xml
+++ b/configs/lahaina/mixer_paths_qrd.xml
@@ -1770,7 +1770,7 @@
<ctl name="MultiMedia17 Mixer SLIM_7_TX" value="1" />
</path>
- <path name="audio-record-compress bt-sco-wb">
+ <path name="audio-record-compress2 bt-sco-wb">
<path name="audio-record-compress2 bt-sco" />
</path>
diff --git a/configs/lito/audio_platform_info.xml b/configs/lito/audio_platform_info.xml
index 79d307e..dbdb29f 100644
--- a/configs/lito/audio_platform_info.xml
+++ b/configs/lito/audio_platform_info.xml
@@ -46,6 +46,7 @@
<device name="SND_DEVICE_IN_USB_HEADSET_HEX_MIC_AEC" acdb_id="162"/>
<device name="SND_DEVICE_IN_UNPROCESSED_USB_HEADSET_HEX_MIC" acdb_id="162"/>
<device name="SND_DEVICE_IN_VOCE_RECOG_USB_HEADSET_HEX_MIC" acdb_id="162"/>
+ <device name="SND_DEVICE_IN_VOICE_HEARING_AID" acdb_id="11"/>
</acdb_ids>
<module_ids>
@@ -239,6 +240,7 @@
<device name="SND_DEVICE_IN_SPEAKER_QMIC_NS" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_SPEAKER_QMIC_AEC_NS" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_THREE_MIC" interface="TX_CDC_DMA_TX_3"/>
+ <device name="SND_DEVICE_IN_VOICE_HEARING_AID" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_HANDSET_TMIC_FLUENCE_PRO" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_HANDSET_TMIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_HANDSET_TMIC_AEC" interface="TX_CDC_DMA_TX_3"/>
diff --git a/configs/lito/audio_platform_info_intcodec.xml b/configs/lito/audio_platform_info_intcodec.xml
index 4abcd98..45d8bcb 100644
--- a/configs/lito/audio_platform_info_intcodec.xml
+++ b/configs/lito/audio_platform_info_intcodec.xml
@@ -106,6 +106,7 @@
<device name="SND_DEVICE_IN_UNPROCESSED_QUAD_MIC" acdb_id="146"/>
<device name="SND_DEVICE_IN_UNPROCESSED_HEADSET_MIC" acdb_id="147"/>
<device name="SND_DEVICE_IN_HANDSET_GENERIC_QMIC" acdb_id="191"/>
+ <device name="SND_DEVICE_IN_VOICE_HEARING_AID" acdb_id="11"/>
</acdb_ids>
<backend_names>
<device name="SND_DEVICE_OUT_HEADPHONES" backend="headphones" interface="RX_CDC_DMA_RX_0"/>
@@ -227,6 +228,7 @@
<device name="SND_DEVICE_IN_SPEAKER_QMIC_NS" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_SPEAKER_QMIC_AEC_NS" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_THREE_MIC" interface="TX_CDC_DMA_TX_3"/>
+ <device name="SND_DEVICE_IN_VOICE_HEARING_AID" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_HANDSET_TMIC_FLUENCE_PRO" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_HANDSET_TMIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_HANDSET_TMIC_AEC" interface="TX_CDC_DMA_TX_3"/>
diff --git a/configs/lito/audio_platform_info_qrd.xml b/configs/lito/audio_platform_info_qrd.xml
index 4aa782c..c2c3bfa 100644
--- a/configs/lito/audio_platform_info_qrd.xml
+++ b/configs/lito/audio_platform_info_qrd.xml
@@ -105,6 +105,7 @@
<device name="SND_DEVICE_IN_UNPROCESSED_QUAD_MIC" acdb_id="146"/>
<device name="SND_DEVICE_IN_UNPROCESSED_HEADSET_MIC" acdb_id="147"/>
<device name="SND_DEVICE_IN_HANDSET_GENERIC_QMIC" acdb_id="191"/>
+ <device name="SND_DEVICE_IN_VOICE_HEARING_AID" acdb_id="11"/>
</acdb_ids>
<backend_names>
<device name="SND_DEVICE_OUT_HEADPHONES" backend="headphones" interface="RX_CDC_DMA_RX_0"/>
@@ -218,6 +219,7 @@
<device name="SND_DEVICE_IN_SPEAKER_QMIC_NS" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_SPEAKER_QMIC_AEC_NS" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_THREE_MIC" interface="TX_CDC_DMA_TX_3"/>
+ <device name="SND_DEVICE_IN_VOICE_HEARING_AID" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_HANDSET_TMIC_FLUENCE_PRO" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_HANDSET_TMIC" interface="TX_CDC_DMA_TX_3"/>
<device name="SND_DEVICE_IN_HANDSET_TMIC_AEC" interface="TX_CDC_DMA_TX_3"/>
diff --git a/configs/lito/audio_policy_configuration.xml b/configs/lito/audio_policy_configuration.xml
index 63bf298..6fa7587 100644
--- a/configs/lito/audio_policy_configuration.xml
+++ b/configs/lito/audio_policy_configuration.xml
@@ -428,6 +428,9 @@
<!-- Remote Submix Audio HAL -->
<xi:include href="/vendor/etc/r_submix_audio_policy_configuration.xml"/>
+ <!-- Bluetooth Audio HAL for hearing aid -->
+ <xi:include href="/vendor/etc/bluetooth_qti_hearing_aid_audio_policy_configuration.xml"/>
+
</modules>
<!-- End of Modules section -->
diff --git a/configs/lito/lito.mk b/configs/lito/lito.mk
index ce6bf00..43228d0 100644
--- a/configs/lito/lito.mk
+++ b/configs/lito/lito.mk
@@ -224,7 +224,8 @@
$(TOPDIR)frameworks/av/services/audiopolicy/config/default_volume_tables.xml:$(TARGET_COPY_OUT_VENDOR)/etc/default_volume_tables.xml \
$(TOPDIR)frameworks/av/services/audiopolicy/config/r_submix_audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/r_submix_audio_policy_configuration.xml \
$(TOPDIR)frameworks/av/services/audiopolicy/config/usb_audio_policy_configuration.xml:$(TARGET_COPY_OUT_VENDOR)/etc/usb_audio_policy_configuration.xml \
- $(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_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
# Low latency audio buffer size in frames
PRODUCT_PROPERTY_OVERRIDES += \
diff --git a/configs/lito/mixer_paths.xml b/configs/lito/mixer_paths.xml
index 5d88a94..41e78f5 100644
--- a/configs/lito/mixer_paths.xml
+++ b/configs/lito/mixer_paths.xml
@@ -2363,6 +2363,11 @@
<ctl name="VoiceMMode1_Tx Mixer PROXY_TX_MMode1" value="1" />
</path>
+ <path name="voicemmode1-call hearing-aid">
+ <ctl name="PROXY_RX_Voice Mixer VoiceMMode1" value="1" />
+ <ctl name="VoiceMMode1_Tx Mixer TX_CDC_DMA_TX_3_MMode1" value="1" />
+ </path>
+
<path name="voicemmode1-call headphones">
<ctl name="RX_CDC_DMA_RX_0_Voice Mixer VoiceMMode1" value="1" />
<ctl name="VoiceMMode1_Tx Mixer TX_CDC_DMA_TX_3_MMode1" value="1" />
@@ -2427,6 +2432,11 @@
<ctl name="VoiceMMode2_Tx Mixer TX_CDC_DMA_TX_3_MMode2" value="1" />
</path>
+ <path name="voicemmode2-call hearing-aid">
+ <ctl name="PROXY_RX_Voice Mixer VoiceMMode2" value="1" />
+ <ctl name="VoiceMMode2_Tx Mixer TX_CDC_DMA_TX_3_MMode2" value="1" />
+ </path>
+
<path name="voicemmode2-call headphones">
<ctl name="RX_CDC_DMA_RX_0_Voice Mixer VoiceMMode2" value="1" />
<ctl name="VoiceMMode2_Tx Mixer TX_CDC_DMA_TX_3_MMode2" value="1" />
@@ -3064,6 +3074,10 @@
<path name="dmic-endfire" />
</path>
+ <path name="hearing-aid-mic">
+ <path name="voice-speaker-mic"/>
+ </path>
+
<path name="handset-stereo-dmic-ef-liquid">
<path name="handset-dmic-endfire" />
</path>
diff --git a/configs/lito/mixer_paths_qrd.xml b/configs/lito/mixer_paths_qrd.xml
index b2daf27..d225ff7 100644
--- a/configs/lito/mixer_paths_qrd.xml
+++ b/configs/lito/mixer_paths_qrd.xml
@@ -2370,6 +2370,11 @@
<ctl name="VoiceMMode1_Tx Mixer TX_CDC_DMA_TX_3_MMode1" value="1" />
</path>
+ <path name="voicemmode1-call hearing-aid">
+ <ctl name="PROXY_RX_Voice Mixer VoiceMMode1" value="1" />
+ <ctl name="VoiceMMode1_Tx Mixer TX_CDC_DMA_TX_3_MMode1" value="1" />
+ </path>
+
<path name="voicemmode1-call handset">
<ctl name="RX_CDC_DMA_RX_0_Voice Mixer VoiceMMode1" value="1" />
<ctl name="VoiceMMode1_Tx Mixer TX_CDC_DMA_TX_3_MMode1" value="1" />
@@ -2444,6 +2449,11 @@
<ctl name="VoiceMMode2_Tx Mixer TX_CDC_DMA_TX_3_MMode2" value="1" />
</path>
+ <path name="voicemmode2-call hearing-aid">
+ <ctl name="PROXY_RX_Voice Mixer VoiceMMode2" value="1" />
+ <ctl name="VoiceMMode2_Tx Mixer TX_CDC_DMA_TX_3_MMode2" value="1" />
+ </path>
+
<path name="voicemmode2-call handset">
<ctl name="RX_CDC_DMA_RX_0_Voice Mixer VoiceMMode2" value="1" />
<ctl name="VoiceMMode2_Tx Mixer TX_CDC_DMA_TX_3_MMode2" value="1" />
@@ -3479,6 +3489,10 @@
<path name="dmic-endfire" />
</path>
+ <path name="hearing-aid-mic">
+ <path name="voice-speaker-mic"/>
+ </path>
+
<path name="voice-rec-dmic-ef-fluence">
<path name="dmic-endfire" />
</path>
diff --git a/configs/sdm660/sdm660.mk b/configs/sdm660/sdm660.mk
index c5a410e..6e0d066 100644
--- a/configs/sdm660/sdm660.mk
+++ b/configs/sdm660/sdm660.mk
@@ -68,6 +68,14 @@
AUDIO_FEATURE_ENABLED_GEF_SUPPORT := true
AUDIO_FEATURE_ENABLED_RAS := true
AUDIO_FEATURE_ENABLED_SND_MONITOR := true
+AUDIO_FEATURE_ENABLED_SVA_MULTI_STAGE := true
+
+ifeq ($(TARGET_KERNEL_VERSION), 4.4)
+ AUDIO_FEATURE_ENABLED_DLKM := false
+else
+ AUDIO_FEATURE_ENABLED_DLKM := true
+endif
+
##AUDIO_FEATURE_FLAGS
#Audio Specific device overlays
diff --git a/hal/audio_hw.c b/hal/audio_hw.c
index 979781e..ef88867 100644
--- a/hal/audio_hw.c
+++ b/hal/audio_hw.c
@@ -4305,28 +4305,34 @@
static uint64_t get_actual_pcm_frames_rendered(struct stream_out *out, struct timespec *timestamp)
{
uint64_t actual_frames_rendered = 0;
- size_t kernel_buffer_size = out->compr_config.fragment_size * out->compr_config.fragments;
+ uint64_t written_frames = 0;
+ uint64_t kernel_frames = 0;
+ uint64_t dsp_frames = 0;
+ uint64_t signed_frames = 0;
+ size_t kernel_buffer_size = 0;
/* This adjustment accounts for buffering after app processor.
* It is based on estimated DSP latency per use case, rather than exact.
*/
pthread_mutex_lock(&adev->lock);
- int64_t platform_latency = platform_render_latency(out->dev, out->usecase) *
- out->sample_rate / 1000000LL;
+ dsp_frames = platform_render_latency(out->dev, out->usecase) *
+ out->sample_rate / 1000000LL;
pthread_mutex_unlock(&adev->lock);
pthread_mutex_lock(&out->position_query_lock);
+ written_frames = out->written /
+ (audio_bytes_per_sample(out->hal_ip_format) * popcount(out->channel_mask));
+
/* not querying actual state of buffering in kernel as it would involve an ioctl call
* which then needs protection, this causes delay in TS query for pcm_offload usecase
* hence only estimate.
*/
- uint64_t signed_frames = 0;
- if (out->written >= kernel_buffer_size)
- signed_frames = out->written - kernel_buffer_size;
+ kernel_buffer_size = out->compr_config.fragment_size * out->compr_config.fragments;
+ kernel_frames = kernel_buffer_size /
+ (audio_bytes_per_sample(out->hal_op_format) * popcount(out->channel_mask));
- signed_frames = signed_frames / (audio_bytes_per_sample(out->format) * popcount(out->channel_mask));
- if (signed_frames >= platform_latency)
- signed_frames = signed_frames - platform_latency;
+ if (written_frames >= (kernel_frames + dsp_frames))
+ signed_frames = written_frames - kernel_frames - dsp_frames;
if (signed_frames > 0) {
actual_frames_rendered = signed_frames;
@@ -4337,11 +4343,8 @@
}
pthread_mutex_unlock(&out->position_query_lock);
- ALOGVV("%s signed frames %lld out_written %lld kernel_buffer_size %d"
- "bytes/sample %zu channel count %d", __func__, signed_frames,
- (long long int)out->written, (int)kernel_buffer_size,
- audio_bytes_per_sample(out->compr_config.codec->format),
- popcount(out->channel_mask));
+ ALOGVV("%s signed frames %lld written frames %lld kernel frames %lld dsp frames %lld",
+ __func__, signed_frames, written_frames, kernel_frames, dsp_frames);
return actual_frames_rendered;
}