diff options
author | Ravi Kumar Alamanda <ralama@codeaurora.org> | 2015-07-09 19:30:54 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2015-07-09 19:30:54 +0000 |
commit | 8a25cdef5a77bd8505b70df76c7f4e737d6af555 (patch) | |
tree | 2ed8de708971902a091584a003ebe8d8a46cf596 | |
parent | 45849f6968a68593f61bd9dc71b91fa1c7dc6ad1 (diff) | |
parent | 3b86d472a707dd29cd692909fc80cf45a8fec481 (diff) | |
download | hardware_qcom_audio-8a25cdef5a77bd8505b70df76c7f4e737d6af555.tar.gz hardware_qcom_audio-8a25cdef5a77bd8505b70df76c7f4e737d6af555.tar.bz2 hardware_qcom_audio-8a25cdef5a77bd8505b70df76c7f4e737d6af555.zip |
am 3b86d472: hal: add speaker-safe headphones/line combo devices
* commit '3b86d472a707dd29cd692909fc80cf45a8fec481':
hal: add speaker-safe headphones/line combo devices
-rwxr-xr-x | hal/audio_extn/dsm_feedback.c | 6 | ||||
-rw-r--r-- | hal/msm8974/platform.c | 35 | ||||
-rw-r--r-- | hal/msm8974/platform.h | 2 |
3 files changed, 37 insertions, 6 deletions
diff --git a/hal/audio_extn/dsm_feedback.c b/hal/audio_extn/dsm_feedback.c index e5c3c453..e340dae6 100755 --- a/hal/audio_extn/dsm_feedback.c +++ b/hal/audio_extn/dsm_feedback.c @@ -95,9 +95,11 @@ void audio_extn_dsm_feedback_enable(struct audio_device *adev, if( snd_device == SND_DEVICE_OUT_SPEAKER || snd_device == SND_DEVICE_OUT_SPEAKER_REVERSE || + snd_device == SND_DEVICE_OUT_VOICE_SPEAKER || snd_device == SND_DEVICE_OUT_SPEAKER_SAFE || snd_device == SND_DEVICE_OUT_SPEAKER_AND_HEADPHONES || - snd_device == SND_DEVICE_OUT_VOICE_SPEAKER || - snd_device == SND_DEVICE_OUT_SPEAKER_AND_LINE ) + snd_device == SND_DEVICE_OUT_SPEAKER_AND_LINE || + snd_device == SND_DEVICE_OUT_SPEAKER_SAFE_AND_HEADPHONES || + snd_device == SND_DEVICE_OUT_SPEAKER_SAFE_AND_LINE ) start_dsm_feedback_processing(adev, benable); } diff --git a/hal/msm8974/platform.c b/hal/msm8974/platform.c index a8005db5..1b6a569a 100644 --- a/hal/msm8974/platform.c +++ b/hal/msm8974/platform.c @@ -158,7 +158,9 @@ static const char * const device_table[SND_DEVICE_MAX] = { [SND_DEVICE_OUT_HEADPHONES] = "headphones", [SND_DEVICE_OUT_LINE] = "line", [SND_DEVICE_OUT_SPEAKER_AND_HEADPHONES] = "speaker-and-headphones", + [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_VOICE_HANDSET] = "voice-handset", [SND_DEVICE_OUT_VOICE_HAC_HANDSET] = "voice-hac-handset", [SND_DEVICE_OUT_VOICE_SPEAKER] = "voice-speaker", @@ -236,7 +238,9 @@ static int acdb_device_table[SND_DEVICE_MAX] = { [SND_DEVICE_OUT_HEADPHONES] = 10, [SND_DEVICE_OUT_LINE] = 77, [SND_DEVICE_OUT_SPEAKER_AND_HEADPHONES] = 10, + [SND_DEVICE_OUT_SPEAKER_SAFE_AND_HEADPHONES] = 10, [SND_DEVICE_OUT_SPEAKER_AND_LINE] = 77, + [SND_DEVICE_OUT_SPEAKER_SAFE_AND_LINE] = 77, [SND_DEVICE_OUT_VOICE_HANDSET] = ACDB_ID_VOICE_HANDSET, [SND_DEVICE_OUT_VOICE_SPEAKER] = ACDB_ID_VOICE_SPEAKER, [SND_DEVICE_OUT_VOICE_HAC_HANDSET] = 53, @@ -320,7 +324,9 @@ static const struct name_to_index snd_device_name_index[SND_DEVICE_MAX] = { {TO_NAME_INDEX(SND_DEVICE_OUT_HEADPHONES)}, {TO_NAME_INDEX(SND_DEVICE_OUT_LINE)}, {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_AND_LINE)}, + {TO_NAME_INDEX(SND_DEVICE_OUT_SPEAKER_SAFE_AND_LINE)}, {TO_NAME_INDEX(SND_DEVICE_OUT_VOICE_HANDSET)}, {TO_NAME_INDEX(SND_DEVICE_OUT_VOICE_SPEAKER)}, {TO_NAME_INDEX(SND_DEVICE_OUT_VOICE_HEADPHONES)}, @@ -731,7 +737,9 @@ static void set_platform_defaults(struct platform_data * my_data __unused) hw_interface_table[SND_DEVICE_OUT_HEADPHONES] = strdup("SLIMBUS_0_RX"); hw_interface_table[SND_DEVICE_OUT_LINE] = strdup("SLIMBUS_0_RX"); hw_interface_table[SND_DEVICE_OUT_SPEAKER_AND_HEADPHONES] = strdup("SLIMBUS_0_RX"); + hw_interface_table[SND_DEVICE_OUT_SPEAKER_SAFE_AND_HEADPHONES] = strdup("SLIMBUS_0_RX"); hw_interface_table[SND_DEVICE_OUT_SPEAKER_AND_LINE] = strdup("SLIMBUS_0_RX"); + hw_interface_table[SND_DEVICE_OUT_SPEAKER_SAFE_AND_LINE] = strdup("SLIMBUS_0_RX"); hw_interface_table[SND_DEVICE_OUT_VOICE_HANDSET] = strdup("SLIMBUS_0_RX"); hw_interface_table[SND_DEVICE_OUT_VOICE_HAC_HANDSET] = strdup("SLIMBUS_0_RX"); hw_interface_table[SND_DEVICE_OUT_VOICE_SPEAKER] = strdup("SLIMBUS_0_RX"); @@ -1436,6 +1444,18 @@ bool platform_can_split_snd_device(snd_device_t snd_device, new_snd_devices[0] = SND_DEVICE_OUT_SPEAKER; new_snd_devices[1] = SND_DEVICE_OUT_LINE; status = true; + } else if (snd_device == SND_DEVICE_OUT_SPEAKER_SAFE_AND_HEADPHONES && + !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; + new_snd_devices[1] = SND_DEVICE_OUT_HEADPHONES; + status = true; + } 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; + new_snd_devices[0] = SND_DEVICE_OUT_SPEAKER_SAFE; + new_snd_devices[1] = SND_DEVICE_OUT_LINE; + status = true; } return status; } @@ -1498,14 +1518,21 @@ snd_device_t platform_get_output_snd_device(void *platform, audio_devices_t devi if (popcount(devices) == 2) { if (devices == (AUDIO_DEVICE_OUT_WIRED_HEADPHONE | - AUDIO_DEVICE_OUT_SPEAKER)) { - snd_device = SND_DEVICE_OUT_SPEAKER_AND_HEADPHONES; - } else if (devices == (AUDIO_DEVICE_OUT_WIRED_HEADSET | - AUDIO_DEVICE_OUT_SPEAKER)) { + AUDIO_DEVICE_OUT_SPEAKER) || + devices == (AUDIO_DEVICE_OUT_WIRED_HEADSET | + AUDIO_DEVICE_OUT_SPEAKER)) { snd_device = SND_DEVICE_OUT_SPEAKER_AND_HEADPHONES; } else if (devices == (AUDIO_DEVICE_OUT_LINE | AUDIO_DEVICE_OUT_SPEAKER)) { snd_device = SND_DEVICE_OUT_SPEAKER_AND_LINE; + } else if (devices == (AUDIO_DEVICE_OUT_WIRED_HEADPHONE | + AUDIO_DEVICE_OUT_SPEAKER_SAFE) || + devices == (AUDIO_DEVICE_OUT_WIRED_HEADSET | + AUDIO_DEVICE_OUT_SPEAKER_SAFE)) { + snd_device = SND_DEVICE_OUT_SPEAKER_SAFE_AND_HEADPHONES; + } else if (devices == (AUDIO_DEVICE_OUT_LINE | + AUDIO_DEVICE_OUT_SPEAKER_SAFE)) { + snd_device = SND_DEVICE_OUT_SPEAKER_SAFE_AND_LINE; } else if (devices == (AUDIO_DEVICE_OUT_AUX_DIGITAL | AUDIO_DEVICE_OUT_SPEAKER)) { snd_device = SND_DEVICE_OUT_SPEAKER_AND_HDMI; diff --git a/hal/msm8974/platform.h b/hal/msm8974/platform.h index 25b24d19..5b7068b2 100644 --- a/hal/msm8974/platform.h +++ b/hal/msm8974/platform.h @@ -45,7 +45,9 @@ enum { SND_DEVICE_OUT_HEADPHONES, SND_DEVICE_OUT_LINE, SND_DEVICE_OUT_SPEAKER_AND_HEADPHONES, + SND_DEVICE_OUT_SPEAKER_SAFE_AND_HEADPHONES, SND_DEVICE_OUT_SPEAKER_AND_LINE, + SND_DEVICE_OUT_SPEAKER_SAFE_AND_LINE, SND_DEVICE_OUT_VOICE_HANDSET, SND_DEVICE_OUT_VOICE_SPEAKER, SND_DEVICE_OUT_VOICE_HEADPHONES, |