Loading hal/msm8974/platform.c +142 −8 Original line number Diff line number Diff line Loading @@ -552,6 +552,7 @@ static const char * const device_table[SND_DEVICE_MAX] = { [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", Loading @@ -578,6 +579,8 @@ static const char * const device_table[SND_DEVICE_MAX] = { [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", Loading @@ -595,6 +598,8 @@ static const char * const device_table[SND_DEVICE_MAX] = { [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", Loading Loading @@ -625,6 +630,12 @@ static const char * const device_table[SND_DEVICE_MAX] = { [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", Loading Loading @@ -847,6 +858,8 @@ static int acdb_device_table[SND_DEVICE_MAX] = { [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, Loading Loading @@ -875,15 +888,22 @@ static int acdb_device_table[SND_DEVICE_MAX] = { [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, Loading @@ -901,6 +921,8 @@ static int acdb_device_table[SND_DEVICE_MAX] = { [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, Loading Loading @@ -1097,6 +1119,8 @@ static struct name_to_index snd_device_name_index[SND_DEVICE_MAX] = { {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)}, Loading @@ -1118,15 +1142,20 @@ static struct name_to_index snd_device_name_index[SND_DEVICE_MAX] = { {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)}, Loading @@ -1139,6 +1168,9 @@ static struct name_to_index snd_device_name_index[SND_DEVICE_MAX] = { {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)}, Loading @@ -1149,6 +1181,8 @@ static struct name_to_index snd_device_name_index[SND_DEVICE_MAX] = { {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)}, Loading Loading @@ -5783,6 +5817,12 @@ int platform_split_snd_device(void *platform, 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; Loading @@ -5795,6 +5835,12 @@ int platform_split_snd_device(void *platform, 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; Loading Loading @@ -5889,6 +5935,12 @@ int platform_split_snd_device(void *platform, 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; Loading @@ -5901,6 +5953,12 @@ int platform_split_snd_device(void *platform, 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)) { Loading @@ -5908,12 +5966,31 @@ int platform_split_snd_device(void *platform, 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)) { Loading @@ -5927,6 +6004,12 @@ int platform_split_snd_device(void *platform, 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)) { Loading @@ -5934,12 +6017,25 @@ int platform_split_snd_device(void *platform, 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; Loading @@ -5952,12 +6048,16 @@ int platform_split_snd_device(void *platform, 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)) { Loading @@ -5965,6 +6065,13 @@ else if (SND_DEVICE_OUT_SPEAKER_AND_BT_A2DP == snd_device) { 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; Loading Loading @@ -6209,6 +6316,8 @@ snd_device_t platform_get_output_snd_device(void *platform, struct stream_out *o 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) && Loading Loading @@ -6238,6 +6347,8 @@ snd_device_t platform_get_output_snd_device(void *platform, struct stream_out *o 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; } Loading Loading @@ -6269,17 +6380,29 @@ snd_device_t platform_get_output_snd_device(void *platform, struct stream_out *o } } else if (compare_device_type(&devices, AUDIO_DEVICE_OUT_ANLG_DOCK_HEADSET) && compare_device_type(&devices, AUDIO_DEVICE_OUT_SPEAKER)) { 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))) { 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)) { 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)) { 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)) { Loading @@ -6293,6 +6416,10 @@ snd_device_t platform_get_output_snd_device(void *platform, struct stream_out *o } 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 : Loading @@ -6302,6 +6429,10 @@ snd_device_t platform_get_output_snd_device(void *platform, struct stream_out *o 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 : Loading @@ -6310,6 +6441,9 @@ snd_device_t platform_get_output_snd_device(void *platform, struct stream_out *o 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))) { 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)); Loading hal/msm8974/platform.h +15 −0 Original line number Diff line number Diff line Loading @@ -74,9 +74,12 @@ enum { 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, Loading @@ -96,12 +99,16 @@ enum { 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, Loading @@ -109,6 +116,12 @@ enum { 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, Loading @@ -128,6 +141,8 @@ enum { 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, Loading Loading
hal/msm8974/platform.c +142 −8 Original line number Diff line number Diff line Loading @@ -552,6 +552,7 @@ static const char * const device_table[SND_DEVICE_MAX] = { [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", Loading @@ -578,6 +579,8 @@ static const char * const device_table[SND_DEVICE_MAX] = { [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", Loading @@ -595,6 +598,8 @@ static const char * const device_table[SND_DEVICE_MAX] = { [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", Loading Loading @@ -625,6 +630,12 @@ static const char * const device_table[SND_DEVICE_MAX] = { [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", Loading Loading @@ -847,6 +858,8 @@ static int acdb_device_table[SND_DEVICE_MAX] = { [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, Loading Loading @@ -875,15 +888,22 @@ static int acdb_device_table[SND_DEVICE_MAX] = { [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, Loading @@ -901,6 +921,8 @@ static int acdb_device_table[SND_DEVICE_MAX] = { [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, Loading Loading @@ -1097,6 +1119,8 @@ static struct name_to_index snd_device_name_index[SND_DEVICE_MAX] = { {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)}, Loading @@ -1118,15 +1142,20 @@ static struct name_to_index snd_device_name_index[SND_DEVICE_MAX] = { {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)}, Loading @@ -1139,6 +1168,9 @@ static struct name_to_index snd_device_name_index[SND_DEVICE_MAX] = { {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)}, Loading @@ -1149,6 +1181,8 @@ static struct name_to_index snd_device_name_index[SND_DEVICE_MAX] = { {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)}, Loading Loading @@ -5783,6 +5817,12 @@ int platform_split_snd_device(void *platform, 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; Loading @@ -5795,6 +5835,12 @@ int platform_split_snd_device(void *platform, 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; Loading Loading @@ -5889,6 +5935,12 @@ int platform_split_snd_device(void *platform, 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; Loading @@ -5901,6 +5953,12 @@ int platform_split_snd_device(void *platform, 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)) { Loading @@ -5908,12 +5966,31 @@ int platform_split_snd_device(void *platform, 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)) { Loading @@ -5927,6 +6004,12 @@ int platform_split_snd_device(void *platform, 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)) { Loading @@ -5934,12 +6017,25 @@ int platform_split_snd_device(void *platform, 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; Loading @@ -5952,12 +6048,16 @@ int platform_split_snd_device(void *platform, 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)) { Loading @@ -5965,6 +6065,13 @@ else if (SND_DEVICE_OUT_SPEAKER_AND_BT_A2DP == snd_device) { 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; Loading Loading @@ -6209,6 +6316,8 @@ snd_device_t platform_get_output_snd_device(void *platform, struct stream_out *o 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) && Loading Loading @@ -6238,6 +6347,8 @@ snd_device_t platform_get_output_snd_device(void *platform, struct stream_out *o 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; } Loading Loading @@ -6269,17 +6380,29 @@ snd_device_t platform_get_output_snd_device(void *platform, struct stream_out *o } } else if (compare_device_type(&devices, AUDIO_DEVICE_OUT_ANLG_DOCK_HEADSET) && compare_device_type(&devices, AUDIO_DEVICE_OUT_SPEAKER)) { 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))) { 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)) { 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)) { 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)) { Loading @@ -6293,6 +6416,10 @@ snd_device_t platform_get_output_snd_device(void *platform, struct stream_out *o } 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 : Loading @@ -6302,6 +6429,10 @@ snd_device_t platform_get_output_snd_device(void *platform, struct stream_out *o 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 : Loading @@ -6310,6 +6441,9 @@ snd_device_t platform_get_output_snd_device(void *platform, struct stream_out *o 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))) { 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)); Loading
hal/msm8974/platform.h +15 −0 Original line number Diff line number Diff line Loading @@ -74,9 +74,12 @@ enum { 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, Loading @@ -96,12 +99,16 @@ enum { 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, Loading @@ -109,6 +116,12 @@ enum { 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, Loading @@ -128,6 +141,8 @@ enum { 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, Loading