Loading sound/soc/msm/qdsp6v2/msm-pcm-routing-v2.c +87 −37 Original line number Diff line number Diff line Loading @@ -274,7 +274,6 @@ struct msm_pcm_routing_bdai_data msm_bedais[MSM_BACKEND_DAI_MAX] = { { SLIMBUS_5_RX, 0, 0, 0, 0, 0, 0, 0, LPASS_BE_SLIMBUS_5_RX}, }; /* Track ASM playback & capture sessions of DAI */ static struct msm_pcm_routing_fdai_data fe_dai_map[MSM_FRONTEND_DAI_MM_SIZE][2] = { Loading Loading @@ -681,6 +680,43 @@ int msm_pcm_routing_reg_phy_compr_stream(int fe_id, int perf_mode, return 0; } static u32 msm_pcm_routing_get_voc_sessionid(u16 val) { u32 session_id; switch (val) { case MSM_FRONTEND_DAI_CS_VOICE: session_id = voc_get_session_id(VOICE_SESSION_NAME); break; case MSM_FRONTEND_DAI_VOLTE: session_id = voc_get_session_id(VOLTE_SESSION_NAME); break; case MSM_FRONTEND_DAI_VOWLAN: session_id = voc_get_session_id(VOWLAN_SESSION_NAME); break; case MSM_FRONTEND_DAI_VOICE2: session_id = voc_get_session_id(VOICE2_SESSION_NAME); break; case MSM_FRONTEND_DAI_QCHAT: session_id = voc_get_session_id(QCHAT_SESSION_NAME); break; case MSM_FRONTEND_DAI_VOIP: session_id = voc_get_session_id(VOIP_SESSION_NAME); break; case MSM_FRONTEND_DAI_VOICEMMODE1: session_id = voc_get_session_id(VOICEMMODE1_NAME); break; case MSM_FRONTEND_DAI_VOICEMMODE2: session_id = voc_get_session_id(VOICEMMODE2_NAME); break; default: session_id = 0; } pr_debug("%s session_id 0x%x", __func__, session_id); return session_id; } int msm_pcm_routing_reg_phy_stream(int fedai_id, int perf_mode, int dspst_id, int stream_type) { Loading Loading @@ -920,6 +956,7 @@ static void msm_pcm_routing_process_audio(u16 reg, u16 val, int set) ((msm_bedais[reg].port_id == VOICE_PLAYBACK_TX) || (msm_bedais[reg].port_id == VOICE2_PLAYBACK_TX))) voc_start_playback(set, msm_bedais[reg].port_id); set_bit(val, &msm_bedais[reg].fe_sessions); fdai = &fe_dai_map[val][session_type]; if (msm_bedais[reg].active && fdai->strm_id != Loading Loading @@ -1076,25 +1113,11 @@ static int msm_routing_put_audio_mixer(struct snd_kcontrol *kcontrol, static void msm_pcm_routing_process_voice(u16 reg, u16 val, int set) { u32 session_id = 0; u16 path_type; pr_debug("%s: reg %x val %x set %x\n", __func__, reg, val, set); if (val == MSM_FRONTEND_DAI_CS_VOICE) session_id = voc_get_session_id(VOICE_SESSION_NAME); else if (val == MSM_FRONTEND_DAI_VOLTE) session_id = voc_get_session_id(VOLTE_SESSION_NAME); else if (val == MSM_FRONTEND_DAI_VOWLAN) session_id = voc_get_session_id(VOWLAN_SESSION_NAME); else if (val == MSM_FRONTEND_DAI_VOICE2) session_id = voc_get_session_id(VOICE2_SESSION_NAME); else if (val == MSM_FRONTEND_DAI_QCHAT) session_id = voc_get_session_id(QCHAT_SESSION_NAME); else if (val == MSM_FRONTEND_DAI_VOICEMMODE1) session_id = voc_get_session_id(VOICEMMODE1_NAME); else if (val == MSM_FRONTEND_DAI_VOICEMMODE2) session_id = voc_get_session_id(VOICEMMODE2_NAME); else session_id = voc_get_session_id(VOIP_SESSION_NAME); session_id = msm_pcm_routing_get_voc_sessionid(val); pr_debug("%s: FE DAI 0x%x session_id 0x%x\n", __func__, val, session_id); Loading @@ -1113,33 +1136,32 @@ static void msm_pcm_routing_process_voice(u16 reg, u16 val, int set) __func__, set, msm_bedais[reg].port_id); afe_set_dtmf_gen_rx_portid(msm_bedais[reg].port_id, set); } mutex_unlock(&routing_lock); if (afe_get_port_type(msm_bedais[reg].port_id) == MSM_AFE_PORT_TYPE_RX) { voc_set_route_flag(session_id, RX_PATH, set); MSM_AFE_PORT_TYPE_RX) path_type = RX_PATH; else path_type = TX_PATH; if (set) { voc_set_rxtx_port(session_id, msm_bedais[reg].port_id, DEV_RX); if (msm_bedais[reg].active) { voc_set_route_flag(session_id, path_type, 1); voc_set_device_config(session_id, path_type, msm_bedais[reg].channel, msm_bedais[reg].port_id); if (voc_get_route_flag(session_id, RX_PATH) && voc_get_route_flag(session_id, TX_PATH)) if (voc_get_route_flag(session_id, TX_PATH) && voc_get_route_flag(session_id, RX_PATH)) voc_enable_device(session_id); } else { voc_disable_device(session_id); pr_debug("%s BE is not active\n", __func__); } } else { voc_set_route_flag(session_id, TX_PATH, set); if (set) { voc_set_rxtx_port(session_id, msm_bedais[reg].port_id, DEV_TX); if (voc_get_route_flag(session_id, RX_PATH) && voc_get_route_flag(session_id, TX_PATH)) voc_enable_device(session_id); } else { voc_set_route_flag(session_id, path_type, 0); voc_disable_device(session_id); } } mutex_unlock(&routing_lock); } static int msm_routing_get_voice_mixer(struct snd_kcontrol *kcontrol, Loading Loading @@ -5990,6 +6012,9 @@ static int msm_pcm_routing_close(struct snd_pcm_substream *substream) struct msm_pcm_routing_bdai_data *bedai; struct msm_pcm_routing_fdai_data *fdai; pr_debug("%s: substream->pcm->id:%s\n", __func__, substream->pcm->id); if (be_id >= MSM_BACKEND_DAI_MAX) { pr_err("%s: unexpected be_id %d\n", __func__, be_id); return -EINVAL; Loading Loading @@ -6048,8 +6073,12 @@ static int msm_pcm_routing_prepare(struct snd_pcm_substream *substream) struct msm_pcm_routing_bdai_data *bedai; u32 channels, sample_rate; bool playback, capture; uint16_t bits_per_sample = 16; uint16_t bits_per_sample = 16, voc_path_type; struct msm_pcm_routing_fdai_data *fdai; u32 session_id; pr_debug("%s: substream->pcm->id:%s\n", __func__, substream->pcm->id); if (be_id >= MSM_BACKEND_DAI_MAX) { pr_err("%s: unexpected be_id %d\n", __func__, be_id); Loading Loading @@ -6141,6 +6170,27 @@ static int msm_pcm_routing_prepare(struct snd_pcm_substream *substream) } } for_each_set_bit(i, &bedai->fe_sessions, MSM_FRONTEND_DAI_MAX) { session_id = msm_pcm_routing_get_voc_sessionid(i); if (session_id) { pr_debug("%s voice session_id: 0x%x", __func__, session_id); if (session_type == SESSION_TYPE_TX) voc_path_type = TX_PATH; else voc_path_type = RX_PATH; voc_set_route_flag(session_id, voc_path_type, 1); voc_set_device_config(session_id, voc_path_type, bedai->channel, bedai->port_id); if (voc_get_route_flag(session_id, RX_PATH) && voc_get_route_flag(session_id, TX_PATH)) voc_enable_device(session_id); } } done: mutex_unlock(&routing_lock); Loading sound/soc/msm/qdsp6v2/q6voice.c +438 −146 File changed.Preview size limit exceeded, changes collapsed. Show changes sound/soc/msm/qdsp6v2/q6voice.h +52 −4 Original line number Diff line number Diff line Loading @@ -40,6 +40,20 @@ #define CVD_VERSION_STRING_MAX_SIZE 31 #define CVD_VERSION_DEFAULT "" #define CVD_VERSION_0_0 "0.0" #define CVD_VERSION_2_1 "2.1" #define CVD_VERSION_2_2 "2.2" #define CVD_INT_VERSION_DEFAULT 0 #define CVD_INT_VERSION_0_0 1 #define CVD_INT_VERSION_2_1 2 #define CVD_INT_VERSION_2_2 3 #define CVD_INT_VERSION_LAST CVD_INT_VERSION_2_2 #define CVD_INT_VERSION_MAX (CVD_INT_VERSION_LAST + 1) struct cvd_version_table { char cvd_ver[CVD_VERSION_STRING_MAX_SIZE]; int cvd_ver_int; }; int voc_get_cvd_version(char *); Loading Loading @@ -90,6 +104,7 @@ struct device_data { uint32_t volume_step_value; uint32_t volume_ramp_duration_ms; uint32_t dev_mute_ramp_duration_ms; uint32_t no_of_channels; }; struct voice_dev_route_state { Loading Loading @@ -950,6 +965,12 @@ struct vss_istream_cmd_set_packet_exchange_mode_t { #define VSS_IVOCPROC_CMD_SET_DEVICE_V2 0x000112C6 #define VSS_IVOCPROC_CMD_SET_DEVICE_V3 0x0001316A #define VSS_IVOCPROC_CMD_TOPOLOGY_SET_DEV_CHANNELS 0x00013199 #define VSS_IVOCPROC_CMD_TOPOLOGY_COMMIT 0x00013198 #define VSS_IVOCPROC_CMD_SET_VP3_DATA 0x000110EB #define VSS_IVOLUME_CMD_SET_STEP 0x000112C2 Loading Loading @@ -1032,6 +1053,12 @@ struct vss_istream_cmd_set_packet_exchange_mode_t { /*CDMA EVRC-NW vocoder modem format */ #define VSS_IVOCPROC_CMD_CREATE_FULL_CONTROL_SESSION_V2 0x000112BF #define VSS_IVOCPROC_CMD_CREATE_FULL_CONTROL_SESSION_V3 0x00013169 #define VSS_NUM_DEV_CHANNELS_1 1 #define VSS_NUM_DEV_CHANNELS_2 2 #define VSS_NUM_DEV_CHANNELS_3 3 #define VSS_NUM_DEV_CHANNELS_4 4 struct vss_ivocproc_cmd_create_full_control_session_v2_t { uint16_t direction; Loading Loading @@ -1197,6 +1224,24 @@ struct vss_ivocproc_cmd_register_volume_cal_data_t { */ } __packed; struct vss_ivocproc_cmd_topology_set_dev_channels_t { uint16_t tx_num_channels; /* * Number of Mics. * Supported values * 1 VSS_NUM_DEV_CHANNELS_1 * 2 VSS_NUM_DEV_CHANNELS_2 * 3 VSS_NUM_DEV_CHANNELS_3 * 4 VSS_NUM_DEV_CHANNELS_4 */ uint16_t rx_num_channels; /* * Number of speaker channels. * Supported values * 1 VSS_NUM_DEV_CHANNELS_1 */ } __packed; /* Starts a vocoder PCM session */ #define VSS_IVPCM_CMD_START_V2 0x00011339 Loading Loading @@ -1316,6 +1361,11 @@ struct cvp_set_device_cmd { struct vss_ivocproc_cmd_set_device_v2_t cvp_set_device_v2; } __packed; struct cvp_set_dev_channels_cmd { struct apr_hdr hdr; struct vss_ivocproc_cmd_topology_set_dev_channels_t cvp_set_channels; } __packed; struct cvp_set_vp3_data_cmd { struct apr_hdr hdr; } __packed; Loading Loading @@ -1670,9 +1720,6 @@ int voc_end_voice_call(uint32_t session_id); int voc_standby_voice_call(uint32_t session_id); int voc_resume_voice_call(uint32_t session_id); int voc_set_lch(uint32_t session_id, enum voice_lch_mode lch_mode); int voc_set_rxtx_port(uint32_t session_id, uint32_t dev_port_id, uint32_t dev_type); int voc_set_rx_vol_step(uint32_t session_id, uint32_t dir, uint32_t vol_step, uint32_t ramp_duration); int voc_set_tx_mute(uint32_t session_id, uint32_t dir, uint32_t mute, Loading Loading @@ -1718,7 +1765,8 @@ int voc_enable_device(uint32_t session_id); void voc_set_destroy_cvd_flag(bool is_destroy_cvd); void voc_set_vote_bms_flag(bool is_vote_bms); int voc_disable_topology(uint32_t session_id, uint32_t disable); int voc_set_device_config(uint32_t session_id, uint8_t path_dir, uint8_t no_of_channels, uint32_t dev_port_id); uint32_t voice_get_topology(uint32_t topology_idx); int voc_set_sound_focus(struct sound_focus_param sound_focus_param); int voc_get_sound_focus(struct sound_focus_param *soundFocusData); Loading Loading
sound/soc/msm/qdsp6v2/msm-pcm-routing-v2.c +87 −37 Original line number Diff line number Diff line Loading @@ -274,7 +274,6 @@ struct msm_pcm_routing_bdai_data msm_bedais[MSM_BACKEND_DAI_MAX] = { { SLIMBUS_5_RX, 0, 0, 0, 0, 0, 0, 0, LPASS_BE_SLIMBUS_5_RX}, }; /* Track ASM playback & capture sessions of DAI */ static struct msm_pcm_routing_fdai_data fe_dai_map[MSM_FRONTEND_DAI_MM_SIZE][2] = { Loading Loading @@ -681,6 +680,43 @@ int msm_pcm_routing_reg_phy_compr_stream(int fe_id, int perf_mode, return 0; } static u32 msm_pcm_routing_get_voc_sessionid(u16 val) { u32 session_id; switch (val) { case MSM_FRONTEND_DAI_CS_VOICE: session_id = voc_get_session_id(VOICE_SESSION_NAME); break; case MSM_FRONTEND_DAI_VOLTE: session_id = voc_get_session_id(VOLTE_SESSION_NAME); break; case MSM_FRONTEND_DAI_VOWLAN: session_id = voc_get_session_id(VOWLAN_SESSION_NAME); break; case MSM_FRONTEND_DAI_VOICE2: session_id = voc_get_session_id(VOICE2_SESSION_NAME); break; case MSM_FRONTEND_DAI_QCHAT: session_id = voc_get_session_id(QCHAT_SESSION_NAME); break; case MSM_FRONTEND_DAI_VOIP: session_id = voc_get_session_id(VOIP_SESSION_NAME); break; case MSM_FRONTEND_DAI_VOICEMMODE1: session_id = voc_get_session_id(VOICEMMODE1_NAME); break; case MSM_FRONTEND_DAI_VOICEMMODE2: session_id = voc_get_session_id(VOICEMMODE2_NAME); break; default: session_id = 0; } pr_debug("%s session_id 0x%x", __func__, session_id); return session_id; } int msm_pcm_routing_reg_phy_stream(int fedai_id, int perf_mode, int dspst_id, int stream_type) { Loading Loading @@ -920,6 +956,7 @@ static void msm_pcm_routing_process_audio(u16 reg, u16 val, int set) ((msm_bedais[reg].port_id == VOICE_PLAYBACK_TX) || (msm_bedais[reg].port_id == VOICE2_PLAYBACK_TX))) voc_start_playback(set, msm_bedais[reg].port_id); set_bit(val, &msm_bedais[reg].fe_sessions); fdai = &fe_dai_map[val][session_type]; if (msm_bedais[reg].active && fdai->strm_id != Loading Loading @@ -1076,25 +1113,11 @@ static int msm_routing_put_audio_mixer(struct snd_kcontrol *kcontrol, static void msm_pcm_routing_process_voice(u16 reg, u16 val, int set) { u32 session_id = 0; u16 path_type; pr_debug("%s: reg %x val %x set %x\n", __func__, reg, val, set); if (val == MSM_FRONTEND_DAI_CS_VOICE) session_id = voc_get_session_id(VOICE_SESSION_NAME); else if (val == MSM_FRONTEND_DAI_VOLTE) session_id = voc_get_session_id(VOLTE_SESSION_NAME); else if (val == MSM_FRONTEND_DAI_VOWLAN) session_id = voc_get_session_id(VOWLAN_SESSION_NAME); else if (val == MSM_FRONTEND_DAI_VOICE2) session_id = voc_get_session_id(VOICE2_SESSION_NAME); else if (val == MSM_FRONTEND_DAI_QCHAT) session_id = voc_get_session_id(QCHAT_SESSION_NAME); else if (val == MSM_FRONTEND_DAI_VOICEMMODE1) session_id = voc_get_session_id(VOICEMMODE1_NAME); else if (val == MSM_FRONTEND_DAI_VOICEMMODE2) session_id = voc_get_session_id(VOICEMMODE2_NAME); else session_id = voc_get_session_id(VOIP_SESSION_NAME); session_id = msm_pcm_routing_get_voc_sessionid(val); pr_debug("%s: FE DAI 0x%x session_id 0x%x\n", __func__, val, session_id); Loading @@ -1113,33 +1136,32 @@ static void msm_pcm_routing_process_voice(u16 reg, u16 val, int set) __func__, set, msm_bedais[reg].port_id); afe_set_dtmf_gen_rx_portid(msm_bedais[reg].port_id, set); } mutex_unlock(&routing_lock); if (afe_get_port_type(msm_bedais[reg].port_id) == MSM_AFE_PORT_TYPE_RX) { voc_set_route_flag(session_id, RX_PATH, set); MSM_AFE_PORT_TYPE_RX) path_type = RX_PATH; else path_type = TX_PATH; if (set) { voc_set_rxtx_port(session_id, msm_bedais[reg].port_id, DEV_RX); if (msm_bedais[reg].active) { voc_set_route_flag(session_id, path_type, 1); voc_set_device_config(session_id, path_type, msm_bedais[reg].channel, msm_bedais[reg].port_id); if (voc_get_route_flag(session_id, RX_PATH) && voc_get_route_flag(session_id, TX_PATH)) if (voc_get_route_flag(session_id, TX_PATH) && voc_get_route_flag(session_id, RX_PATH)) voc_enable_device(session_id); } else { voc_disable_device(session_id); pr_debug("%s BE is not active\n", __func__); } } else { voc_set_route_flag(session_id, TX_PATH, set); if (set) { voc_set_rxtx_port(session_id, msm_bedais[reg].port_id, DEV_TX); if (voc_get_route_flag(session_id, RX_PATH) && voc_get_route_flag(session_id, TX_PATH)) voc_enable_device(session_id); } else { voc_set_route_flag(session_id, path_type, 0); voc_disable_device(session_id); } } mutex_unlock(&routing_lock); } static int msm_routing_get_voice_mixer(struct snd_kcontrol *kcontrol, Loading Loading @@ -5990,6 +6012,9 @@ static int msm_pcm_routing_close(struct snd_pcm_substream *substream) struct msm_pcm_routing_bdai_data *bedai; struct msm_pcm_routing_fdai_data *fdai; pr_debug("%s: substream->pcm->id:%s\n", __func__, substream->pcm->id); if (be_id >= MSM_BACKEND_DAI_MAX) { pr_err("%s: unexpected be_id %d\n", __func__, be_id); return -EINVAL; Loading Loading @@ -6048,8 +6073,12 @@ static int msm_pcm_routing_prepare(struct snd_pcm_substream *substream) struct msm_pcm_routing_bdai_data *bedai; u32 channels, sample_rate; bool playback, capture; uint16_t bits_per_sample = 16; uint16_t bits_per_sample = 16, voc_path_type; struct msm_pcm_routing_fdai_data *fdai; u32 session_id; pr_debug("%s: substream->pcm->id:%s\n", __func__, substream->pcm->id); if (be_id >= MSM_BACKEND_DAI_MAX) { pr_err("%s: unexpected be_id %d\n", __func__, be_id); Loading Loading @@ -6141,6 +6170,27 @@ static int msm_pcm_routing_prepare(struct snd_pcm_substream *substream) } } for_each_set_bit(i, &bedai->fe_sessions, MSM_FRONTEND_DAI_MAX) { session_id = msm_pcm_routing_get_voc_sessionid(i); if (session_id) { pr_debug("%s voice session_id: 0x%x", __func__, session_id); if (session_type == SESSION_TYPE_TX) voc_path_type = TX_PATH; else voc_path_type = RX_PATH; voc_set_route_flag(session_id, voc_path_type, 1); voc_set_device_config(session_id, voc_path_type, bedai->channel, bedai->port_id); if (voc_get_route_flag(session_id, RX_PATH) && voc_get_route_flag(session_id, TX_PATH)) voc_enable_device(session_id); } } done: mutex_unlock(&routing_lock); Loading
sound/soc/msm/qdsp6v2/q6voice.c +438 −146 File changed.Preview size limit exceeded, changes collapsed. Show changes
sound/soc/msm/qdsp6v2/q6voice.h +52 −4 Original line number Diff line number Diff line Loading @@ -40,6 +40,20 @@ #define CVD_VERSION_STRING_MAX_SIZE 31 #define CVD_VERSION_DEFAULT "" #define CVD_VERSION_0_0 "0.0" #define CVD_VERSION_2_1 "2.1" #define CVD_VERSION_2_2 "2.2" #define CVD_INT_VERSION_DEFAULT 0 #define CVD_INT_VERSION_0_0 1 #define CVD_INT_VERSION_2_1 2 #define CVD_INT_VERSION_2_2 3 #define CVD_INT_VERSION_LAST CVD_INT_VERSION_2_2 #define CVD_INT_VERSION_MAX (CVD_INT_VERSION_LAST + 1) struct cvd_version_table { char cvd_ver[CVD_VERSION_STRING_MAX_SIZE]; int cvd_ver_int; }; int voc_get_cvd_version(char *); Loading Loading @@ -90,6 +104,7 @@ struct device_data { uint32_t volume_step_value; uint32_t volume_ramp_duration_ms; uint32_t dev_mute_ramp_duration_ms; uint32_t no_of_channels; }; struct voice_dev_route_state { Loading Loading @@ -950,6 +965,12 @@ struct vss_istream_cmd_set_packet_exchange_mode_t { #define VSS_IVOCPROC_CMD_SET_DEVICE_V2 0x000112C6 #define VSS_IVOCPROC_CMD_SET_DEVICE_V3 0x0001316A #define VSS_IVOCPROC_CMD_TOPOLOGY_SET_DEV_CHANNELS 0x00013199 #define VSS_IVOCPROC_CMD_TOPOLOGY_COMMIT 0x00013198 #define VSS_IVOCPROC_CMD_SET_VP3_DATA 0x000110EB #define VSS_IVOLUME_CMD_SET_STEP 0x000112C2 Loading Loading @@ -1032,6 +1053,12 @@ struct vss_istream_cmd_set_packet_exchange_mode_t { /*CDMA EVRC-NW vocoder modem format */ #define VSS_IVOCPROC_CMD_CREATE_FULL_CONTROL_SESSION_V2 0x000112BF #define VSS_IVOCPROC_CMD_CREATE_FULL_CONTROL_SESSION_V3 0x00013169 #define VSS_NUM_DEV_CHANNELS_1 1 #define VSS_NUM_DEV_CHANNELS_2 2 #define VSS_NUM_DEV_CHANNELS_3 3 #define VSS_NUM_DEV_CHANNELS_4 4 struct vss_ivocproc_cmd_create_full_control_session_v2_t { uint16_t direction; Loading Loading @@ -1197,6 +1224,24 @@ struct vss_ivocproc_cmd_register_volume_cal_data_t { */ } __packed; struct vss_ivocproc_cmd_topology_set_dev_channels_t { uint16_t tx_num_channels; /* * Number of Mics. * Supported values * 1 VSS_NUM_DEV_CHANNELS_1 * 2 VSS_NUM_DEV_CHANNELS_2 * 3 VSS_NUM_DEV_CHANNELS_3 * 4 VSS_NUM_DEV_CHANNELS_4 */ uint16_t rx_num_channels; /* * Number of speaker channels. * Supported values * 1 VSS_NUM_DEV_CHANNELS_1 */ } __packed; /* Starts a vocoder PCM session */ #define VSS_IVPCM_CMD_START_V2 0x00011339 Loading Loading @@ -1316,6 +1361,11 @@ struct cvp_set_device_cmd { struct vss_ivocproc_cmd_set_device_v2_t cvp_set_device_v2; } __packed; struct cvp_set_dev_channels_cmd { struct apr_hdr hdr; struct vss_ivocproc_cmd_topology_set_dev_channels_t cvp_set_channels; } __packed; struct cvp_set_vp3_data_cmd { struct apr_hdr hdr; } __packed; Loading Loading @@ -1670,9 +1720,6 @@ int voc_end_voice_call(uint32_t session_id); int voc_standby_voice_call(uint32_t session_id); int voc_resume_voice_call(uint32_t session_id); int voc_set_lch(uint32_t session_id, enum voice_lch_mode lch_mode); int voc_set_rxtx_port(uint32_t session_id, uint32_t dev_port_id, uint32_t dev_type); int voc_set_rx_vol_step(uint32_t session_id, uint32_t dir, uint32_t vol_step, uint32_t ramp_duration); int voc_set_tx_mute(uint32_t session_id, uint32_t dir, uint32_t mute, Loading Loading @@ -1718,7 +1765,8 @@ int voc_enable_device(uint32_t session_id); void voc_set_destroy_cvd_flag(bool is_destroy_cvd); void voc_set_vote_bms_flag(bool is_vote_bms); int voc_disable_topology(uint32_t session_id, uint32_t disable); int voc_set_device_config(uint32_t session_id, uint8_t path_dir, uint8_t no_of_channels, uint32_t dev_port_id); uint32_t voice_get_topology(uint32_t topology_idx); int voc_set_sound_focus(struct sound_focus_param sound_focus_param); int voc_get_sound_focus(struct sound_focus_param *soundFocusData); Loading