diff options
author | qctecmdr <qctecmdr@localhost> | 2019-10-23 12:15:24 -0700 |
---|---|---|
committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2019-10-23 12:15:24 -0700 |
commit | 309767748c6d1447b0fc718e59f14dcaa9992cc4 (patch) | |
tree | d63963e0e12207f2738e06b375dfb9d92f8e9df9 | |
parent | b55454695def1f848f74ec8feb7cf11acbaca3cd (diff) | |
parent | 01b8a2c2d5e4271ef0d89be9d5457593b1873fb3 (diff) | |
download | msm-extra-309767748c6d1447b0fc718e59f14dcaa9992cc4.tar.gz |
Merge "ASoC: Add pseudo port to support downlink playback"
-rw-r--r-- | asoc/msm-dai-q6-v2.c | 21 | ||||
-rw-r--r-- | asoc/msm-pcm-routing-v2.c | 60 | ||||
-rw-r--r-- | asoc/msm-pcm-routing-v2.h | 2 | ||||
-rw-r--r-- | asoc/sdxpoorwills.c | 35 | ||||
-rw-r--r-- | dsp/q6afe.c | 5 | ||||
-rw-r--r-- | dsp/q6audio-v2.c | 3 | ||||
-rw-r--r-- | dsp/q6voice.c | 2 | ||||
-rw-r--r-- | include/dsp/apr_audio-v2.h | 1 |
8 files changed, 121 insertions, 8 deletions
diff --git a/asoc/msm-dai-q6-v2.c b/asoc/msm-dai-q6-v2.c index 2ab7da5e..bbac4053 100644 --- a/asoc/msm-dai-q6-v2.c +++ b/asoc/msm-dai-q6-v2.c @@ -1929,6 +1929,7 @@ static int msm_dai_q6_hw_params(struct snd_pcm_substream *substream, rc = msm_dai_q6_afe_rtproxy_hw_params(params, dai); break; case VOICE_PLAYBACK_TX: + case VOICE_PLAYBACK_DL_TX: case VOICE2_PLAYBACK_TX: case VOICE_RECORD_RX: case VOICE_RECORD_TX: @@ -3085,6 +3086,23 @@ static struct snd_soc_dai_driver msm_dai_q6_voc_playback_dai[] = { .probe = msm_dai_q6_dai_probe, .remove = msm_dai_q6_dai_remove, }, + { + .playback = { + .stream_name = "Voice Downlink Playback", + .aif_name = "VOICE_PLAYBACK_DL_TX", + .rates = SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_8000 | + SNDRV_PCM_RATE_16000, + .formats = SNDRV_PCM_FMTBIT_S16_LE, + .channels_min = 1, + .channels_max = 2, + .rate_min = 8000, + .rate_max = 48000, + }, + .ops = &msm_dai_q6_ops, + .id = VOICE_PLAYBACK_DL_TX, + .probe = msm_dai_q6_dai_probe, + .remove = msm_dai_q6_dai_remove, + }, }; static struct snd_soc_dai_driver msm_dai_q6_incall_record_dai[] = { @@ -5160,6 +5178,9 @@ register_afe_capture: pr_err("%s: Device not found stream name %s\n", __func__, stream_name); break; + case VOICE_PLAYBACK_DL_TX: + strlcpy(stream_name, "Voice Downlink Playback", 80); + goto register_voice_playback; case VOICE_PLAYBACK_TX: strlcpy(stream_name, "Voice Farend Playback", 80); goto register_voice_playback; diff --git a/asoc/msm-pcm-routing-v2.c b/asoc/msm-pcm-routing-v2.c index 8a44b528..6ac7be8b 100644 --- a/asoc/msm-pcm-routing-v2.c +++ b/asoc/msm-pcm-routing-v2.c @@ -311,6 +311,8 @@ struct msm_pcm_routing_bdai_data msm_bedais[MSM_BACKEND_DAI_MAX] = { LPASS_BE_AUXPCM_TX}, { VOICE_PLAYBACK_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_VOICE_PLAYBACK_TX}, + { VOICE_PLAYBACK_DL_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, + LPASS_BE_VOICE_PLAYBACK_DL_TX}, { VOICE2_PLAYBACK_TX, 0, {0}, {0}, 0, 0, 0, 0, {0}, LPASS_BE_VOICE2_PLAYBACK_TX}, { VOICE_RECORD_RX, 0, {0}, {0}, 0, 0, 0, 0, {0}, @@ -1656,7 +1658,8 @@ static void msm_pcm_routing_process_audio(u16 reg, u16 val, int set) if (set) { if (!test_bit(val, &msm_bedais[reg].fe_sessions[0]) && ((msm_bedais[reg].port_id == VOICE_PLAYBACK_TX) || - (msm_bedais[reg].port_id == VOICE2_PLAYBACK_TX))) + (msm_bedais[reg].port_id == VOICE2_PLAYBACK_TX) || + (msm_bedais[reg].port_id == VOICE_PLAYBACK_DL_TX))) voc_start_playback(set, msm_bedais[reg].port_id); set_bit(val, &msm_bedais[reg].fe_sessions[0]); @@ -1755,7 +1758,8 @@ static void msm_pcm_routing_process_audio(u16 reg, u16 val, int set) } else { if (test_bit(val, &msm_bedais[reg].fe_sessions[0]) && ((msm_bedais[reg].port_id == VOICE_PLAYBACK_TX) || - (msm_bedais[reg].port_id == VOICE2_PLAYBACK_TX))) + (msm_bedais[reg].port_id == VOICE2_PLAYBACK_TX) || + (msm_bedais[reg].port_id == VOICE_PLAYBACK_DL_TX))) voc_start_playback(set, msm_bedais[reg].port_id); clear_bit(val, &msm_bedais[reg].fe_sessions[0]); fdai = &fe_dai_map[val][session_type]; @@ -2869,9 +2873,9 @@ static const char *const be_name[] = { "ZERO", "PRI_I2S_RX", "PRI_I2S_TX", "SLIM_0_RX", "SLIM_0_TX", "HDMI_RX", "INT_BT_SCO_RX", "INT_BT_SCO_TX", "INT_FM_RX", "INT_FM_TX", "AFE_PCM_RX", "AFE_PCM_TX", -"AUXPCM_RX", "AUXPCM_TX", "VOICE_PLAYBACK_TX", "VOICE2_PLAYBACK_TX", -"INCALL_RECORD_RX", "INCALL_RECORD_TX", "MI2S_RX", "MI2S_TX", -"SEC_I2S_RX", "SLIM_1_RX", "SLIM_1_TX", "SLIM_2_RX", +"AUXPCM_RX", "AUXPCM_TX", "VOICE_PLAYBACK_TX", "VOICE_PLAYBACK_DL_TX", +"VOICE2_PLAYBACK_TX", "INCALL_RECORD_RX", "INCALL_RECORD_TX", "MI2S_RX", +"MI2S_TX", "SEC_I2S_RX", "SLIM_1_RX", "SLIM_1_TX", "SLIM_2_RX", "SLIM_2_TX", "SLIM_3_RX", "SLIM_3_TX", "SLIM_4_RX", "SLIM_4_TX", "SLIM_5_RX", "SLIM_5_TX", "SLIM_6_RX", "SLIM_6_TX", "SLIM_7_RX", "SLIM_7_TX", "SLIM_8_RX", @@ -5212,12 +5216,38 @@ static const struct snd_kcontrol_new incall_music_delivery_mixer_controls[] = { MSM_BACKEND_DAI_VOICE_PLAYBACK_TX, MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer, msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("MultiMedia7", SND_SOC_NOPM, + MSM_BACKEND_DAI_VOICE_PLAYBACK_TX, + MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), SOC_DOUBLE_EXT("MultiMedia9", SND_SOC_NOPM, MSM_BACKEND_DAI_VOICE_PLAYBACK_TX, MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer, msm_routing_put_audio_mixer), }; + /* incall music downlink delivery mixer */ +static const struct snd_kcontrol_new incall_music_dl_delivery_mixer_controls[] = { + SOC_SINGLE_EXT("MultiMedia1", MSM_BACKEND_DAI_VOICE_PLAYBACK_DL_TX, + MSM_FRONTEND_DAI_MULTIMEDIA1, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), + SOC_SINGLE_EXT("MultiMedia2", MSM_BACKEND_DAI_VOICE_PLAYBACK_DL_TX, + MSM_FRONTEND_DAI_MULTIMEDIA2, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), + SOC_SINGLE_EXT("MultiMedia4", MSM_BACKEND_DAI_VOICE_PLAYBACK_DL_TX, + MSM_FRONTEND_DAI_MULTIMEDIA4, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), + SOC_SINGLE_EXT("MultiMedia5", MSM_BACKEND_DAI_VOICE_PLAYBACK_DL_TX, + MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), + SOC_SINGLE_EXT("MultiMedia7", MSM_BACKEND_DAI_VOICE_PLAYBACK_DL_TX, + MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), + SOC_SINGLE_EXT("MultiMedia9", MSM_BACKEND_DAI_VOICE_PLAYBACK_DL_TX, + MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), +}; + static const struct snd_kcontrol_new incall_music2_delivery_mixer_controls[] = { SOC_DOUBLE_EXT("MultiMedia1", SND_SOC_NOPM, MSM_BACKEND_DAI_VOICE2_PLAYBACK_TX, @@ -5231,6 +5261,10 @@ static const struct snd_kcontrol_new incall_music2_delivery_mixer_controls[] = { MSM_BACKEND_DAI_VOICE2_PLAYBACK_TX, MSM_FRONTEND_DAI_MULTIMEDIA5, 1, 0, msm_routing_get_audio_mixer, msm_routing_put_audio_mixer), + SOC_DOUBLE_EXT("MultiMedia7", SND_SOC_NOPM, + MSM_BACKEND_DAI_VOICE2_PLAYBACK_TX, + MSM_FRONTEND_DAI_MULTIMEDIA7, 1, 0, msm_routing_get_audio_mixer, + msm_routing_put_audio_mixer), SOC_DOUBLE_EXT("MultiMedia9", SND_SOC_NOPM, MSM_BACKEND_DAI_VOICE2_PLAYBACK_TX, MSM_FRONTEND_DAI_MULTIMEDIA9, 1, 0, msm_routing_get_audio_mixer, @@ -14276,7 +14310,7 @@ static int msm_voc_session_id_get(struct snd_kcontrol *kcontrol, static struct snd_kcontrol_new msm_voc_session_controls[] = { SOC_SINGLE_MULTI_EXT("Voc VSID", SND_SOC_NOPM, 0, - 0xFFFFFFFF, 0, 1, msm_voc_session_id_get, + 0x7FFFFFFF, 0, 1, msm_voc_session_id_get, msm_voc_session_id_put), }; @@ -15505,6 +15539,8 @@ static const struct snd_soc_dapm_widget msm_qdsp6_widgets[] = { /* incall */ SND_SOC_DAPM_AIF_OUT("VOICE_PLAYBACK_TX", "Voice Farend Playback", 0, 0, 0, 0), + SND_SOC_DAPM_AIF_OUT("VOICE_PLAYBACK_DL_TX", "Voice Downlink Playback", + 0, 0, 0, 0), SND_SOC_DAPM_AIF_OUT("VOICE2_PLAYBACK_TX", "Voice2 Farend Playback", 0, 0, 0, 0), SND_SOC_DAPM_AIF_OUT("SLIMBUS_4_RX", "Slimbus4 Playback", @@ -15783,6 +15819,9 @@ static const struct snd_soc_dapm_widget msm_qdsp6_widgets[] = { SND_SOC_DAPM_MIXER("Incall_Music Audio Mixer", SND_SOC_NOPM, 0, 0, incall_music_delivery_mixer_controls, ARRAY_SIZE(incall_music_delivery_mixer_controls)), + SND_SOC_DAPM_MIXER("Incall_Music_DL Audio Mixer", SND_SOC_NOPM, 0, 0, + incall_music_dl_delivery_mixer_controls, + ARRAY_SIZE(incall_music_dl_delivery_mixer_controls)), SND_SOC_DAPM_MIXER("Incall_Music_2 Audio Mixer", SND_SOC_NOPM, 0, 0, incall_music2_delivery_mixer_controls, ARRAY_SIZE(incall_music2_delivery_mixer_controls)), @@ -16271,8 +16310,16 @@ static const struct snd_soc_dapm_route intercon[] = { {"Incall_Music Audio Mixer", "MultiMedia2", "MM_DL2"}, {"Incall_Music Audio Mixer", "MultiMedia4", "MM_DL4"}, {"Incall_Music Audio Mixer", "MultiMedia5", "MM_DL5"}, + {"Incall_Music Audio Mixer", "MultiMedia7", "MM_DL7"}, {"Incall_Music Audio Mixer", "MultiMedia9", "MM_DL9"}, {"VOICE_PLAYBACK_TX", NULL, "Incall_Music Audio Mixer"}, + {"Incall_Music_DL Audio Mixer", "MultiMedia1", "MM_DL1"}, + {"Incall_Music_DL Audio Mixer", "MultiMedia2", "MM_DL2"}, + {"Incall_Music_DL Audio Mixer", "MultiMedia4", "MM_DL4"}, + {"Incall_Music_DL Audio Mixer", "MultiMedia5", "MM_DL5"}, + {"Incall_Music_DL Audio Mixer", "MultiMedia7", "MM_DL7"}, + {"Incall_Music_DL Audio Mixer", "MultiMedia9", "MM_DL9"}, + {"VOICE_PLAYBACK_DL_TX", NULL, "Incall_Music_DL Audio Mixer"}, {"Incall_Music_2 Audio Mixer", "MultiMedia1", "MM_DL1"}, {"Incall_Music_2 Audio Mixer", "MultiMedia2", "MM_DL2"}, {"Incall_Music_2 Audio Mixer", "MultiMedia5", "MM_DL5"}, @@ -18805,6 +18852,7 @@ static const struct snd_soc_dapm_route intercon[] = { {"BE_OUT", NULL, "PCM_RX"}, {"BE_OUT", NULL, "SLIMBUS_3_RX"}, {"BE_OUT", NULL, "VOICE_PLAYBACK_TX"}, + {"BE_OUT", NULL, "VOICE_PLAYBACK_DL_TX"}, {"BE_OUT", NULL, "VOICE2_PLAYBACK_TX"}, {"BE_OUT", NULL, "PRI_TDM_RX_0"}, {"BE_OUT", NULL, "PRI_TDM_RX_1"}, diff --git a/asoc/msm-pcm-routing-v2.h b/asoc/msm-pcm-routing-v2.h index e25c256e..7ade05d5 100644 --- a/asoc/msm-pcm-routing-v2.h +++ b/asoc/msm-pcm-routing-v2.h @@ -43,6 +43,7 @@ #define LPASS_BE_QUIN_AUXPCM_RX "QUIN_AUX_PCM_RX" #define LPASS_BE_QUIN_AUXPCM_TX "QUIN_AUX_PCM_TX" #define LPASS_BE_VOICE_PLAYBACK_TX "VOICE_PLAYBACK_TX" +#define LPASS_BE_VOICE_PLAYBACK_DL_TX "VOICE_PLAYBACK_DL_TX" #define LPASS_BE_VOICE2_PLAYBACK_TX "VOICE2_PLAYBACK_TX" #define LPASS_BE_INCALL_RECORD_RX "INCALL_RECORD_RX" #define LPASS_BE_INCALL_RECORD_TX "INCALL_RECORD_TX" @@ -254,6 +255,7 @@ enum { MSM_BACKEND_DAI_AUXPCM_RX, MSM_BACKEND_DAI_AUXPCM_TX, MSM_BACKEND_DAI_VOICE_PLAYBACK_TX, + MSM_BACKEND_DAI_VOICE_PLAYBACK_DL_TX, MSM_BACKEND_DAI_VOICE2_PLAYBACK_TX, MSM_BACKEND_DAI_INCALL_RECORD_RX, MSM_BACKEND_DAI_INCALL_RECORD_TX, diff --git a/asoc/sdxpoorwills.c b/asoc/sdxpoorwills.c index a2dbfd5d..216b6100 100644 --- a/asoc/sdxpoorwills.c +++ b/asoc/sdxpoorwills.c @@ -2773,12 +2773,30 @@ static struct snd_soc_dai_link sdx_common_dai_links[] = { .codec_dai_name = "snd-soc-dummy-dai", .codec_name = "snd-soc-dummy", }, + { + /*hw:x,33*/ + .name = SDX_DAILINK_NAME(Compress2), + .stream_name = "COMPR2", + .cpu_dai_name = "MultiMedia7", + .platform_name = "msm-compress-dsp", + .dynamic = 1, + .async_ops = ASYNC_DPCM_SND_SOC_HW_PARAMS, + .dpcm_playback = 1, + .dpcm_capture = 1, + .trigger = {SND_SOC_DPCM_TRIGGER_POST, + SND_SOC_DPCM_TRIGGER_POST}, + .codec_dai_name = "snd-soc-dummy-dai", + .codec_name = "snd-soc-dummy", + .ignore_suspend = 1, + .ignore_pmdown_time = 1, + .id = MSM_FRONTEND_DAI_MULTIMEDIA7, + }, }; static struct snd_soc_dai_link sdx_common_misc_fe_dai_links[] = { { - /*hw:x,33*/ + /*hw:x,34*/ .name = SDX_DAILINK_NAME(ASM Loopback), .stream_name = "MultiMedia6", .cpu_dai_name = "MultiMedia6", @@ -2884,6 +2902,21 @@ static struct snd_soc_dai_link sdx_common_be_dai_links[] = { .ignore_suspend = 1, .ignore_pmdown_time = 1, }, + /* Incall Music BACK END DAI Link */ + { + .name = LPASS_BE_VOICE_PLAYBACK_DL_TX, + .stream_name = "Voice Downlink Playback", + .cpu_dai_name = "msm-dai-q6-dev.32774", + .platform_name = "msm-pcm-routing", + .codec_name = "msm-stub-codec.1", + .codec_dai_name = "msm-stub-rx", + .no_pcm = 1, + .dpcm_playback = 1, + .id = MSM_BACKEND_DAI_VOICE_PLAYBACK_DL_TX, + .be_hw_params_fixup = sdx_be_hw_params_fixup, + .ignore_suspend = 1, + .ignore_pmdown_time = 1, + }, }; static struct snd_soc_dai_link sdx_mi2s_be_dai_links[] = { diff --git a/dsp/q6afe.c b/dsp/q6afe.c index 2d3447a1..ee8f0d6a 100644 --- a/dsp/q6afe.c +++ b/dsp/q6afe.c @@ -515,6 +515,7 @@ int afe_get_port_type(u16 port_id) case INT_BT_A2DP_RX: case INT_FM_RX: case VOICE_PLAYBACK_TX: + case VOICE_PLAYBACK_DL_TX: case VOICE2_PLAYBACK_TX: case RT_PROXY_PORT_001_RX: case AUDIO_PORT_ID_I2S_RX: @@ -715,6 +716,7 @@ int afe_sizeof_cfg_cmd(u16 port_id) ret_size = SIZEOF_CFG_CMD(afe_param_id_slimbus_cfg); break; case VOICE_PLAYBACK_TX: + case VOICE_PLAYBACK_DL_TX: case VOICE2_PLAYBACK_TX: case VOICE_RECORD_RX: case VOICE_RECORD_TX: @@ -3491,6 +3493,7 @@ static int __afe_port_start(u16 port_id, union afe_port_config *afe_config, cfg_type = AFE_PARAM_ID_HDMI_CONFIG; break; case VOICE_PLAYBACK_TX: + case VOICE_PLAYBACK_DL_TX: case VOICE2_PLAYBACK_TX: case VOICE_RECORD_RX: case VOICE_RECORD_TX: @@ -3713,6 +3716,7 @@ int afe_get_port_index(u16 port_id) case VOICE_RECORD_RX: return IDX_VOICE_RECORD_RX; case VOICE_RECORD_TX: return IDX_VOICE_RECORD_TX; case VOICE_PLAYBACK_TX: return IDX_VOICE_PLAYBACK_TX; + case VOICE_PLAYBACK_DL_TX: return IDX_VOICE_RECORD_RX; case VOICE2_PLAYBACK_TX: return IDX_VOICE2_PLAYBACK_TX; case SLIMBUS_0_RX: return IDX_SLIMBUS_0_RX; case SLIMBUS_0_TX: return IDX_SLIMBUS_0_TX; @@ -5725,6 +5729,7 @@ int afe_validate_port(u16 port_id) case VOICE_RECORD_RX: case VOICE_RECORD_TX: case VOICE_PLAYBACK_TX: + case VOICE_PLAYBACK_DL_TX: case VOICE2_PLAYBACK_TX: case SLIMBUS_0_RX: case SLIMBUS_0_TX: diff --git a/dsp/q6audio-v2.c b/dsp/q6audio-v2.c index 088d9b27..e0d09688 100644 --- a/dsp/q6audio-v2.c +++ b/dsp/q6audio-v2.c @@ -57,6 +57,7 @@ int q6audio_get_port_index(u16 port_id) case VOICE_RECORD_RX: return IDX_VOICE_RECORD_RX; case VOICE_RECORD_TX: return IDX_VOICE_RECORD_TX; case VOICE_PLAYBACK_TX: return IDX_VOICE_PLAYBACK_TX; + case VOICE_PLAYBACK_DL_TX: return IDX_VOICE_RECORD_RX; case VOICE2_PLAYBACK_TX: return IDX_VOICE2_PLAYBACK_TX; case SLIMBUS_0_RX: return IDX_SLIMBUS_0_RX; case SLIMBUS_0_TX: return IDX_SLIMBUS_0_TX; @@ -344,6 +345,7 @@ int q6audio_get_port_id(u16 port_id) case VOICE_RECORD_RX: return AFE_PORT_ID_VOICE_RECORD_RX; case VOICE_RECORD_TX: return AFE_PORT_ID_VOICE_RECORD_TX; case VOICE_PLAYBACK_TX: return AFE_PORT_ID_VOICE_PLAYBACK_TX; + case VOICE_PLAYBACK_DL_TX: return AFE_PORT_ID_VOICE_RECORD_RX; case VOICE2_PLAYBACK_TX: return AFE_PORT_ID_VOICE2_PLAYBACK_TX; case SLIMBUS_0_RX: return AFE_PORT_ID_SLIMBUS_MULTI_CHAN_0_RX; case SLIMBUS_0_TX: return AFE_PORT_ID_SLIMBUS_MULTI_CHAN_0_TX; @@ -779,6 +781,7 @@ int q6audio_validate_port(u16 port_id) case VOICE_RECORD_RX: case VOICE_RECORD_TX: case VOICE_PLAYBACK_TX: + case VOICE_PLAYBACK_DL_TX: case VOICE2_PLAYBACK_TX: case SLIMBUS_0_RX: case SLIMBUS_0_TX: diff --git a/dsp/q6voice.c b/dsp/q6voice.c index 1731831c..8b6a4d78 100644 --- a/dsp/q6voice.c +++ b/dsp/q6voice.c @@ -6093,7 +6093,7 @@ int voc_start_playback(uint32_t set, uint16_t port_id) voice_itr_init(&itr, ALL_SESSION_VSID); while (voice_itr_get_next_session(&itr, &v)) { if ((v != NULL) && - (((port_id == VOICE_PLAYBACK_TX) && + ((((port_id == VOICE_PLAYBACK_TX) || (port_id == VOICE_PLAYBACK_DL_TX))&& is_sub1_vsid(v->session_id)) || ((port_id == VOICE2_PLAYBACK_TX) && is_sub2_vsid(v->session_id)))) { diff --git a/include/dsp/apr_audio-v2.h b/include/dsp/apr_audio-v2.h index 7e0dfeec..2a925d05 100644 --- a/include/dsp/apr_audio-v2.h +++ b/include/dsp/apr_audio-v2.h @@ -946,6 +946,7 @@ struct adm_cmd_connect_afe_port_v5 { #define VOICE_RECORD_RX 0x8003 #define VOICE_RECORD_TX 0x8004 #define VOICE_PLAYBACK_TX 0x8005 +#define VOICE_PLAYBACK_DL_TX 0x8006 /* Slimbus Multi channel port id pool */ #define SLIMBUS_0_RX 0x4000 |