Loading configs/msmsteppe/mixer_paths_idp.xml +47 −0 Original line number Diff line number Diff line Loading @@ -410,6 +410,13 @@ <ctl name="IIR0 INP2 MUX" value="ZERO" /> <ctl name="IIR0 INP3 MUX" value="ZERO" /> <!-- vbat related data --> <ctl name="GSM mode Enable" value="OFF" /> <ctl name="WSA_Softclip0 Enable" value="0" /> <ctl name="WSA_Softclip1 Enable" value="0" /> <ctl name="WSA_RX INT0 VBAT WSA RX0 VBAT Enable" value="0" /> <ctl name="WSA_RX INT1 VBAT WSA RX1 VBAT Enable" value="0" /> <!-- Codec controls end --> <!-- defaults for mmap record --> Loading Loading @@ -1962,6 +1969,22 @@ <ctl name="SpkrRight SWR DAC_Port Switch" value="1" /> </path> <path name="speaker-vbat-mono"> <path name="speaker-mono" /> <ctl name="WSA_RX INT0 VBAT WSA RX0 VBAT Enable" value="1" /> </path> <path name="speaker-vbat-mono-2"> <path name="speaker-mono-2" /> <ctl name="WSA_RX INT1 VBAT WSA RX1 VBAT Enable" value="1" /> </path> <path name="speaker-vbat"> <path name="speaker" /> <ctl name="WSA_RX INT0 VBAT WSA RX0 VBAT Enable" value="1" /> <ctl name="WSA_RX INT1 VBAT WSA RX1 VBAT Enable" value="1" /> </path> <path name="sidetone-iir"> <ctl name="IIR0 Enable Band1" value="1" /> <ctl name="IIR0 Enable Band2" value="1" /> Loading Loading @@ -2023,6 +2046,22 @@ <path name="speaker-protected" /> </path> <path name="speaker-protected-vbat"> <path name="speaker-protected" /> <ctl name="WSA_RX INT0 VBAT WSA RX0 VBAT Enable" value="1" /> <ctl name="WSA_RX INT1 VBAT WSA RX1 VBAT Enable" value="1" /> </path> <path name="voice-speaker-protected-vbat"> <path name="voice-speaker-protected" /> <ctl name="WSA_RX INT0 VBAT WSA RX0 VBAT Enable" value="1" /> </path> <path name="voice-speaker-2-protected-vbat"> <path name="voice-speaker-2-protected" /> <ctl name="WSA_RX INT1 VBAT WSA RX1 VBAT Enable" value="1" /> </path> <path name="vi-feedback"> </path> Loading Loading @@ -2102,6 +2141,14 @@ <path name="speaker-mono-2" /> </path> <path name="voice-speaker-vbat"> <path name="speaker-vbat-mono" /> </path> <path name="voice-speaker-2-vbat"> <path name="speaker-vbat-mono-2" /> </path> <path name="voice-speaker-mic"> <path name="speaker-mic" /> </path> Loading hal/audio_extn/audio_extn.c +21 −0 Original line number Diff line number Diff line Loading @@ -72,6 +72,7 @@ struct audio_extn_module { uint32_t proxy_channel_num; bool hpx_enabled; bool vbat_enabled; bool bcl_enabled; bool hifi_audio_enabled; bool ras_enabled; struct aptx_dec_bt_addr addr; Loading Loading @@ -414,6 +415,25 @@ bool audio_extn_can_use_vbat(void) ALOGD("%s: vbat.enabled property is set to %s", __func__, prop_vbat_enabled); return (aextnmod.vbat_enabled ? true: false); } bool audio_extn_is_bcl_enabled(void) { ALOGD("%s: status: %d", __func__, aextnmod.bcl_enabled); return (aextnmod.bcl_enabled ? true: false); } bool audio_extn_can_use_bcl(void) { char prop_bcl_enabled[PROPERTY_VALUE_MAX] = "false"; property_get("persist.vendor.audio.bcl.enabled", prop_bcl_enabled, "0"); if (!strncmp("true", prop_bcl_enabled, 4)) { aextnmod.bcl_enabled = 1; } ALOGD("%s: bcl.enabled property is set to %s", __func__, prop_bcl_enabled); return (aextnmod.bcl_enabled ? true: false); } #endif #ifdef RAS_ENABLED Loading Loading @@ -824,6 +844,7 @@ void audio_extn_init(struct audio_device *adev) aextnmod.proxy_channel_num = 2; aextnmod.hpx_enabled = 0; aextnmod.vbat_enabled = 0; aextnmod.bcl_enabled = 0; aextnmod.hifi_audio_enabled = 0; aextnmod.addr.nap = 0; aextnmod.addr.uap = 0; Loading hal/audio_extn/audio_extn.h +4 −0 Original line number Diff line number Diff line Loading @@ -169,9 +169,13 @@ void audio_extn_set_aanc_noise_level(struct audio_device *adev, #ifndef VBAT_MONITOR_ENABLED #define audio_extn_is_vbat_enabled() (0) #define audio_extn_can_use_vbat() (0) #define audio_extn_is_bcl_enabled() (0) #define audio_extn_can_use_bcl() (0) #else bool audio_extn_is_vbat_enabled(void); bool audio_extn_can_use_vbat(void); bool audio_extn_is_bcl_enabled(void); bool audio_extn_can_use_bcl(void); #endif #ifndef RAS_ENABLED Loading hal/msm8974/platform.c +12 −4 Original line number Diff line number Diff line Loading @@ -238,6 +238,7 @@ struct platform_data { bool is_acdb_initialized; /* Vbat monitor related flags */ bool is_vbat_speaker; bool is_bcl_speaker; bool gsm_mode_enabled; bool is_slimbus_interface; bool is_internal_codec; Loading Loading @@ -1751,6 +1752,9 @@ static void send_codec_cal(acdb_loader_get_calibration_t acdb_loader_get_calibra ret = 0; if ((plat_data->is_vbat_speaker) && (WCD9XXX_VBAT_CAL == type)) { /* VBAT BCL speaker does not need tuning data */ if (!plat_data->is_bcl_speaker) return; ret = send_vbat_adc_data_to_acdb(plat_data, cal_name_info[type]); if (ret < 0) ALOGE("%s error in sending vbat adc data to acdb", __func__); Loading Loading @@ -2218,6 +2222,10 @@ void *platform_init(struct audio_device *adev) if (ret) my_data->is_vbat_speaker = true; ret = audio_extn_can_use_bcl(); if (ret) my_data->is_bcl_speaker = true; list_init(&my_data->acdb_meta_key_list); set_platform_defaults(my_data); Loading Loading @@ -3408,7 +3416,7 @@ int platform_switch_voice_call_enable_device_config(void *platform, out_snd_device == SND_DEVICE_OUT_VOICE_SPEAKER_VBAT || out_snd_device == SND_DEVICE_OUT_VOICE_SPEAKER_2_VBAT) && audio_extn_spkr_prot_is_enabled()) { if (my_data->is_vbat_speaker) if (my_data->is_vbat_speaker || my_data->is_bcl_speaker) acdb_rx_id = acdb_device_table[SND_DEVICE_OUT_SPEAKER_PROTECTED_VBAT]; else acdb_rx_id = acdb_device_table[SND_DEVICE_OUT_SPEAKER_PROTECTED]; Loading Loading @@ -3483,7 +3491,7 @@ int platform_switch_voice_call_usecase_route_post(void *platform, out_snd_device == SND_DEVICE_OUT_VOICE_SPEAKER_VBAT || out_snd_device == SND_DEVICE_OUT_VOICE_SPEAKER_2_VBAT) && audio_extn_spkr_prot_is_enabled()) { if (my_data->is_vbat_speaker) if (my_data->is_vbat_speaker || my_data->is_bcl_speaker) acdb_rx_id = acdb_device_table[SND_DEVICE_OUT_SPEAKER_PROTECTED_VBAT]; else acdb_rx_id = acdb_device_table[SND_DEVICE_OUT_SPEAKER_PROTECTED]; Loading Loading @@ -4005,7 +4013,7 @@ snd_device_t platform_get_output_snd_device(void *platform, struct stream_out *o else snd_device = SND_DEVICE_OUT_BT_SCO; } else if (devices & AUDIO_DEVICE_OUT_SPEAKER) { if (my_data->is_vbat_speaker) { if (my_data->is_vbat_speaker || my_data->is_bcl_speaker) { if (hw_info_is_stereo_spkr(my_data->hw_info)) { if (my_data->mono_speaker == SPKR_1) snd_device = SND_DEVICE_OUT_VOICE_SPEAKER_VBAT; Loading Loading @@ -4089,7 +4097,7 @@ snd_device_t platform_get_output_snd_device(void *platform, struct stream_out *o snd_device = SND_DEVICE_OUT_SPEAKER_EXTERNAL_2; else if (adev->speaker_lr_swap) snd_device = SND_DEVICE_OUT_SPEAKER_REVERSE; else if (my_data->is_vbat_speaker) else if (my_data->is_vbat_speaker || my_data->is_bcl_speaker) snd_device = SND_DEVICE_OUT_SPEAKER_VBAT; else snd_device = SND_DEVICE_OUT_SPEAKER; Loading Loading
configs/msmsteppe/mixer_paths_idp.xml +47 −0 Original line number Diff line number Diff line Loading @@ -410,6 +410,13 @@ <ctl name="IIR0 INP2 MUX" value="ZERO" /> <ctl name="IIR0 INP3 MUX" value="ZERO" /> <!-- vbat related data --> <ctl name="GSM mode Enable" value="OFF" /> <ctl name="WSA_Softclip0 Enable" value="0" /> <ctl name="WSA_Softclip1 Enable" value="0" /> <ctl name="WSA_RX INT0 VBAT WSA RX0 VBAT Enable" value="0" /> <ctl name="WSA_RX INT1 VBAT WSA RX1 VBAT Enable" value="0" /> <!-- Codec controls end --> <!-- defaults for mmap record --> Loading Loading @@ -1962,6 +1969,22 @@ <ctl name="SpkrRight SWR DAC_Port Switch" value="1" /> </path> <path name="speaker-vbat-mono"> <path name="speaker-mono" /> <ctl name="WSA_RX INT0 VBAT WSA RX0 VBAT Enable" value="1" /> </path> <path name="speaker-vbat-mono-2"> <path name="speaker-mono-2" /> <ctl name="WSA_RX INT1 VBAT WSA RX1 VBAT Enable" value="1" /> </path> <path name="speaker-vbat"> <path name="speaker" /> <ctl name="WSA_RX INT0 VBAT WSA RX0 VBAT Enable" value="1" /> <ctl name="WSA_RX INT1 VBAT WSA RX1 VBAT Enable" value="1" /> </path> <path name="sidetone-iir"> <ctl name="IIR0 Enable Band1" value="1" /> <ctl name="IIR0 Enable Band2" value="1" /> Loading Loading @@ -2023,6 +2046,22 @@ <path name="speaker-protected" /> </path> <path name="speaker-protected-vbat"> <path name="speaker-protected" /> <ctl name="WSA_RX INT0 VBAT WSA RX0 VBAT Enable" value="1" /> <ctl name="WSA_RX INT1 VBAT WSA RX1 VBAT Enable" value="1" /> </path> <path name="voice-speaker-protected-vbat"> <path name="voice-speaker-protected" /> <ctl name="WSA_RX INT0 VBAT WSA RX0 VBAT Enable" value="1" /> </path> <path name="voice-speaker-2-protected-vbat"> <path name="voice-speaker-2-protected" /> <ctl name="WSA_RX INT1 VBAT WSA RX1 VBAT Enable" value="1" /> </path> <path name="vi-feedback"> </path> Loading Loading @@ -2102,6 +2141,14 @@ <path name="speaker-mono-2" /> </path> <path name="voice-speaker-vbat"> <path name="speaker-vbat-mono" /> </path> <path name="voice-speaker-2-vbat"> <path name="speaker-vbat-mono-2" /> </path> <path name="voice-speaker-mic"> <path name="speaker-mic" /> </path> Loading
hal/audio_extn/audio_extn.c +21 −0 Original line number Diff line number Diff line Loading @@ -72,6 +72,7 @@ struct audio_extn_module { uint32_t proxy_channel_num; bool hpx_enabled; bool vbat_enabled; bool bcl_enabled; bool hifi_audio_enabled; bool ras_enabled; struct aptx_dec_bt_addr addr; Loading Loading @@ -414,6 +415,25 @@ bool audio_extn_can_use_vbat(void) ALOGD("%s: vbat.enabled property is set to %s", __func__, prop_vbat_enabled); return (aextnmod.vbat_enabled ? true: false); } bool audio_extn_is_bcl_enabled(void) { ALOGD("%s: status: %d", __func__, aextnmod.bcl_enabled); return (aextnmod.bcl_enabled ? true: false); } bool audio_extn_can_use_bcl(void) { char prop_bcl_enabled[PROPERTY_VALUE_MAX] = "false"; property_get("persist.vendor.audio.bcl.enabled", prop_bcl_enabled, "0"); if (!strncmp("true", prop_bcl_enabled, 4)) { aextnmod.bcl_enabled = 1; } ALOGD("%s: bcl.enabled property is set to %s", __func__, prop_bcl_enabled); return (aextnmod.bcl_enabled ? true: false); } #endif #ifdef RAS_ENABLED Loading Loading @@ -824,6 +844,7 @@ void audio_extn_init(struct audio_device *adev) aextnmod.proxy_channel_num = 2; aextnmod.hpx_enabled = 0; aextnmod.vbat_enabled = 0; aextnmod.bcl_enabled = 0; aextnmod.hifi_audio_enabled = 0; aextnmod.addr.nap = 0; aextnmod.addr.uap = 0; Loading
hal/audio_extn/audio_extn.h +4 −0 Original line number Diff line number Diff line Loading @@ -169,9 +169,13 @@ void audio_extn_set_aanc_noise_level(struct audio_device *adev, #ifndef VBAT_MONITOR_ENABLED #define audio_extn_is_vbat_enabled() (0) #define audio_extn_can_use_vbat() (0) #define audio_extn_is_bcl_enabled() (0) #define audio_extn_can_use_bcl() (0) #else bool audio_extn_is_vbat_enabled(void); bool audio_extn_can_use_vbat(void); bool audio_extn_is_bcl_enabled(void); bool audio_extn_can_use_bcl(void); #endif #ifndef RAS_ENABLED Loading
hal/msm8974/platform.c +12 −4 Original line number Diff line number Diff line Loading @@ -238,6 +238,7 @@ struct platform_data { bool is_acdb_initialized; /* Vbat monitor related flags */ bool is_vbat_speaker; bool is_bcl_speaker; bool gsm_mode_enabled; bool is_slimbus_interface; bool is_internal_codec; Loading Loading @@ -1751,6 +1752,9 @@ static void send_codec_cal(acdb_loader_get_calibration_t acdb_loader_get_calibra ret = 0; if ((plat_data->is_vbat_speaker) && (WCD9XXX_VBAT_CAL == type)) { /* VBAT BCL speaker does not need tuning data */ if (!plat_data->is_bcl_speaker) return; ret = send_vbat_adc_data_to_acdb(plat_data, cal_name_info[type]); if (ret < 0) ALOGE("%s error in sending vbat adc data to acdb", __func__); Loading Loading @@ -2218,6 +2222,10 @@ void *platform_init(struct audio_device *adev) if (ret) my_data->is_vbat_speaker = true; ret = audio_extn_can_use_bcl(); if (ret) my_data->is_bcl_speaker = true; list_init(&my_data->acdb_meta_key_list); set_platform_defaults(my_data); Loading Loading @@ -3408,7 +3416,7 @@ int platform_switch_voice_call_enable_device_config(void *platform, out_snd_device == SND_DEVICE_OUT_VOICE_SPEAKER_VBAT || out_snd_device == SND_DEVICE_OUT_VOICE_SPEAKER_2_VBAT) && audio_extn_spkr_prot_is_enabled()) { if (my_data->is_vbat_speaker) if (my_data->is_vbat_speaker || my_data->is_bcl_speaker) acdb_rx_id = acdb_device_table[SND_DEVICE_OUT_SPEAKER_PROTECTED_VBAT]; else acdb_rx_id = acdb_device_table[SND_DEVICE_OUT_SPEAKER_PROTECTED]; Loading Loading @@ -3483,7 +3491,7 @@ int platform_switch_voice_call_usecase_route_post(void *platform, out_snd_device == SND_DEVICE_OUT_VOICE_SPEAKER_VBAT || out_snd_device == SND_DEVICE_OUT_VOICE_SPEAKER_2_VBAT) && audio_extn_spkr_prot_is_enabled()) { if (my_data->is_vbat_speaker) if (my_data->is_vbat_speaker || my_data->is_bcl_speaker) acdb_rx_id = acdb_device_table[SND_DEVICE_OUT_SPEAKER_PROTECTED_VBAT]; else acdb_rx_id = acdb_device_table[SND_DEVICE_OUT_SPEAKER_PROTECTED]; Loading Loading @@ -4005,7 +4013,7 @@ snd_device_t platform_get_output_snd_device(void *platform, struct stream_out *o else snd_device = SND_DEVICE_OUT_BT_SCO; } else if (devices & AUDIO_DEVICE_OUT_SPEAKER) { if (my_data->is_vbat_speaker) { if (my_data->is_vbat_speaker || my_data->is_bcl_speaker) { if (hw_info_is_stereo_spkr(my_data->hw_info)) { if (my_data->mono_speaker == SPKR_1) snd_device = SND_DEVICE_OUT_VOICE_SPEAKER_VBAT; Loading Loading @@ -4089,7 +4097,7 @@ snd_device_t platform_get_output_snd_device(void *platform, struct stream_out *o snd_device = SND_DEVICE_OUT_SPEAKER_EXTERNAL_2; else if (adev->speaker_lr_swap) snd_device = SND_DEVICE_OUT_SPEAKER_REVERSE; else if (my_data->is_vbat_speaker) else if (my_data->is_vbat_speaker || my_data->is_bcl_speaker) snd_device = SND_DEVICE_OUT_SPEAKER_VBAT; else snd_device = SND_DEVICE_OUT_SPEAKER; Loading