Loading hal/Android.mk +1 −1 Original line number Diff line number Diff line Loading @@ -90,7 +90,7 @@ endif endif ifneq ($(strip, $(AUDIO_FEATURE_DISABLED_SPKR_PROTECTION)),true) ifneq ($(filter msm8974,$(TARGET_BOARD_PLATFORM)),) ifneq ($(filter msm8974 apq8084,$(TARGET_BOARD_PLATFORM)),) LOCAL_CFLAGS += -DSPKR_PROT_ENABLED LOCAL_SRC_FILES += audio_extn/spkr_protection.c LOCAL_C_INCLUDES += $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr/include Loading hal/audio_hw.c +9 −7 Original line number Diff line number Diff line Loading @@ -305,7 +305,8 @@ int enable_snd_device(struct audio_device *adev, if(SND_DEVICE_IN_USB_HEADSET_MIC == snd_device) audio_extn_usb_start_capture(adev); if (snd_device == SND_DEVICE_OUT_SPEAKER && if ((snd_device == SND_DEVICE_OUT_SPEAKER || snd_device == SND_DEVICE_OUT_VOICE_SPEAKER) && audio_extn_spkr_prot_is_enabled()) { if (audio_extn_spkr_prot_start_processing(snd_device)) { ALOGE("%s: spkr_start_processing failed", __func__); Loading Loading @@ -364,7 +365,8 @@ int disable_snd_device(struct audio_device *adev, if(SND_DEVICE_IN_USB_HEADSET_MIC == snd_device) audio_extn_usb_stop_capture(adev); if (snd_device == SND_DEVICE_OUT_SPEAKER && if ((snd_device == SND_DEVICE_OUT_SPEAKER || snd_device == SND_DEVICE_OUT_VOICE_SPEAKER) && audio_extn_spkr_prot_is_enabled()) { audio_extn_spkr_prot_stop_processing(); } else Loading hal/msm8974/platform.c +43 −23 Original line number Diff line number Diff line Loading @@ -839,6 +839,13 @@ void platform_add_backend_name(char *mixer_path, snd_device_t snd_device) strlcat(mixer_path, " capture-fm", MIXER_PATH_MAX_LENGTH); else if (snd_device == SND_DEVICE_OUT_TRANSMISSION_FM) strlcat(mixer_path, " transmission-fm", MIXER_PATH_MAX_LENGTH); else if (snd_device == SND_DEVICE_OUT_VOICE_SPEAKER && audio_extn_spkr_prot_is_enabled() ) { char platform[PROPERTY_VALUE_MAX]; property_get("ro.board.platform", platform, ""); if (!strncmp("apq8084", platform, sizeof("apq8084"))) strlcat(mixer_path, " speaker-protected", MIXER_PATH_MAX_LENGTH); } } int platform_get_pcm_device_id(audio_usecase_t usecase, int device_type) Loading Loading @@ -997,10 +1004,17 @@ int platform_switch_voice_call_enable_device_config(void *platform, int acdb_rx_id, acdb_tx_id; int ret = 0; if (my_data->csd == NULL) return ret; if (out_snd_device == SND_DEVICE_OUT_VOICE_SPEAKER && audio_extn_spkr_prot_is_enabled()) acdb_rx_id = acdb_device_table[SND_DEVICE_OUT_SPEAKER_PROTECTED]; else acdb_rx_id = acdb_device_table[out_snd_device]; acdb_tx_id = acdb_device_table[in_snd_device]; if (my_data->csd != NULL) { if (acdb_rx_id > 0 && acdb_tx_id > 0) { ret = my_data->csd->enable_device_config(acdb_rx_id, acdb_tx_id); if (ret < 0) { Loading @@ -1011,7 +1025,7 @@ int platform_switch_voice_call_enable_device_config(void *platform, ALOGE("%s: Incorrect ACDB IDs (rx: %d tx: %d)", __func__, acdb_rx_id, acdb_tx_id); } } return ret; } Loading Loading @@ -1046,22 +1060,28 @@ int platform_switch_voice_call_usecase_route_post(void *platform, int acdb_rx_id, acdb_tx_id; int ret = 0; if (my_data->csd == NULL) return ret; if (out_snd_device == SND_DEVICE_OUT_VOICE_SPEAKER && audio_extn_spkr_prot_is_enabled()) acdb_rx_id = acdb_device_table[SND_DEVICE_OUT_SPEAKER_PROTECTED]; else acdb_rx_id = acdb_device_table[out_snd_device]; acdb_tx_id = acdb_device_table[in_snd_device]; if (my_data->csd != NULL) { if (acdb_rx_id > 0 && acdb_tx_id > 0) { ret = my_data->csd->enable_device(acdb_rx_id, acdb_tx_id, my_data->adev->acdb_settings); if (ret < 0) { ALOGE("%s: csd_enable_device, failed, error %d", __func__, ret); ALOGE("%s: csd_enable_device, failed, error %d", __func__, ret); } } else { ALOGE("%s: Incorrect ACDB IDs (rx: %d tx: %d)", __func__, acdb_rx_id, acdb_tx_id); } } return ret; } Loading Loading
hal/Android.mk +1 −1 Original line number Diff line number Diff line Loading @@ -90,7 +90,7 @@ endif endif ifneq ($(strip, $(AUDIO_FEATURE_DISABLED_SPKR_PROTECTION)),true) ifneq ($(filter msm8974,$(TARGET_BOARD_PLATFORM)),) ifneq ($(filter msm8974 apq8084,$(TARGET_BOARD_PLATFORM)),) LOCAL_CFLAGS += -DSPKR_PROT_ENABLED LOCAL_SRC_FILES += audio_extn/spkr_protection.c LOCAL_C_INCLUDES += $(TARGET_OUT_INTERMEDIATES)/KERNEL_OBJ/usr/include Loading
hal/audio_hw.c +9 −7 Original line number Diff line number Diff line Loading @@ -305,7 +305,8 @@ int enable_snd_device(struct audio_device *adev, if(SND_DEVICE_IN_USB_HEADSET_MIC == snd_device) audio_extn_usb_start_capture(adev); if (snd_device == SND_DEVICE_OUT_SPEAKER && if ((snd_device == SND_DEVICE_OUT_SPEAKER || snd_device == SND_DEVICE_OUT_VOICE_SPEAKER) && audio_extn_spkr_prot_is_enabled()) { if (audio_extn_spkr_prot_start_processing(snd_device)) { ALOGE("%s: spkr_start_processing failed", __func__); Loading Loading @@ -364,7 +365,8 @@ int disable_snd_device(struct audio_device *adev, if(SND_DEVICE_IN_USB_HEADSET_MIC == snd_device) audio_extn_usb_stop_capture(adev); if (snd_device == SND_DEVICE_OUT_SPEAKER && if ((snd_device == SND_DEVICE_OUT_SPEAKER || snd_device == SND_DEVICE_OUT_VOICE_SPEAKER) && audio_extn_spkr_prot_is_enabled()) { audio_extn_spkr_prot_stop_processing(); } else Loading
hal/msm8974/platform.c +43 −23 Original line number Diff line number Diff line Loading @@ -839,6 +839,13 @@ void platform_add_backend_name(char *mixer_path, snd_device_t snd_device) strlcat(mixer_path, " capture-fm", MIXER_PATH_MAX_LENGTH); else if (snd_device == SND_DEVICE_OUT_TRANSMISSION_FM) strlcat(mixer_path, " transmission-fm", MIXER_PATH_MAX_LENGTH); else if (snd_device == SND_DEVICE_OUT_VOICE_SPEAKER && audio_extn_spkr_prot_is_enabled() ) { char platform[PROPERTY_VALUE_MAX]; property_get("ro.board.platform", platform, ""); if (!strncmp("apq8084", platform, sizeof("apq8084"))) strlcat(mixer_path, " speaker-protected", MIXER_PATH_MAX_LENGTH); } } int platform_get_pcm_device_id(audio_usecase_t usecase, int device_type) Loading Loading @@ -997,10 +1004,17 @@ int platform_switch_voice_call_enable_device_config(void *platform, int acdb_rx_id, acdb_tx_id; int ret = 0; if (my_data->csd == NULL) return ret; if (out_snd_device == SND_DEVICE_OUT_VOICE_SPEAKER && audio_extn_spkr_prot_is_enabled()) acdb_rx_id = acdb_device_table[SND_DEVICE_OUT_SPEAKER_PROTECTED]; else acdb_rx_id = acdb_device_table[out_snd_device]; acdb_tx_id = acdb_device_table[in_snd_device]; if (my_data->csd != NULL) { if (acdb_rx_id > 0 && acdb_tx_id > 0) { ret = my_data->csd->enable_device_config(acdb_rx_id, acdb_tx_id); if (ret < 0) { Loading @@ -1011,7 +1025,7 @@ int platform_switch_voice_call_enable_device_config(void *platform, ALOGE("%s: Incorrect ACDB IDs (rx: %d tx: %d)", __func__, acdb_rx_id, acdb_tx_id); } } return ret; } Loading Loading @@ -1046,22 +1060,28 @@ int platform_switch_voice_call_usecase_route_post(void *platform, int acdb_rx_id, acdb_tx_id; int ret = 0; if (my_data->csd == NULL) return ret; if (out_snd_device == SND_DEVICE_OUT_VOICE_SPEAKER && audio_extn_spkr_prot_is_enabled()) acdb_rx_id = acdb_device_table[SND_DEVICE_OUT_SPEAKER_PROTECTED]; else acdb_rx_id = acdb_device_table[out_snd_device]; acdb_tx_id = acdb_device_table[in_snd_device]; if (my_data->csd != NULL) { if (acdb_rx_id > 0 && acdb_tx_id > 0) { ret = my_data->csd->enable_device(acdb_rx_id, acdb_tx_id, my_data->adev->acdb_settings); if (ret < 0) { ALOGE("%s: csd_enable_device, failed, error %d", __func__, ret); ALOGE("%s: csd_enable_device, failed, error %d", __func__, ret); } } else { ALOGE("%s: Incorrect ACDB IDs (rx: %d tx: %d)", __func__, acdb_rx_id, acdb_tx_id); } } return ret; } Loading