Loading sound/soc/msm/qdsp6v2/msm-pcm-voip-v2.c +17 −17 Original line number Original line Diff line number Diff line /* Copyright (c) 2012-2015, The Linux Foundation. All rights reserved. /* Copyright (c) 2012-2016, The Linux Foundation. All rights reserved. * * * This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and * it under the terms of the GNU General Public License version 2 and Loading Loading @@ -199,9 +199,10 @@ static struct snd_pcm_hardware msm_pcm_hardware = { SNDRV_PCM_INFO_INTERLEAVED), SNDRV_PCM_INFO_INTERLEAVED), .formats = SNDRV_PCM_FMTBIT_S16_LE | .formats = SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_SPECIAL, SNDRV_PCM_FMTBIT_SPECIAL, .rates = SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_16000, .rates = SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_16000 | SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_48000, .rate_min = 8000, .rate_min = 8000, .rate_max = 16000, .rate_max = 48000, .channels_min = 1, .channels_min = 1, .channels_max = 1, .channels_max = 1, .buffer_bytes_max = sizeof(struct voip_buf_node) * VOIP_MAX_Q_LEN, .buffer_bytes_max = sizeof(struct voip_buf_node) * VOIP_MAX_Q_LEN, Loading Loading @@ -316,7 +317,7 @@ static int msm_pcm_voip_probe(struct snd_soc_platform *platform) } } /* sample rate supported */ /* sample rate supported */ static unsigned int supported_sample_rates[] = {8000, 16000}; static unsigned int supported_sample_rates[] = {8000, 16000, 32000, 48000}; static void voip_ssr_cb_fn(uint32_t opcode, void *private_data) static void voip_ssr_cb_fn(uint32_t opcode, void *private_data) { { Loading Loading @@ -1142,21 +1143,16 @@ static int voip_config_vocoder(struct snd_pcm_substream *substream) } } pr_debug("%s(): media_type=%d\n", __func__, media_type); pr_debug("%s(): media_type=%d\n", __func__, media_type); if ((prtd->play_samp_rate == 8000) && if ((prtd->play_samp_rate == 8000 && prtd->cap_samp_rate == 8000) || (prtd->cap_samp_rate == 8000)) (prtd->play_samp_rate == 16000 && prtd->cap_samp_rate == 16000) || (prtd->play_samp_rate == 32000 && prtd->cap_samp_rate == 32000) || (prtd->play_samp_rate == 48000 && prtd->cap_samp_rate == 48000)) { voc_config_vocoder(media_type, rate_type, voc_config_vocoder(media_type, rate_type, VSS_NETWORK_ID_VOIP_NB, VSS_NETWORK_ID_VOIP, voip_info.dtx_mode, voip_info.dtx_mode, evrc_min_rate_type, evrc_min_rate_type, evrc_max_rate_type); evrc_max_rate_type); else if ((prtd->play_samp_rate == 16000) && } else { (prtd->cap_samp_rate == 16000)) voc_config_vocoder(media_type, rate_type, VSS_NETWORK_ID_VOIP_WB, voip_info.dtx_mode, evrc_min_rate_type, evrc_max_rate_type); else { pr_debug("%s: Invalid rate playback %d, capture %d\n", pr_debug("%s: Invalid rate playback %d, capture %d\n", __func__, prtd->play_samp_rate, __func__, prtd->play_samp_rate, prtd->cap_samp_rate); prtd->cap_samp_rate); Loading Loading @@ -1550,9 +1546,13 @@ static int voip_get_media_type(uint32_t mode, uint32_t rate_type, break; break; case MODE_PCM: case MODE_PCM: if (samp_rate == 8000) if (samp_rate == 8000) *media_type = VSS_MEDIA_ID_PCM_NB; *media_type = VSS_MEDIA_ID_PCM_8_KHZ; else if (samp_rate == 16000) *media_type = VSS_MEDIA_ID_PCM_16_KHZ; else if (samp_rate == 32000) *media_type = VSS_MEDIA_ID_PCM_32_KHZ; else else *media_type = VSS_MEDIA_ID_PCM_WB; *media_type = VSS_MEDIA_ID_PCM_48_KHZ; break; break; case MODE_IS127: /* EVRC-A */ case MODE_IS127: /* EVRC-A */ *media_type = VSS_MEDIA_ID_EVRC_MODEM; *media_type = VSS_MEDIA_ID_EVRC_MODEM; Loading sound/soc/msm/qdsp6v2/q6voice.c +2 −2 Original line number Original line Diff line number Diff line Loading @@ -4199,7 +4199,7 @@ static int voice_send_netid_timing_cmd(struct voice_data *v) goto fail; goto fail; } } /* Set network ID. */ /* Set network ID. */ pr_debug("Setting network ID\n"); pr_debug("Setting network ID %x\n", common.mvs_info.network_type); mvm_set_network.hdr.hdr_field = APR_HDR_FIELD(APR_MSG_TYPE_SEQ_CMD, mvm_set_network.hdr.hdr_field = APR_HDR_FIELD(APR_MSG_TYPE_SEQ_CMD, APR_HDR_LEN(APR_HDR_SIZE), APR_HDR_LEN(APR_HDR_SIZE), Loading @@ -4210,7 +4210,7 @@ static int voice_send_netid_timing_cmd(struct voice_data *v) voice_get_idx_for_session(v->session_id); voice_get_idx_for_session(v->session_id); mvm_set_network.hdr.dest_port = mvm_handle; mvm_set_network.hdr.dest_port = mvm_handle; mvm_set_network.hdr.token = 0; mvm_set_network.hdr.token = 0; mvm_set_network.hdr.opcode = VSS_ICOMMON_CMD_SET_NETWORK; mvm_set_network.hdr.opcode = VSS_IMVM_CMD_SET_CAL_NETWORK; mvm_set_network.network.network_id = common.mvs_info.network_type; mvm_set_network.network.network_id = common.mvs_info.network_type; v->mvm_state = CMD_STATUS_FAIL; v->mvm_state = CMD_STATUS_FAIL; Loading sound/soc/msm/qdsp6v2/q6voice.h +12 −8 Original line number Original line Diff line number Diff line /* Copyright (c) 2012-2015, The Linux Foundation. All rights reserved. /* Copyright (c) 2012-2016, The Linux Foundation. All rights reserved. * * * This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and * it under the terms of the GNU General Public License version 2 and Loading Loading @@ -1029,9 +1029,9 @@ struct vss_istream_cmd_set_packet_exchange_mode_t { #define VSS_IVOCPROC_PORT_ID_NONE 0xFFFF #define VSS_IVOCPROC_PORT_ID_NONE 0xFFFF #define VSS_NETWORK_ID_DEFAULT 0x00010037 #define VSS_NETWORK_ID_DEFAULT 0x00010037 #define VSS_NETWORK_ID_VOIP_NB 0x00011240 #define VSS_NETWORK_ID_VOIP_WB 0x00011241 /* Voice over Internet Protocol (VoIP) network ID. Common for all bands.*/ #define VSS_NETWORK_ID_VOIP_WV 0x00011242 #define VSS_NETWORK_ID_VOIP 0x00011362 /* Media types */ /* Media types */ #define VSS_MEDIA_ID_EVRC_MODEM 0x00010FC2 #define VSS_MEDIA_ID_EVRC_MODEM 0x00010FC2 Loading @@ -1040,8 +1040,12 @@ struct vss_istream_cmd_set_packet_exchange_mode_t { /* 80-VF690-47 UMTS AMR-NB vocoder modem format. */ /* 80-VF690-47 UMTS AMR-NB vocoder modem format. */ #define VSS_MEDIA_ID_AMR_WB_MODEM 0x00010FC7 #define VSS_MEDIA_ID_AMR_WB_MODEM 0x00010FC7 /* 80-VF690-47 UMTS AMR-WB vocoder modem format. */ /* 80-VF690-47 UMTS AMR-WB vocoder modem format. */ #define VSS_MEDIA_ID_PCM_NB 0x00010FCB #define VSS_MEDIA_ID_PCM_WB 0x00010FCC #define VSS_MEDIA_ID_PCM_8_KHZ 0x00010FCB #define VSS_MEDIA_ID_PCM_16_KHZ 0x00010FCC #define VSS_MEDIA_ID_PCM_32_KHZ 0x00010FD9 #define VSS_MEDIA_ID_PCM_48_KHZ 0x00010FD6 /* Linear PCM (16-bit, little-endian). */ /* Linear PCM (16-bit, little-endian). */ #define VSS_MEDIA_ID_G711_ALAW 0x00010FCD #define VSS_MEDIA_ID_G711_ALAW 0x00010FCD /* G.711 a-law (contains two 10ms vocoder frames). */ /* G.711 a-law (contains two 10ms vocoder frames). */ Loading Loading
sound/soc/msm/qdsp6v2/msm-pcm-voip-v2.c +17 −17 Original line number Original line Diff line number Diff line /* Copyright (c) 2012-2015, The Linux Foundation. All rights reserved. /* Copyright (c) 2012-2016, The Linux Foundation. All rights reserved. * * * This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and * it under the terms of the GNU General Public License version 2 and Loading Loading @@ -199,9 +199,10 @@ static struct snd_pcm_hardware msm_pcm_hardware = { SNDRV_PCM_INFO_INTERLEAVED), SNDRV_PCM_INFO_INTERLEAVED), .formats = SNDRV_PCM_FMTBIT_S16_LE | .formats = SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_SPECIAL, SNDRV_PCM_FMTBIT_SPECIAL, .rates = SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_16000, .rates = SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_16000 | SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_48000, .rate_min = 8000, .rate_min = 8000, .rate_max = 16000, .rate_max = 48000, .channels_min = 1, .channels_min = 1, .channels_max = 1, .channels_max = 1, .buffer_bytes_max = sizeof(struct voip_buf_node) * VOIP_MAX_Q_LEN, .buffer_bytes_max = sizeof(struct voip_buf_node) * VOIP_MAX_Q_LEN, Loading Loading @@ -316,7 +317,7 @@ static int msm_pcm_voip_probe(struct snd_soc_platform *platform) } } /* sample rate supported */ /* sample rate supported */ static unsigned int supported_sample_rates[] = {8000, 16000}; static unsigned int supported_sample_rates[] = {8000, 16000, 32000, 48000}; static void voip_ssr_cb_fn(uint32_t opcode, void *private_data) static void voip_ssr_cb_fn(uint32_t opcode, void *private_data) { { Loading Loading @@ -1142,21 +1143,16 @@ static int voip_config_vocoder(struct snd_pcm_substream *substream) } } pr_debug("%s(): media_type=%d\n", __func__, media_type); pr_debug("%s(): media_type=%d\n", __func__, media_type); if ((prtd->play_samp_rate == 8000) && if ((prtd->play_samp_rate == 8000 && prtd->cap_samp_rate == 8000) || (prtd->cap_samp_rate == 8000)) (prtd->play_samp_rate == 16000 && prtd->cap_samp_rate == 16000) || (prtd->play_samp_rate == 32000 && prtd->cap_samp_rate == 32000) || (prtd->play_samp_rate == 48000 && prtd->cap_samp_rate == 48000)) { voc_config_vocoder(media_type, rate_type, voc_config_vocoder(media_type, rate_type, VSS_NETWORK_ID_VOIP_NB, VSS_NETWORK_ID_VOIP, voip_info.dtx_mode, voip_info.dtx_mode, evrc_min_rate_type, evrc_min_rate_type, evrc_max_rate_type); evrc_max_rate_type); else if ((prtd->play_samp_rate == 16000) && } else { (prtd->cap_samp_rate == 16000)) voc_config_vocoder(media_type, rate_type, VSS_NETWORK_ID_VOIP_WB, voip_info.dtx_mode, evrc_min_rate_type, evrc_max_rate_type); else { pr_debug("%s: Invalid rate playback %d, capture %d\n", pr_debug("%s: Invalid rate playback %d, capture %d\n", __func__, prtd->play_samp_rate, __func__, prtd->play_samp_rate, prtd->cap_samp_rate); prtd->cap_samp_rate); Loading Loading @@ -1550,9 +1546,13 @@ static int voip_get_media_type(uint32_t mode, uint32_t rate_type, break; break; case MODE_PCM: case MODE_PCM: if (samp_rate == 8000) if (samp_rate == 8000) *media_type = VSS_MEDIA_ID_PCM_NB; *media_type = VSS_MEDIA_ID_PCM_8_KHZ; else if (samp_rate == 16000) *media_type = VSS_MEDIA_ID_PCM_16_KHZ; else if (samp_rate == 32000) *media_type = VSS_MEDIA_ID_PCM_32_KHZ; else else *media_type = VSS_MEDIA_ID_PCM_WB; *media_type = VSS_MEDIA_ID_PCM_48_KHZ; break; break; case MODE_IS127: /* EVRC-A */ case MODE_IS127: /* EVRC-A */ *media_type = VSS_MEDIA_ID_EVRC_MODEM; *media_type = VSS_MEDIA_ID_EVRC_MODEM; Loading
sound/soc/msm/qdsp6v2/q6voice.c +2 −2 Original line number Original line Diff line number Diff line Loading @@ -4199,7 +4199,7 @@ static int voice_send_netid_timing_cmd(struct voice_data *v) goto fail; goto fail; } } /* Set network ID. */ /* Set network ID. */ pr_debug("Setting network ID\n"); pr_debug("Setting network ID %x\n", common.mvs_info.network_type); mvm_set_network.hdr.hdr_field = APR_HDR_FIELD(APR_MSG_TYPE_SEQ_CMD, mvm_set_network.hdr.hdr_field = APR_HDR_FIELD(APR_MSG_TYPE_SEQ_CMD, APR_HDR_LEN(APR_HDR_SIZE), APR_HDR_LEN(APR_HDR_SIZE), Loading @@ -4210,7 +4210,7 @@ static int voice_send_netid_timing_cmd(struct voice_data *v) voice_get_idx_for_session(v->session_id); voice_get_idx_for_session(v->session_id); mvm_set_network.hdr.dest_port = mvm_handle; mvm_set_network.hdr.dest_port = mvm_handle; mvm_set_network.hdr.token = 0; mvm_set_network.hdr.token = 0; mvm_set_network.hdr.opcode = VSS_ICOMMON_CMD_SET_NETWORK; mvm_set_network.hdr.opcode = VSS_IMVM_CMD_SET_CAL_NETWORK; mvm_set_network.network.network_id = common.mvs_info.network_type; mvm_set_network.network.network_id = common.mvs_info.network_type; v->mvm_state = CMD_STATUS_FAIL; v->mvm_state = CMD_STATUS_FAIL; Loading
sound/soc/msm/qdsp6v2/q6voice.h +12 −8 Original line number Original line Diff line number Diff line /* Copyright (c) 2012-2015, The Linux Foundation. All rights reserved. /* Copyright (c) 2012-2016, The Linux Foundation. All rights reserved. * * * This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and * it under the terms of the GNU General Public License version 2 and Loading Loading @@ -1029,9 +1029,9 @@ struct vss_istream_cmd_set_packet_exchange_mode_t { #define VSS_IVOCPROC_PORT_ID_NONE 0xFFFF #define VSS_IVOCPROC_PORT_ID_NONE 0xFFFF #define VSS_NETWORK_ID_DEFAULT 0x00010037 #define VSS_NETWORK_ID_DEFAULT 0x00010037 #define VSS_NETWORK_ID_VOIP_NB 0x00011240 #define VSS_NETWORK_ID_VOIP_WB 0x00011241 /* Voice over Internet Protocol (VoIP) network ID. Common for all bands.*/ #define VSS_NETWORK_ID_VOIP_WV 0x00011242 #define VSS_NETWORK_ID_VOIP 0x00011362 /* Media types */ /* Media types */ #define VSS_MEDIA_ID_EVRC_MODEM 0x00010FC2 #define VSS_MEDIA_ID_EVRC_MODEM 0x00010FC2 Loading @@ -1040,8 +1040,12 @@ struct vss_istream_cmd_set_packet_exchange_mode_t { /* 80-VF690-47 UMTS AMR-NB vocoder modem format. */ /* 80-VF690-47 UMTS AMR-NB vocoder modem format. */ #define VSS_MEDIA_ID_AMR_WB_MODEM 0x00010FC7 #define VSS_MEDIA_ID_AMR_WB_MODEM 0x00010FC7 /* 80-VF690-47 UMTS AMR-WB vocoder modem format. */ /* 80-VF690-47 UMTS AMR-WB vocoder modem format. */ #define VSS_MEDIA_ID_PCM_NB 0x00010FCB #define VSS_MEDIA_ID_PCM_WB 0x00010FCC #define VSS_MEDIA_ID_PCM_8_KHZ 0x00010FCB #define VSS_MEDIA_ID_PCM_16_KHZ 0x00010FCC #define VSS_MEDIA_ID_PCM_32_KHZ 0x00010FD9 #define VSS_MEDIA_ID_PCM_48_KHZ 0x00010FD6 /* Linear PCM (16-bit, little-endian). */ /* Linear PCM (16-bit, little-endian). */ #define VSS_MEDIA_ID_G711_ALAW 0x00010FCD #define VSS_MEDIA_ID_G711_ALAW 0x00010FCD /* G.711 a-law (contains two 10ms vocoder frames). */ /* G.711 a-law (contains two 10ms vocoder frames). */ Loading