Loading hal/audio_hw.c +4 −2 Original line number Diff line number Diff line Loading @@ -907,7 +907,8 @@ static void check_and_route_playback_usecases(struct audio_device *adev, * with new AFE encoder format based on a2dp state */ if ((SND_DEVICE_OUT_BT_A2DP == snd_device || SND_DEVICE_OUT_SPEAKER_AND_BT_A2DP == snd_device) && SND_DEVICE_OUT_SPEAKER_AND_BT_A2DP == snd_device || SND_DEVICE_OUT_SPEAKER_SAFE_AND_BT_A2DP == snd_device) && audio_extn_a2dp_is_force_device_switch()) { force_routing = true; } Loading Loading @@ -1361,7 +1362,8 @@ int select_devices(struct audio_device *adev, return 0; } if ((out_snd_device == SND_DEVICE_OUT_SPEAKER_AND_BT_A2DP) && if ((out_snd_device == SND_DEVICE_OUT_SPEAKER_AND_BT_A2DP || out_snd_device == SND_DEVICE_OUT_SPEAKER_SAFE_AND_BT_A2DP) && (!audio_extn_a2dp_is_ready())) { ALOGW("%s: A2DP profile is not ready, routing to speaker only", __func__); out_snd_device = SND_DEVICE_OUT_SPEAKER; Loading hal/msm8916/platform.c +8 −0 Original line number Diff line number Diff line Loading @@ -227,6 +227,7 @@ static const char * const device_table[SND_DEVICE_MAX] = { [SND_DEVICE_OUT_BT_SCO_WB] = "bt-sco-headset-wb", [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_VOICE_TTY_FULL_HEADPHONES] = "voice-tty-full-headphones", [SND_DEVICE_OUT_VOICE_TTY_VCO_HEADPHONES] = "voice-tty-vco-headphones", [SND_DEVICE_OUT_VOICE_TTY_HCO_HANDSET] = "voice-tty-hco-handset", Loading Loading @@ -320,6 +321,7 @@ static int acdb_device_table[SND_DEVICE_MAX] = { [SND_DEVICE_OUT_BT_SCO_WB] = 39, [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_VOICE_TTY_FULL_HEADPHONES] = 17, [SND_DEVICE_OUT_VOICE_TTY_VCO_HEADPHONES] = 17, [SND_DEVICE_OUT_VOICE_TTY_HCO_HANDSET] = 37, Loading Loading @@ -420,6 +422,7 @@ static struct name_to_index snd_device_name_index[SND_DEVICE_MAX] = { {TO_NAME_INDEX(SND_DEVICE_OUT_BT_SCO_WB)}, {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_VOICE_TTY_FULL_HEADPHONES)}, {TO_NAME_INDEX(SND_DEVICE_OUT_VOICE_TTY_VCO_HEADPHONES)}, {TO_NAME_INDEX(SND_DEVICE_OUT_VOICE_TTY_HCO_HANDSET)}, Loading Loading @@ -698,6 +701,8 @@ static void set_platform_defaults() backend_table[SND_DEVICE_OUT_BT_SCO_WB] = strdup("bt-sco-wb"); backend_table[SND_DEVICE_OUT_BT_A2DP] = strdup("bt-a2dp"); backend_table[SND_DEVICE_OUT_SPEAKER_AND_BT_A2DP] = strdup("speaker-and-bt-a2dp"); backend_table[SND_DEVICE_OUT_SPEAKER_SAFE_AND_BT_A2DP] = strdup("speaker-safe-and-bt-a2dp"); backend_table[SND_DEVICE_OUT_HDMI] = strdup("hdmi"); backend_table[SND_DEVICE_OUT_SPEAKER_AND_HDMI] = strdup("speaker-and-hdmi"); backend_table[SND_DEVICE_OUT_VOICE_TX] = strdup("afe-proxy"); Loading Loading @@ -1793,6 +1798,9 @@ snd_device_t platform_get_output_snd_device(void *platform, audio_devices_t devi } else if ((devices & AUDIO_DEVICE_OUT_SPEAKER) && (devices & AUDIO_DEVICE_OUT_ALL_A2DP)) { snd_device = SND_DEVICE_OUT_SPEAKER_AND_BT_A2DP; } else if ((devices & AUDIO_DEVICE_OUT_SPEAKER_SAFE) && (devices & AUDIO_DEVICE_OUT_ALL_A2DP)) { snd_device = SND_DEVICE_OUT_SPEAKER_SAFE_AND_BT_A2DP; } else { ALOGE("%s: Invalid combo device(%#x)", __func__, devices); goto exit; Loading hal/msm8916/platform.h +1 −0 Original line number Diff line number Diff line Loading @@ -73,6 +73,7 @@ enum { SND_DEVICE_OUT_BT_SCO_WB, SND_DEVICE_OUT_BT_A2DP, SND_DEVICE_OUT_SPEAKER_AND_BT_A2DP, SND_DEVICE_OUT_SPEAKER_SAFE_AND_BT_A2DP, SND_DEVICE_OUT_VOICE_TTY_FULL_HEADPHONES, SND_DEVICE_OUT_VOICE_TTY_VCO_HEADPHONES, SND_DEVICE_OUT_VOICE_TTY_HCO_HANDSET, Loading hal/msm8974/platform.c +16 −0 Original line number Diff line number Diff line Loading @@ -263,6 +263,7 @@ static const char * const device_table[SND_DEVICE_MAX] = { [SND_DEVICE_OUT_BT_SCO_WB] = "bt-sco-headset-wb", [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_VOICE_HANDSET_TMUS] = "voice-handset-tmus", [SND_DEVICE_OUT_VOICE_TTY_FULL_HEADPHONES] = "voice-tty-full-headphones", [SND_DEVICE_OUT_VOICE_TTY_VCO_HEADPHONES] = "voice-tty-vco-headphones", Loading Loading @@ -380,6 +381,7 @@ static int acdb_device_table[SND_DEVICE_MAX] = { [SND_DEVICE_OUT_BT_SCO_WB] = 39, [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_VOICE_HANDSET_TMUS] = ACDB_ID_VOICE_HANDSET_TMUS, [SND_DEVICE_OUT_VOICE_TTY_FULL_HEADPHONES] = 17, [SND_DEVICE_OUT_VOICE_TTY_VCO_HEADPHONES] = 17, Loading Loading @@ -503,6 +505,7 @@ static const struct name_to_index snd_device_name_index[SND_DEVICE_MAX] = { {TO_NAME_INDEX(SND_DEVICE_OUT_BT_SCO_WB)}, {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_VOICE_HANDSET_TMUS)}, {TO_NAME_INDEX(SND_DEVICE_OUT_VOICE_HAC_HANDSET)}, {TO_NAME_INDEX(SND_DEVICE_OUT_VOICE_TTY_FULL_HEADPHONES)}, Loading Loading @@ -1210,6 +1213,7 @@ static void set_platform_defaults(struct platform_data * my_data) backend_tag_table[SND_DEVICE_IN_USB_HEADSET_MIC_AEC] = strdup("usb-headset-mic"); backend_tag_table[SND_DEVICE_OUT_BT_A2DP] = strdup("bt-a2dp"); backend_tag_table[SND_DEVICE_OUT_SPEAKER_AND_BT_A2DP] = strdup("speaker-and-bt-a2dp"); backend_tag_table[SND_DEVICE_OUT_SPEAKER_SAFE_AND_BT_A2DP] = strdup("speaker-safe-and-bt-a2dp"); backend_tag_table[SND_DEVICE_OUT_USB_HEADSET_SPEC] = strdup("usb-headset"); hw_interface_table[SND_DEVICE_OUT_HANDSET] = strdup("SLIMBUS_0_RX"); Loading @@ -1234,6 +1238,8 @@ static void set_platform_defaults(struct platform_data * my_data) hw_interface_table[SND_DEVICE_OUT_BT_A2DP] = strdup("SLIMBUS_7_RX"); hw_interface_table[SND_DEVICE_OUT_SPEAKER_AND_BT_A2DP] = strdup("SLIMBUS_0_RX-and-SLIMBUS_7_RX"); hw_interface_table[SND_DEVICE_OUT_SPEAKER_SAFE_AND_BT_A2DP] = strdup("SLIMBUS_0_RX-and-SLIMBUS_7_RX"); hw_interface_table[SND_DEVICE_OUT_VOICE_HANDSET_TMUS] = strdup("SLIMBUS_0_RX"); hw_interface_table[SND_DEVICE_OUT_VOICE_TTY_FULL_HEADPHONES] = strdup("SLIMBUS_0_RX"); hw_interface_table[SND_DEVICE_OUT_VOICE_TTY_VCO_HEADPHONES] = strdup("SLIMBUS_0_RX"); Loading Loading @@ -2557,6 +2563,13 @@ int 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_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)) { *num_devices = 2; new_snd_devices[0] = SND_DEVICE_OUT_SPEAKER_SAFE; new_snd_devices[1] = SND_DEVICE_OUT_BT_A2DP; ret = 0; } return ret; Loading Loading @@ -2614,6 +2627,9 @@ snd_device_t platform_get_output_snd_device(void *platform, audio_devices_t devi } else if ((devices & AUDIO_DEVICE_OUT_SPEAKER) && (devices & AUDIO_DEVICE_OUT_ALL_A2DP)) { snd_device = SND_DEVICE_OUT_SPEAKER_AND_BT_A2DP; } else if ((devices & AUDIO_DEVICE_OUT_SPEAKER_SAFE) && (devices & AUDIO_DEVICE_OUT_ALL_A2DP)) { snd_device = SND_DEVICE_OUT_SPEAKER_SAFE_AND_BT_A2DP; } else { ALOGE("%s: Invalid combo device(%#x)", __func__, devices); goto exit; Loading hal/msm8974/platform.h +1 −0 Original line number Diff line number Diff line Loading @@ -80,6 +80,7 @@ enum { SND_DEVICE_OUT_BT_SCO_WB, SND_DEVICE_OUT_BT_A2DP, SND_DEVICE_OUT_SPEAKER_AND_BT_A2DP, SND_DEVICE_OUT_SPEAKER_SAFE_AND_BT_A2DP, SND_DEVICE_OUT_VOICE_HANDSET_TMUS, SND_DEVICE_OUT_VOICE_TTY_FULL_HEADPHONES, SND_DEVICE_OUT_VOICE_TTY_VCO_HEADPHONES, Loading Loading
hal/audio_hw.c +4 −2 Original line number Diff line number Diff line Loading @@ -907,7 +907,8 @@ static void check_and_route_playback_usecases(struct audio_device *adev, * with new AFE encoder format based on a2dp state */ if ((SND_DEVICE_OUT_BT_A2DP == snd_device || SND_DEVICE_OUT_SPEAKER_AND_BT_A2DP == snd_device) && SND_DEVICE_OUT_SPEAKER_AND_BT_A2DP == snd_device || SND_DEVICE_OUT_SPEAKER_SAFE_AND_BT_A2DP == snd_device) && audio_extn_a2dp_is_force_device_switch()) { force_routing = true; } Loading Loading @@ -1361,7 +1362,8 @@ int select_devices(struct audio_device *adev, return 0; } if ((out_snd_device == SND_DEVICE_OUT_SPEAKER_AND_BT_A2DP) && if ((out_snd_device == SND_DEVICE_OUT_SPEAKER_AND_BT_A2DP || out_snd_device == SND_DEVICE_OUT_SPEAKER_SAFE_AND_BT_A2DP) && (!audio_extn_a2dp_is_ready())) { ALOGW("%s: A2DP profile is not ready, routing to speaker only", __func__); out_snd_device = SND_DEVICE_OUT_SPEAKER; Loading
hal/msm8916/platform.c +8 −0 Original line number Diff line number Diff line Loading @@ -227,6 +227,7 @@ static const char * const device_table[SND_DEVICE_MAX] = { [SND_DEVICE_OUT_BT_SCO_WB] = "bt-sco-headset-wb", [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_VOICE_TTY_FULL_HEADPHONES] = "voice-tty-full-headphones", [SND_DEVICE_OUT_VOICE_TTY_VCO_HEADPHONES] = "voice-tty-vco-headphones", [SND_DEVICE_OUT_VOICE_TTY_HCO_HANDSET] = "voice-tty-hco-handset", Loading Loading @@ -320,6 +321,7 @@ static int acdb_device_table[SND_DEVICE_MAX] = { [SND_DEVICE_OUT_BT_SCO_WB] = 39, [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_VOICE_TTY_FULL_HEADPHONES] = 17, [SND_DEVICE_OUT_VOICE_TTY_VCO_HEADPHONES] = 17, [SND_DEVICE_OUT_VOICE_TTY_HCO_HANDSET] = 37, Loading Loading @@ -420,6 +422,7 @@ static struct name_to_index snd_device_name_index[SND_DEVICE_MAX] = { {TO_NAME_INDEX(SND_DEVICE_OUT_BT_SCO_WB)}, {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_VOICE_TTY_FULL_HEADPHONES)}, {TO_NAME_INDEX(SND_DEVICE_OUT_VOICE_TTY_VCO_HEADPHONES)}, {TO_NAME_INDEX(SND_DEVICE_OUT_VOICE_TTY_HCO_HANDSET)}, Loading Loading @@ -698,6 +701,8 @@ static void set_platform_defaults() backend_table[SND_DEVICE_OUT_BT_SCO_WB] = strdup("bt-sco-wb"); backend_table[SND_DEVICE_OUT_BT_A2DP] = strdup("bt-a2dp"); backend_table[SND_DEVICE_OUT_SPEAKER_AND_BT_A2DP] = strdup("speaker-and-bt-a2dp"); backend_table[SND_DEVICE_OUT_SPEAKER_SAFE_AND_BT_A2DP] = strdup("speaker-safe-and-bt-a2dp"); backend_table[SND_DEVICE_OUT_HDMI] = strdup("hdmi"); backend_table[SND_DEVICE_OUT_SPEAKER_AND_HDMI] = strdup("speaker-and-hdmi"); backend_table[SND_DEVICE_OUT_VOICE_TX] = strdup("afe-proxy"); Loading Loading @@ -1793,6 +1798,9 @@ snd_device_t platform_get_output_snd_device(void *platform, audio_devices_t devi } else if ((devices & AUDIO_DEVICE_OUT_SPEAKER) && (devices & AUDIO_DEVICE_OUT_ALL_A2DP)) { snd_device = SND_DEVICE_OUT_SPEAKER_AND_BT_A2DP; } else if ((devices & AUDIO_DEVICE_OUT_SPEAKER_SAFE) && (devices & AUDIO_DEVICE_OUT_ALL_A2DP)) { snd_device = SND_DEVICE_OUT_SPEAKER_SAFE_AND_BT_A2DP; } else { ALOGE("%s: Invalid combo device(%#x)", __func__, devices); goto exit; Loading
hal/msm8916/platform.h +1 −0 Original line number Diff line number Diff line Loading @@ -73,6 +73,7 @@ enum { SND_DEVICE_OUT_BT_SCO_WB, SND_DEVICE_OUT_BT_A2DP, SND_DEVICE_OUT_SPEAKER_AND_BT_A2DP, SND_DEVICE_OUT_SPEAKER_SAFE_AND_BT_A2DP, SND_DEVICE_OUT_VOICE_TTY_FULL_HEADPHONES, SND_DEVICE_OUT_VOICE_TTY_VCO_HEADPHONES, SND_DEVICE_OUT_VOICE_TTY_HCO_HANDSET, Loading
hal/msm8974/platform.c +16 −0 Original line number Diff line number Diff line Loading @@ -263,6 +263,7 @@ static const char * const device_table[SND_DEVICE_MAX] = { [SND_DEVICE_OUT_BT_SCO_WB] = "bt-sco-headset-wb", [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_VOICE_HANDSET_TMUS] = "voice-handset-tmus", [SND_DEVICE_OUT_VOICE_TTY_FULL_HEADPHONES] = "voice-tty-full-headphones", [SND_DEVICE_OUT_VOICE_TTY_VCO_HEADPHONES] = "voice-tty-vco-headphones", Loading Loading @@ -380,6 +381,7 @@ static int acdb_device_table[SND_DEVICE_MAX] = { [SND_DEVICE_OUT_BT_SCO_WB] = 39, [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_VOICE_HANDSET_TMUS] = ACDB_ID_VOICE_HANDSET_TMUS, [SND_DEVICE_OUT_VOICE_TTY_FULL_HEADPHONES] = 17, [SND_DEVICE_OUT_VOICE_TTY_VCO_HEADPHONES] = 17, Loading Loading @@ -503,6 +505,7 @@ static const struct name_to_index snd_device_name_index[SND_DEVICE_MAX] = { {TO_NAME_INDEX(SND_DEVICE_OUT_BT_SCO_WB)}, {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_VOICE_HANDSET_TMUS)}, {TO_NAME_INDEX(SND_DEVICE_OUT_VOICE_HAC_HANDSET)}, {TO_NAME_INDEX(SND_DEVICE_OUT_VOICE_TTY_FULL_HEADPHONES)}, Loading Loading @@ -1210,6 +1213,7 @@ static void set_platform_defaults(struct platform_data * my_data) backend_tag_table[SND_DEVICE_IN_USB_HEADSET_MIC_AEC] = strdup("usb-headset-mic"); backend_tag_table[SND_DEVICE_OUT_BT_A2DP] = strdup("bt-a2dp"); backend_tag_table[SND_DEVICE_OUT_SPEAKER_AND_BT_A2DP] = strdup("speaker-and-bt-a2dp"); backend_tag_table[SND_DEVICE_OUT_SPEAKER_SAFE_AND_BT_A2DP] = strdup("speaker-safe-and-bt-a2dp"); backend_tag_table[SND_DEVICE_OUT_USB_HEADSET_SPEC] = strdup("usb-headset"); hw_interface_table[SND_DEVICE_OUT_HANDSET] = strdup("SLIMBUS_0_RX"); Loading @@ -1234,6 +1238,8 @@ static void set_platform_defaults(struct platform_data * my_data) hw_interface_table[SND_DEVICE_OUT_BT_A2DP] = strdup("SLIMBUS_7_RX"); hw_interface_table[SND_DEVICE_OUT_SPEAKER_AND_BT_A2DP] = strdup("SLIMBUS_0_RX-and-SLIMBUS_7_RX"); hw_interface_table[SND_DEVICE_OUT_SPEAKER_SAFE_AND_BT_A2DP] = strdup("SLIMBUS_0_RX-and-SLIMBUS_7_RX"); hw_interface_table[SND_DEVICE_OUT_VOICE_HANDSET_TMUS] = strdup("SLIMBUS_0_RX"); hw_interface_table[SND_DEVICE_OUT_VOICE_TTY_FULL_HEADPHONES] = strdup("SLIMBUS_0_RX"); hw_interface_table[SND_DEVICE_OUT_VOICE_TTY_VCO_HEADPHONES] = strdup("SLIMBUS_0_RX"); Loading Loading @@ -2557,6 +2563,13 @@ int 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_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)) { *num_devices = 2; new_snd_devices[0] = SND_DEVICE_OUT_SPEAKER_SAFE; new_snd_devices[1] = SND_DEVICE_OUT_BT_A2DP; ret = 0; } return ret; Loading Loading @@ -2614,6 +2627,9 @@ snd_device_t platform_get_output_snd_device(void *platform, audio_devices_t devi } else if ((devices & AUDIO_DEVICE_OUT_SPEAKER) && (devices & AUDIO_DEVICE_OUT_ALL_A2DP)) { snd_device = SND_DEVICE_OUT_SPEAKER_AND_BT_A2DP; } else if ((devices & AUDIO_DEVICE_OUT_SPEAKER_SAFE) && (devices & AUDIO_DEVICE_OUT_ALL_A2DP)) { snd_device = SND_DEVICE_OUT_SPEAKER_SAFE_AND_BT_A2DP; } else { ALOGE("%s: Invalid combo device(%#x)", __func__, devices); goto exit; Loading
hal/msm8974/platform.h +1 −0 Original line number Diff line number Diff line Loading @@ -80,6 +80,7 @@ enum { SND_DEVICE_OUT_BT_SCO_WB, SND_DEVICE_OUT_BT_A2DP, SND_DEVICE_OUT_SPEAKER_AND_BT_A2DP, SND_DEVICE_OUT_SPEAKER_SAFE_AND_BT_A2DP, SND_DEVICE_OUT_VOICE_HANDSET_TMUS, SND_DEVICE_OUT_VOICE_TTY_FULL_HEADPHONES, SND_DEVICE_OUT_VOICE_TTY_VCO_HEADPHONES, Loading