[Feature][ZXW-452]merge P54U02 version
Only Configure: No
Affected branch: master
Affected module: unknow
Is it affected on both ZXIC and MTK: only ZXIC
Self-test: Yes
Doc Update: No
Change-Id: I17e6795ab66e2b9d1cbbfec4b7c0028d666e177d
diff --git a/cp/ps/driver/src/chipsets/src/audio_base/audio_config/audioRef_cfg.c b/cp/ps/driver/src/chipsets/src/audio_base/audio_config/audioRef_cfg.c
index 1c21e8b..7489d52 100755
--- a/cp/ps/driver/src/chipsets/src/audio_base/audio_config/audioRef_cfg.c
+++ b/cp/ps/driver/src/chipsets/src/audio_base/audio_config/audioRef_cfg.c
@@ -807,6 +807,39 @@
zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, " zDrvVoiceConfig_Init start END!\n");
//zDrvVolte_LoopStart();
//zDrvVp_LoopStart(VP_PATH_SPEAKER);
+
+#if 1
+ if (audionvflag.isCloseVpBufferBak != 1)
+ {
+ ret = zCatAgt_Audio_Reg(10,VP_INOUT_BAK_BUFFER_SIZE,(UINT32)vpInOutBuffer.p_voiceRxInBuffer);
+ if(ret != DRV_SUCCESS){
+ zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVoiceConfig_Init RXIN register zCatAgt_Audio_Reg err\n");
+ }
+
+ ret = zCatAgt_Audio_Reg(12,VP_INOUT_BAK_BUFFER_SIZE,(UINT32)vpInOutBuffer.p_voiceTxInBuffer);
+ if(ret != DRV_SUCCESS){
+ zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVoiceConfig_Init TXIN register zCatAgt_Audio_Reg err\n");
+ }
+
+ ret = zCatAgt_Audio_Reg(13,VP_INOUT_BAK_BUFFER_SIZE,(UINT32)vpInOutBuffer.p_voiceTxOutPutBuffer);
+ if(ret != DRV_SUCCESS){
+ zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVoiceConfig_Init TXOUT register zCatAgt_Audio_Reg err\n");
+ }
+
+#ifdef _USE_VP_OUTPUT_RXOUT_DATA
+ ret = zCatAgt_Audio_Reg(11, VP_INOUT_BAK_BUFFER_SIZE, (UINT32)vpInOutBuffer.p_voiceRxOutPutBuffer);
+ if(ret != DRV_SUCCESS){
+ zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVoiceConfig_Init RXOUT register zCatAgt_Audio_Reg err\n");
+ }
+
+#else
+ ret = zCatAgt_Audio_Reg(11,VP_INOUT_NOBAK_BUFSIZE,(UINT32)vpInOutBuffer.p_voiceRxOutPutBuffer);
+ if(ret != DRV_SUCCESS){
+ zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvVoiceConfig_Init RXOUT register zCatAgt_Audio_Reg err\n");
+ }
+#endif
+#endif
+ }
return DRV_SUCCESS;
}
diff --git a/cp/ps/driver/src/chipsets/src/audio_base/audio_lib/amr/lib/armv7-a/GCC/amr.a b/cp/ps/driver/src/chipsets/src/audio_base/audio_lib/amr/lib/armv7-a/GCC/amr.a
index f84072c..e0cef6a 100755
--- a/cp/ps/driver/src/chipsets/src/audio_base/audio_lib/amr/lib/armv7-a/GCC/amr.a
+++ b/cp/ps/driver/src/chipsets/src/audio_base/audio_lib/amr/lib/armv7-a/GCC/amr.a
Binary files differ
diff --git a/cp/ps/driver/src/chipsets/src/audio_base/voiceprocess/hal_voiceprocess.c b/cp/ps/driver/src/chipsets/src/audio_base/voiceprocess/hal_voiceprocess.c
index 8193de0..efec067 100755
--- a/cp/ps/driver/src/chipsets/src/audio_base/voiceprocess/hal_voiceprocess.c
+++ b/cp/ps/driver/src/chipsets/src/audio_base/voiceprocess/hal_voiceprocess.c
@@ -36,6 +36,7 @@
#include "hal_audio_data.h"
//#define TEST_WHITE_NOISE
+//#define VB_DATA_LOSS_TEST
#ifdef TEST_WHITE_NOISE
#include "Fs8000_WhiteNoise_Mon.h"
//#include "Fs8000_Sine_440Hz_Mon.h"
@@ -57,6 +58,10 @@
#define VP_INOUT_BAK_BUFFER_SIZE 0x30000 // 0x60000
#define VP_INOUT_NOBAK_BUFSIZE 640
+#define VB_MAX_INT 0x7fffffff
+#define VB_MIN_INT 0 //(0-2<<31)//0x80000000
+
+#define VB_INT_OVERFLOW(x) if((x < VB_MIN_INT)||(x > VB_MAX_INT)) x = 0;
/****************************************************************************
* Local Types
****************************************************************************/
@@ -129,7 +134,7 @@
FALSE, //24 rxMuteEn
FALSE, //25 firstRegZCATFlag
#ifdef ECALL_SUPPORT
- 0 //26 ecallData
+ {0} //26 ecallData
#endif
};
@@ -260,6 +265,192 @@
* Function Definitions
****************************************************************************/
#ifdef CONFIG_VOICE_BUFFER_DRV
+#ifdef _VBUFF_IN_MULTI_CORE
+#define RPMSG_CAP_ID 1
+
+ZOSS_TIMER_ID s_voiceTimerId ;
+ZOSS_SEMAPHORE_ID s_voiceRdSema;
+ZOSS_SEMAPHORE_ID s_voiceWrSema;
+
+int timer_cb_count = 0;
+int first_full_flag = 0;
+int first_empty_flag = 0;
+
+int vb_read_count = 0;
+int vb_write_count = 0;
+
+
+void voiceTimerCallBack(SINT32 para)
+{
+ T_ZDrvRpMsg_Msg icp_pMsg = {0};
+
+ UINT8 s = 1;
+ icp_pMsg.actorID = RPMSG_CAP_ID;
+
+ icp_pMsg.chID = channel_41;
+ icp_pMsg.flag |= RPMSG_WRITE_INT;
+ icp_pMsg.buf = (void *)&s;
+ icp_pMsg.len = 1;
+
+
+ zOss_PutSemaphore(s_voiceWrSema);
+ zOss_PutSemaphore(s_voiceRdSema);
+ //zDrvRpMsg_Write(&icp_pMsg);
+ zDrvRpMsg_Write_Cap(&icp_pMsg);
+ timer_cb_count++;
+ VB_INT_OVERFLOW(timer_cb_count);
+#ifdef VB_DATA_LOSS_TEST
+
+ if((timer_cb_count%1000 ) == 0){
+ zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "%s:timer_cb_count(%d)\n",__func__,timer_cb_count);
+ if(timer_cb_count> 10000000)
+ timer_cb_count=0;
+ }
+
+#endif
+
+// zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "voiceTimerCallBack timer=%u\n", cpu_clock(0)>>10);
+}
+#define MAX_BUF_SIZE 640
+#define MAX_BUF_NUM 3
+
+
+enum{
+ UP_LINK,
+ DOWN_LINK
+};
+
+struct voice_ring_buffer {
+ volatile uint read_pos;
+ volatile uint write_pos;
+ volatile char data[];
+
+};
+struct voice_ring_buffer *voice_buff[2] = {NULL,NULL};
+
+
+
+static bool voice_buff_is_full(int read_pos, int write_pos)
+{
+
+
+ if ((write_pos - read_pos) >= 20000000) {
+ write_pos = write_pos - 20000000;
+ //voice_buff[UP_LINK]->write_pos = write_pos;
+ voice_buff[DOWN_LINK]->write_pos = write_pos;
+ }
+ return ((write_pos - read_pos) == MAX_BUF_NUM);
+}
+static bool voice_buff_is_empty(int read_pos, int write_pos)
+{
+
+ return (write_pos == read_pos);
+}
+static int voice_buffer_write( char *buf, int count)
+{
+ int read_pos, write_pos;
+
+
+ read_pos = voice_buff[DOWN_LINK]->read_pos;
+ write_pos = voice_buff[DOWN_LINK]->write_pos;
+ if(vb_write_count == 0){
+ zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO,"%s: first read_pos=%d write_pos=%d \n",__func__,read_pos,write_pos);
+ }
+
+
+ if(voice_buff_is_full(read_pos, write_pos)){
+ //zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "voice_buffer_read readbuffer is full \n");
+ first_full_flag++;
+ VB_INT_OVERFLOW(first_full_flag);
+ if(first_full_flag == 1)
+ zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "%s: writebuffer is full read_pos %d,write_pos %d,vb_write_count %d,count %d\n",__func__,read_pos,write_pos,vb_write_count,count);
+ return DRV_ERROR_FULL;
+ }
+ else {
+ vb_write_count++;
+
+ VB_INT_OVERFLOW(vb_write_count);
+ first_full_flag = 0;
+ zOss_Memcpy(&(voice_buff[DOWN_LINK]->data[(write_pos%MAX_BUF_NUM)*MAX_BUF_SIZE]), buf, count);
+
+ write_pos++;
+
+ voice_buff[DOWN_LINK]->write_pos = write_pos;
+
+ }
+
+ return DRV_SUCCESS;
+}
+static int voice_buffer_read(char *buf, size_t count)
+{
+ int read_pos, write_pos;
+ int* buf_int;
+ int i;
+
+ read_pos = voice_buff[UP_LINK]->read_pos;
+ write_pos = voice_buff[UP_LINK]->write_pos;
+ if(vb_read_count == 0){
+ zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO,"%s: first read_pos=%d write_pos=%d \n",__func__,read_pos,write_pos);
+ }
+
+ if ((count > 0) && (count <= MAX_BUF_SIZE)) {
+ if(voice_buff_is_empty(read_pos, write_pos)){
+ first_empty_flag++;
+ VB_INT_OVERFLOW(first_empty_flag);
+ if(first_empty_flag ==1)
+ zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO,"%s: readbuffer is empty,read_pos %d,write_pos %d,vb_read_count %d,count %d\n",__func__,read_pos,write_pos,vb_read_count,count);
+ //add memset,del return . edit for far end hear near end repreat voice pcm, FROM MBB TEST
+
+ #ifndef VB_DATA_LOSS_TEST
+ zOss_Memset(&(voice_buff[UP_LINK]->data[(read_pos%MAX_BUF_NUM)*MAX_BUF_SIZE]),0, count);
+ zOss_Memset(buf,0, count);
+ #endif
+ //return DRV_ERROR_EMPTY;
+
+
+ }
+ else {
+
+ vb_read_count++;
+ VB_INT_OVERFLOW(vb_read_count);
+ first_empty_flag = 0;
+
+ zOss_Memcpy(buf, &(voice_buff[UP_LINK]->data[(read_pos%MAX_BUF_NUM)*MAX_BUF_SIZE]), count);
+ //zOss_Memset(&(voice_buff[UP_LINK]->data[(read_pos%MAX_BUF_NUM)*MAX_BUF_SIZE]),0, count);
+
+#ifdef VB_DATA_LOSS_TEST
+
+
+ if(vb_read_count < 5){
+ pr_info("ps :count=%d vb_read_count=%d,read_pos=%d,write_pos=%d\n",count,vb_read_count,read_pos,write_pos);
+
+
+ buf_int =( int*) &voice_buff[UP_LINK]->data[(write_pos%MAX_BUF_NUM)*MAX_BUF_SIZE];
+
+ for(i=0;i<(count/4);i++){
+ //*(buf_int+i) = i;
+ //buf_int[i] = i;
+ if(i>0x1f)
+ zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO,"ps: *(buf_int+%d)=%d\n",i,*(buf_int+i));
+ }
+
+ }
+#endif
+ read_pos++;
+ if(read_pos == 20000000)
+ read_pos = 0;
+ voice_buff[UP_LINK]->read_pos = read_pos;
+ }
+
+
+ }
+
+
+ return DRV_SUCCESS;
+}
+
+
+#else
extern int voicebuffer_ulqueue_read(void *buf, unsigned int size);
extern int voicebuffer_dlqueue_write(void *buf, unsigned int size);
extern void voice_inform_to_app(void);
@@ -276,6 +467,10 @@
// zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "voiceTimerCallBack timer=%u\n", cpu_clock(0)>>10);
}
+
+
+#endif
+
SINT32 vp_rxsem_count_Init(void)
{
UINT32 i = 0;
@@ -561,6 +756,7 @@
if(g_voiceVar.ecallData.opt.drv_Get_Ecall_State == NULL)
{
+ zOss_Printf(SUBMDL_HAL, PRINT_LEVEL_NORMAL, "update_ecall_state get__ecall_state fun not register!\n");
return DRV_ERR_NOT_SUPPORTED;
}
@@ -570,7 +766,7 @@
{
wrsem_count_Init(ECALL_SEM);
g_voiceVar.ecallData.ecallRxSta = ECALL_ST_RX_INUSE;
- zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "update_ecall_state rx state change old ecallRxSta = %d\n", g_voiceVar.ecallData.ecallRxSta);
+ //zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "update_ecall_state rx state change old ecallRxSta = %d\n", g_voiceVar.ecallData.ecallRxSta);
}
else if((dir == DIR_TX)&&(g_voiceVar.ecallData.ecallTxSta != ECALL_ST_TX_INUSE))
@@ -578,13 +774,21 @@
rdsem_count_Init(ECALL_SEM);
g_voiceVar.ecallData.ecallTxSta = ECALL_ST_TX_INUSE;
- zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "update_ecall_state tx state change old ecallTxSta = %d\n", g_voiceVar.ecallData.ecallTxSta);
+ //zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "update_ecall_state tx state change old ecallTxSta = %d\n", g_voiceVar.ecallData.ecallTxSta);
}
+ else if(dir == DIR_RX)
+ {
+ g_voiceVar.ecallData.ecallRxSta = ECALL_ST_RX_INUSE;
+ }
+ else if(dir == DIR_TX)
+ {
+ g_voiceVar.ecallData.ecallTxSta = ECALL_ST_TX_INUSE;
+ }
else
{
zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "update_ecall_state return 1,but dir not support dir = %d\n",dir);
- ret = DRV_ERR_NOT_SUPPORTED;
+ ret = DRV_ERR_INVALID_PARAM;
}
@@ -604,7 +808,7 @@
else
{
zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "update_ecall_state return 0,but dir not support dir = %d\n",dir);
- ret = DRV_ERR_NOT_SUPPORTED;
+ ret = DRV_ERR_INVALID_PARAM;
}
@@ -1222,10 +1426,25 @@
slic_tw_dtmf_detect_open();
#endif
#ifdef CONFIG_VOICE_BUFFER_DRV
+#ifdef _VBUFF_IN_MULTI_CORE
+
+
+ vp_rxsem_count_Init();
+ vp_txsem_count_Init();
+ voice_buff[UP_LINK]->read_pos = 0;
+ voice_buff[UP_LINK]->write_pos = 0;
+ voice_buff[DOWN_LINK]->read_pos = 0;
+ voice_buff[DOWN_LINK]->write_pos = 0;
+ zOss_Memset(&(voice_buff[DOWN_LINK]->data[0]),0, MAX_BUF_NUM*MAX_BUF_SIZE);
+ zOss_Memset(&(voice_buff[UP_LINK]->data[0]),0, MAX_BUF_NUM*MAX_BUF_SIZE);
+
+#else
// INIT_COMPLETION(s_voice_copletion);
vp_rxsem_count_Init();
vp_txsem_count_Init();
#endif
+#endif
+
#ifdef ECALL_SUPPORT
if(g_voiceVar.audio_ctrlFlag.isUseEcall == 1)
{
@@ -1289,6 +1508,16 @@
dtmf_test.drv_dtmftx_report_cb = drv_dtmftx_report;
zDrvDtmf_Detect_RegCallbacks(dtmf_test);
#endif
+#if defined(CONFIG_VOICE_BUFFER_DRV) && defined(_VBUFF_IN_MULTI_CORE)
+
+ timer_cb_count = 0;
+ first_full_flag = 0;
+ first_empty_flag = 0;
+
+ vb_read_count = 0;
+ vb_write_count = 0;
+ zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_Open init voice buffer val!\n");
+#endif
return DRV_SUCCESS;
}
@@ -1355,8 +1584,11 @@
VOID zDrvVp_Status(UINT32 *sample_rate, UINT32 *voice_status)
{
- *sample_rate = g_voiceVar.sample_rate;
- *voice_status = g_voiceVar.vpI2sStatus;
+ if(NULL != sample_rate)
+ *sample_rate = g_voiceVar.sample_rate;
+
+ if(NULL != voice_status)
+ *voice_status = g_voiceVar.vpI2sStatus;
}
SINT32 vp_TdmCfgParam(T_ZDrvVp_Cfg *cfgParam)
@@ -1960,6 +2192,10 @@
zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_Close,s_vpState.pVpRxOutPutBuffer=%p\n", s_vpState.pVpRxOutPutBuffer);
zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_Close,s_vpState.pVpTxOutPutBuffer=%p\n", s_vpState.pVpTxOutPutBuffer);
zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_Close,s_vpState.inOutBufSize=%x\n", s_vpState.inOutBufSize);
+#if defined(CONFIG_VOICE_BUFFER_DRV) && defined(_VBUFF_IN_MULTI_CORE)
+
+ zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "%s: timer_cb_count %d,first_full_flag %d,first_empty_flag %d,vb_read_count %d,vb_write_count %d!\n",__func__,timer_cb_count,first_full_flag,first_empty_flag,vb_read_count,vb_write_count);
+#endif
return DRV_SUCCESS;
}
@@ -2027,8 +2263,12 @@
{
zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_VoiceI2sStart error14:zDrvI2S_Write I2S_2 ret=%d", ret);
}
+#ifdef _VBUFF_IN_MULTI_CORE
+ voice_buffer_write(s_speechState.pVpTempRxOutPutBuffer, s_speechState.totalFrameBufSize);
+#else
voicebuffer_dlqueue_write(s_speechState.pVpTempRxOutPutBuffer, s_speechState.totalFrameBufSize);
+#endif
#else
if (g_voiceVar.isUseSlicCodec == 1)
{
@@ -2492,7 +2732,12 @@
g_voiceVar.vpI2sStatus = VP_I2S_INUSE;
#ifdef CONFIG_VOICE_BUFFER_DRV
+#ifdef _VBUFF_IN_MULTI_CORE
+ voice_buffer_write(s_speechState.pVpTempRxOutPutBuffer, s_speechState.totalFrameBufSize);
+
+#else
voicebuffer_dlqueue_write(s_speechState.pVpTempRxOutPutBuffer, s_speechState.totalFrameBufSize);
+#endif
#else
ret = zDrvExtAudio_GetBuf(&write_buf, &write_len);
if (ret != DRV_SUCCESS)
@@ -2685,8 +2930,12 @@
}
//wait_for_completion_timeout(&s_voice_completion, 60);
zOss_GetSemaphore(s_voiceWrSema, 60);
- voicebuffer_dlqueue_write(s_speechState.pVpTempRxOutPutBuffer, s_speechState.totalFrameBufSize);
+#ifdef _VBUFF_IN_MULTI_CORE
+ voice_buffer_write(s_speechState.pVpTempRxOutPutBuffer, s_speechState.totalFrameBufSize);
+#else
+ voicebuffer_dlqueue_write(s_speechState.pVpTempRxOutPutBuffer, s_speechState.totalFrameBufSize);
+#endif
if (g_voiceVar.voiceInVolteMode == 1)
{
s_speechState.rxSaveLen += s_speechState.totalFrameBufSize;
@@ -2695,10 +2944,14 @@
s_speechState.rxSaveLen = 0;
}
s_speechState.pVpTempRxInBuffer = s_vpState.pVpRxInBuffer + s_speechState.rxSaveLen;
+#ifdef _USE_VP_OUTPUT_RXOUT_DATA
+ s_speechState.pVpTempRxOutPutBuffer = s_vpState.pVpRxOutPutBuffer + s_speechState.rxSaveLen;
+#else
s_speechState.pVpTempRxOutPutBuffer = s_vpState.pVpRxOutPutBuffer;
+#endif
}
-#else
+#else //not defined CONFIG_VOICE_BUFFER_DRV
if (e_reg_flag == 1)
{
#ifdef ECALL_SUPPORT
@@ -2961,7 +3214,12 @@
// wait_for_completion_timeout(&s_voice_completion, 60);
zOss_GetSemaphore(s_voiceRdSema, 60);
+#ifdef _VBUFF_IN_MULTI_CORE
+ voice_buffer_read(s_speechState.pVpTempTxInBuffer, s_speechState.totalFrameBufSize);
+
+#else
voicebuffer_ulqueue_read(s_speechState.pVpTempTxInBuffer, s_speechState.totalFrameBufSize);
+#endif
if (g_voiceVar.vProcIsNormal == TRUE)
{
VoiceProc_TxProcess(&s_speechState.pVpTempTxInBuffer, NULL, &s_speechState.pVpTempTxOutPutBuffer, s_speechState.frameCount);
@@ -3299,205 +3557,204 @@
break;
}
//zOss_Memcpy((VOID *)( s_speechState.pVpTempRxOutPutBuffer), (VOID *) s_speechState.pVpTempRxInBuffer, VP_I2S_BUFFER_SIZE);
- }
- else
- {
- zOss_Memcpy((VOID *)(s_speechState.pVpTempRxOutPutBuffer), (VOID *) s_speechState.pVpTempRxInBuffer, 320);
- }
+ else
+ {
+ zOss_Memcpy((VOID *)(s_speechState.pVpTempRxOutPutBuffer), (VOID *) s_speechState.pVpTempRxInBuffer, 320);
+ }
- if (g_voiceVar.vpI2sStatus != VP_I2S_INUSE)
- {
- break;
- }
+ if (g_voiceVar.vpI2sStatus != VP_I2S_INUSE)
+ {
+ break;
+ }
#if 1
- //zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "downlink:i2s1 write to codec\n");
- /*downlink:write to codec*/
- ret = zDrvExtAudio_GetBuf(&write_buf, &write_len);
+ //zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "downlink:i2s1 write to codec\n");
+ /*downlink:write to codec*/
+ ret = zDrvExtAudio_GetBuf(&write_buf, &write_len);
- //zOss_ASSERT(write_buf != NULL);
- //zOss_ASSERT(write_len != 0);
+ //zOss_ASSERT(write_buf != NULL);
+ //zOss_ASSERT(write_len != 0);
#if 0
- if (s_speechState.saveLen == 3200)
- {
- zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvI2S_GetBuf:I2S1:ret=%d,write_buf = %x,write_len = %d.\n", ret, write_buf, write_len);
- }
+ if (s_speechState.saveLen == 3200)
+ {
+ zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvI2S_GetBuf:I2S1:ret=%d,write_buf = %x,write_len = %d.\n", ret, write_buf, write_len);
+ }
#endif
- //if(ret == DRV_SUCCESS)
- if ((ret == DRV_SUCCESS) && (write_buf != NULL) && (write_len != 0))
- {
+ //if(ret == DRV_SUCCESS)
+ if ((ret == DRV_SUCCESS) && (write_buf != NULL) && (write_len != 0))
+ {
- if ((s_vpState.pVpExtI2sCfg->tClkMode == PCM_TIME_MODE) && (s_vpState.pVpExtI2sCfg->tPcmSlotNum != PCM_1TIME_SLOT))
- {
- //It is used for xinke to set teak voice gain when open lvwenhua 20150709
- zOss_Memset(write_buf, 0, write_len);
- for (i = 0; i < VP_I2S_BUFFER_SIZE;)
- {
- * (write_buf + i * (s_vpState.pVpExtI2sCfg->tPcmSlotNum + 1)) = * (s_speechState.pVpTempRxOutPutBuffer + i);
- * (write_buf + i * (s_vpState.pVpExtI2sCfg->tPcmSlotNum + 1) + 1) = * (s_speechState.pVpTempRxOutPutBuffer + i + 1);
- i += 2;
- }
- }
- else
+ if ((s_vpState.pVpExtI2sCfg->tClkMode == PCM_TIME_MODE) && (s_vpState.pVpExtI2sCfg->tPcmSlotNum != PCM_1TIME_SLOT))
+ {
+ //It is used for xinke to set teak voice gain when open lvwenhua 20150709
+ zOss_Memset(write_buf, 0, write_len);
+ for (i = 0; i < VP_I2S_BUFFER_SIZE;)
+ {
+ * (write_buf + i * (s_vpState.pVpExtI2sCfg->tPcmSlotNum + 1)) = * (s_speechState.pVpTempRxOutPutBuffer + i);
+ * (write_buf + i * (s_vpState.pVpExtI2sCfg->tPcmSlotNum + 1) + 1) = * (s_speechState.pVpTempRxOutPutBuffer + i + 1);
+ i += 2;
+ }
+ }
+ else
- {
- zOss_Memcpy(write_buf, s_speechState.pVpTempRxOutPutBuffer, VP_I2S_BUFFER_SIZE);
- //zOss_Memcpy(write_buf, s_speechState.pVpTempRxInBuffer,320);
- }
- }
- else
- {
- zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "write else zDrvI2S_GetBuf:I2S1:ret=%d,write_buf = %x,write_len = %d.\n", ret, write_buf, write_len);
- break;
- }
- ret = zDrvExtAudio_Write(write_buf, write_len);
- if (ret != DRV_SUCCESS)
- {
- zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvI2S_Write:I2S_1:ret=%d,write_buf = %x,write_len = %d.\n", ret, write_buf, write_len);
- break;
- }
+ {
+ zOss_Memcpy(write_buf, s_speechState.pVpTempRxOutPutBuffer, VP_I2S_BUFFER_SIZE);
+ //zOss_Memcpy(write_buf, s_speechState.pVpTempRxInBuffer,320);
+ }
+ }
+ else
+ {
+ zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "write else zDrvI2S_GetBuf:I2S1:ret=%d,write_buf = %x,write_len = %d.\n", ret, write_buf, write_len);
+ break;
+ }
+ ret = zDrvExtAudio_Write(write_buf, write_len);
+ if (ret != DRV_SUCCESS)
+ {
+ zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvI2S_Write:I2S_1:ret=%d,write_buf = %x,write_len = %d.\n", ret, write_buf, write_len);
+ break;
+ }
#endif
#endif
- if (g_voiceVar.vpI2sStatus != VP_I2S_INUSE)
- {
- break;
- }
+ if (g_voiceVar.vpI2sStatus != VP_I2S_INUSE)
+ {
+ break;
+ }
- /*uplink:read from codec*/
- // zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "downlink:i2s1 read from codec\n");
- vp_ReadDataFromCodec(s_speechState.pVpTempTxOutPutBuffer, s_speechState.i2sReadParam.buffersize);
+ /*uplink:read from codec*/
+ // zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "downlink:i2s1 read from codec\n");
+ vp_ReadDataFromCodec(s_speechState.pVpTempTxOutPutBuffer, s_speechState.i2sReadParam.buffersize);
#if 0
- ret = zDrvExtAudio_Read(&read_buf, &read_len);
+ ret = zDrvExtAudio_Read(&read_buf, &read_len);
- //zOss_ASSERT(read_buf != NULL);
- //zOss_ASSERT(read_len != 0);
+ //zOss_ASSERT(read_buf != NULL);
+ //zOss_ASSERT(read_len != 0);
#if 0
- if (s_speechState.saveLen == 3200)
- {
- zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvI2S_GetBuf:I2S1:ret=%d,read_buf = %x,read_len = %d.\n", ret, read_buf, read_len);
- }
+ if (s_speechState.saveLen == 3200)
+ {
+ zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvI2S_GetBuf:I2S1:ret=%d,read_buf = %x,read_len = %d.\n", ret, read_buf, read_len);
+ }
#endif
- //if(ret == DRV_SUCCESS)
- if ((ret == DRV_SUCCESS) && (read_buf != NULL) && (read_len != 0))
- {
- if ((s_vpState.pVpExtI2sCfg->tClkMode == PCM_TIME_MODE) && (s_vpState.pVpExtI2sCfg->tPcmSlotNum != PCM_1TIME_SLOT))
- {
- //It is used for xinke to set teak voice gain when open lvwenhua 20150709
- for (i = 0; i < VP_I2S_BUFFER_SIZE;)
- {
- * (s_speechState.pVpTempTxInBuffer + i) = * (read_buf + i * (s_vpState.pVpExtI2sCfg->tPcmSlotNum + 1));
- * (s_speechState.pVpTempTxInBuffer + i + 1) = * (read_buf + i * (s_vpState.pVpExtI2sCfg->tPcmSlotNum + 1) + 1);
- i += 2;
- }
- }
- else
- {
- zOss_Memcpy(s_speechState.pVpTempTxInBuffer, read_buf, VP_I2S_BUFFER_SIZE);
- }
- }
- else
- {
- zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvI2S_Read:I2S1:ret=%d,read_buf = %p,read_len = %d.\n", ret, read_buf, read_len);
- break;
- }
- ret = zDrvExtAudio_FreeBuf(read_buf);
- if (ret != DRV_SUCCESS)
- {
- zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvI2S_FreeBuf:I2S1:ret=%d,read_buf = %x.\n", ret, read_buf);
- break;
- }
+ //if(ret == DRV_SUCCESS)
+ if ((ret == DRV_SUCCESS) && (read_buf != NULL) && (read_len != 0))
+ {
+ if ((s_vpState.pVpExtI2sCfg->tClkMode == PCM_TIME_MODE) && (s_vpState.pVpExtI2sCfg->tPcmSlotNum != PCM_1TIME_SLOT))
+ {
+ //It is used for xinke to set teak voice gain when open lvwenhua 20150709
+ for (i = 0; i < VP_I2S_BUFFER_SIZE;)
+ {
+ * (s_speechState.pVpTempTxInBuffer + i) = * (read_buf + i * (s_vpState.pVpExtI2sCfg->tPcmSlotNum + 1));
+ * (s_speechState.pVpTempTxInBuffer + i + 1) = * (read_buf + i * (s_vpState.pVpExtI2sCfg->tPcmSlotNum + 1) + 1);
+ i += 2;
+ }
+ }
+ else
+ {
+ zOss_Memcpy(s_speechState.pVpTempTxInBuffer, read_buf, VP_I2S_BUFFER_SIZE);
+ }
+ }
+ else
+ {
+ zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvI2S_Read:I2S1:ret=%d,read_buf = %p,read_len = %d.\n", ret, read_buf, read_len);
+ break;
+ }
+ ret = zDrvExtAudio_FreeBuf(read_buf);
+ if (ret != DRV_SUCCESS)
+ {
+ zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvI2S_FreeBuf:I2S1:ret=%d,read_buf = %x.\n", ret, read_buf);
+ break;
+ }
- if (g_voiceVar.vpI2sStatus != VP_I2S_INUSE)
- {
- break;
- }
+ if (g_voiceVar.vpI2sStatus != VP_I2S_INUSE)
+ {
+ break;
+ }
- /*uplink:voice process*/
- if (g_voiceVar.vProcIsNormal == TRUE)
- ret = VoiceProc_TxProcess(& s_speechState.pVpTempTxInBuffer, NULL, & s_speechState.pVpTempTxOutPutBuffer);
- if (ret != DRV_SUCCESS)
- {
- zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_DataProcessThreadEntry error:VoiceProc_TxProcess :ret=%d.\n", ret);
- break;
- }
- //zOss_Memcpy((VOID *)( s_speechState.pVpTempTxOutPutBuffer), (VOID *) s_speechState.pVpTempTxInBuffer, VP_I2S_BUFFER_SIZE);
- }
- else
- {
+ /*uplink:voice process*/
+ if (g_voiceVar.vProcIsNormal == TRUE)
+ ret = VoiceProc_TxProcess(& s_speechState.pVpTempTxInBuffer, NULL, & s_speechState.pVpTempTxOutPutBuffer);
+ if (ret != DRV_SUCCESS)
+ {
+ zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_DataProcessThreadEntry error:VoiceProc_TxProcess :ret=%d.\n", ret);
+ break;
+ }
+ //zOss_Memcpy((VOID *)( s_speechState.pVpTempTxOutPutBuffer), (VOID *) s_speechState.pVpTempTxInBuffer, VP_I2S_BUFFER_SIZE);
+ else
+ {
- //no nxp lib lwenhua 20150317
- //VoiceProc_TxProcess(& s_speechState.pVpTempTxInBuffer, NULL, & s_speechState.pVpTempTxOutPutBuffer);
- zOss_Memcpy((VOID *)(s_speechState.pVpTempTxOutPutBuffer), (VOID *) s_speechState.pVpTempTxInBuffer, 320);
- }
+ //no nxp lib lwenhua 20150317
+ //VoiceProc_TxProcess(& s_speechState.pVpTempTxInBuffer, NULL, & s_speechState.pVpTempTxOutPutBuffer);
+ zOss_Memcpy((VOID *)(s_speechState.pVpTempTxOutPutBuffer), (VOID *) s_speechState.pVpTempTxInBuffer, 320);
+ }
#endif
- if (g_voiceVar.vpI2sStatus != VP_I2S_INUSE)
- {
- break;
- }
+ if (g_voiceVar.vpI2sStatus != VP_I2S_INUSE)
+ {
+ break;
+ }
- /*uplink:write to teak*/
- //zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "downlink:i2s2 write to teak\n");
- ret = zDrvI2S_GetBuf(I2S_2, &write_buf, &write_len);
+ /*uplink:write to teak*/
+ //zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "downlink:i2s2 write to teak\n");
+ ret = zDrvI2S_GetBuf(I2S_2, &write_buf, &write_len);
- //zOss_ASSERT(write_buf != NULL);
- //zOss_ASSERT(write_len != 0);
+ //zOss_ASSERT(write_buf != NULL);
+ //zOss_ASSERT(write_len != 0);
#if 0
- if (s_speechState.saveLen == 3200)
- {
- zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvI2S_GetBuf:I2S2:ret=%d,write_buf = %x,write_len = %d.\n", ret, write_buf, write_len);
- }
+ if (s_speechState.saveLen == 3200)
+ {
+ zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvI2S_GetBuf:I2S2:ret=%d,write_buf = %x,write_len = %d.\n", ret, write_buf, write_len);
+ }
#endif
- //if(ret == DRV_SUCCESS)
- if ((ret == DRV_SUCCESS) && (write_buf != NULL) && (write_len != 0))
- {
- zOss_Memcpy(write_buf, s_speechState.pVpTempTxOutPutBuffer, s_speechState.totalFrameBufSize);
- //zOss_Memcpy(write_buf, s_speechState.pVpTempTxInBuffer,320);
- }
- else
- {
- zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvI2S_GetBuf:I2S2:ret=%d,write_buf = %p,write_len = %d.\n", ret, write_buf, write_len);
- break;
- }
- ret = zDrvI2S_Write(I2S_2, write_buf, write_len);
- if (ret != DRV_SUCCESS)
- {
- zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvI2S_Write:I2S2:ret=%d,write_buf = %p,write_len = %d.\n", ret, write_buf, write_len);
- break;
- }
+ //if(ret == DRV_SUCCESS)
+ if ((ret == DRV_SUCCESS) && (write_buf != NULL) && (write_len != 0))
+ {
+ zOss_Memcpy(write_buf, s_speechState.pVpTempTxOutPutBuffer, s_speechState.totalFrameBufSize);
+ //zOss_Memcpy(write_buf, s_speechState.pVpTempTxInBuffer,320);
+ }
+ else
+ {
+ zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvI2S_GetBuf:I2S2:ret=%d,write_buf = %p,write_len = %d.\n", ret, write_buf, write_len);
+ break;
+ }
+ ret = zDrvI2S_Write(I2S_2, write_buf, write_len);
+ if (ret != DRV_SUCCESS)
+ {
+ zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "zDrvI2S_Write:I2S2:ret=%d,write_buf = %p,write_len = %d.\n", ret, write_buf, write_len);
+ break;
+ }
#if 0
- if (s_speechState.saveLen == 3200)
- {
- zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_DataProcessThreadEntry: s_speechState.saveLen = %d.\n", s_speechState.saveLen);
- }
+ if (s_speechState.saveLen == 3200)
+ {
+ zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_DataProcessThreadEntry: s_speechState.saveLen = %d.\n", s_speechState.saveLen);
+ }
#endif
- //if( s_speechState.saveLen < VP_BUF_LENGTH)
- {
- s_speechState.saveLen += s_speechState.totalFrameBufSize;
- if (s_speechState.saveLen >= s_speechState.inOutBufUseSize)
- {
- s_speechState.saveLen = 0;
- }
- s_speechState.pVpTempRxInBuffer = s_vpState.pVpRxInBuffer + s_speechState.saveLen;
- s_speechState.pVpTempTxInBuffer = s_vpState.pVpTxInBuffer + s_speechState.saveLen;
- s_speechState.pVpTempTxOutPutBuffer = s_vpState.pVpTxOutPutBuffer + s_speechState.saveLen;
+ //if( s_speechState.saveLen < VP_BUF_LENGTH)
+ {
+ s_speechState.saveLen += s_speechState.totalFrameBufSize;
+ if (s_speechState.saveLen >= s_speechState.inOutBufUseSize)
+ {
+ s_speechState.saveLen = 0;
+ }
+ s_speechState.pVpTempRxInBuffer = s_vpState.pVpRxInBuffer + s_speechState.saveLen;
+ s_speechState.pVpTempTxInBuffer = s_vpState.pVpTxInBuffer + s_speechState.saveLen;
+ s_speechState.pVpTempTxOutPutBuffer = s_vpState.pVpTxOutPutBuffer + s_speechState.saveLen;
#ifdef _USE_VP_OUTPUT_RXOUT_DATA
- s_speechState.pVpTempRxOutPutBuffer = s_vpState.pVpRxOutPutBuffer + s_speechState.saveLen;
+ s_speechState.pVpTempRxOutPutBuffer = s_vpState.pVpRxOutPutBuffer + s_speechState.saveLen;
#else
- s_speechState.pVpTempRxOutPutBuffer = s_vpState.pVpRxOutPutBuffer;
+ s_speechState.pVpTempRxOutPutBuffer = s_vpState.pVpRxOutPutBuffer;
#endif
- }
-}
+ }
+ }
-vp_VoiceI2sStop();
-zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_DataProcessThreadEntry work end.\n");
-zOss_Printf(SUBMDL_HAL, PRINT_LEVEL_NORMAL, "voice vp_DataProcessThreadEntry work end!\n");
+ vp_VoiceI2sStop();
-}
+ zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_DataProcessThreadEntry work end.\n");
+ zOss_Printf(SUBMDL_HAL, PRINT_LEVEL_NORMAL, "voice vp_DataProcessThreadEntry work end!\n");
+
+ }
}
#ifdef _OS_TOS
@@ -3586,6 +3843,49 @@
zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "voice_frameTimer failed\n");
return DRV_ERROR;
}
+#ifdef _VBUFF_IN_MULTI_CORE
+ SINT32 ret = 0;
+
+ //ret = zDrvRpMsg_CreateChannel(IPC_MSG_ACTOR_A9,channel_41,0x10);
+ ret = zDrvRpMsg_CreateChannel_Cap(RPMSG_CAP_ID,channel_41,0x10);
+
+ if(DRV_SUCCESS != ret) {
+ zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "create rpmsg err(%d) \n",ret);
+ return DRV_ERROR;
+ }
+
+ volatile T_ZDrvRpMsg_Msg icp_pMsg = {0};
+ volatile unsigned int rpMsgBuf[2] = {0,0};
+ //printk( "vir_buf1:0x%x, vir_buf2:0x%x, phy_buf1:0x%x, phy_buf2:0x%x,\n",voice_buff[0],voice_buff[1],rpMsgBuf[0],rpMsgBuf[1]);
+ icp_pMsg.actorID = RPMSG_CAP_ID;
+ icp_pMsg.chID = channel_41;
+ icp_pMsg.flag &= ~RPMSG_READ_POLL;
+ icp_pMsg.buf = rpMsgBuf;
+ icp_pMsg.len = 8;
+ ret = zDrvRpMsg_Read_Cap(&icp_pMsg);
+ if(ret <= 0){
+ zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "voice buffer rpmsg addr read fail,ret=%d \n",ret);
+ zOss_Printf(SUBMDL_HAL, PRINT_LEVEL_NORMAL, "ps voice buffer rpmsg addr read fail,ret=%d \n",ret);
+
+
+ }
+ else{
+ #if 0
+
+ voice_buff[UP_LINK] = (struct voice_ring_buffer *)(rpMsgBuf[0]);
+ voice_buff[DOWN_LINK] = (struct voice_ring_buffer *)(rpMsgBuf[1]);
+ #else
+
+ voice_buff[UP_LINK] = (struct voice_ring_buffer *)ioremap_wc(rpMsgBuf[0], (sizeof(struct voice_ring_buffer) + MAX_BUF_SIZE*MAX_BUF_NUM));
+ voice_buff[DOWN_LINK] = (struct voice_ring_buffer *)ioremap_wc(rpMsgBuf[1],(sizeof(struct voice_ring_buffer) + MAX_BUF_SIZE*MAX_BUF_NUM));
+ #endif
+
+ zOss_Printf(SUBMDL_HAL, PRINT_LEVEL_NORMAL, "ps rpmsg voice buffer addr,up vir buf=0x%x, down vir buf=0x%x ,up phy buf=0x%x, down phy buf=0x%x,size=%d \n" \
+ ,voice_buff[0],voice_buff[1],rpMsgBuf[0],rpMsgBuf[1],(sizeof(struct voice_ring_buffer) + MAX_BUF_SIZE*MAX_BUF_NUM));
+ zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "voice buffer addr,up vir buf=0x%x, down vir buf=0x%x ,up phy buf=0x%x, down phy buf=0x%x,size=%d \n" \
+ ,voice_buff[0],voice_buff[1],rpMsgBuf[0],rpMsgBuf[1],(sizeof(struct voice_ring_buffer) + MAX_BUF_SIZE*MAX_BUF_NUM));
+ }
+#endif
#endif
zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_CreateThreadSemaph success. \r\n");
@@ -4032,39 +4332,39 @@
// pVoiceLoopInSaveBuffer = s_speechState.pVpTempTxOutPutBuffer;
// pVoiceLoopOutSaveBuffer = s_speechState.pVpTempRxInBuffer;
#endif
-
+#if 0
if (FALSE == g_voiceVar.firstRegZCATFlag) {
ret = zCatAgt_Audio_Reg(10,VP_INOUT_BAK_BUFFER_SIZE,(UINT32)vpInOutBuffer.p_voiceRxInBuffer);
if(ret != DRV_SUCCESS){
- zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_Open RXIN register zCatAgt_Audio_Reg err\n");
+ zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_LoopProcessThreadEntry RXIN register zCatAgt_Audio_Reg err\n");
}
ret = zCatAgt_Audio_Reg(12,VP_INOUT_BAK_BUFFER_SIZE,(UINT32)vpInOutBuffer.p_voiceTxInBuffer);
if(ret != DRV_SUCCESS){
- zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_Open TXIN register zCatAgt_Audio_Reg err\n");
+ zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_LoopProcessThreadEntry TXIN register zCatAgt_Audio_Reg err\n");
}
ret = zCatAgt_Audio_Reg(13,VP_INOUT_BAK_BUFFER_SIZE,(UINT32)vpInOutBuffer.p_voiceTxOutPutBuffer);
if(ret != DRV_SUCCESS){
- zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_Open TXOUT register zCatAgt_Audio_Reg err\n");
+ zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_LoopProcessThreadEntry TXOUT register zCatAgt_Audio_Reg err\n");
}
#ifdef _USE_VP_OUTPUT_RXOUT_DATA
ret = zCatAgt_Audio_Reg(11, VP_INOUT_BAK_BUFFER_SIZE, (UINT32)vpInOutBuffer.p_voiceRxOutPutBuffer);
if(ret != DRV_SUCCESS){
- zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_Open RXOUT register zCatAgt_Audio_Reg err\n");
+ zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_LoopProcessThreadEntry RXOUT register zCatAgt_Audio_Reg err\n");
}
#else
ret = zCatAgt_Audio_Reg(11,VP_INOUT_NOBAK_BUFSIZE,(UINT32)vpInOutBuffer.p_voiceRxOutPutBuffer);
if(ret != DRV_SUCCESS){
- zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_Open RXOUT register zCatAgt_Audio_Reg err\n");
+ zDrvRamlog_PRINTF(RAMLOG_MOD_AUDIO, "vp_LoopProcessThreadEntry RXOUT register zCatAgt_Audio_Reg err\n");
}
#endif
g_voiceVar.firstRegZCATFlag = TRUE;
}
-
+#endif
zOss_Sleep(500);
ret = zDrvVp_LoopStartDo();
if (ret != DRV_SUCCESS)
diff --git a/cp/ps/driver/ws/drv_cfg.mk b/cp/ps/driver/ws/drv_cfg.mk
old mode 100644
new mode 100755
index 4c5834b..4934471
--- a/cp/ps/driver/ws/drv_cfg.mk
+++ b/cp/ps/driver/ws/drv_cfg.mk
@@ -176,7 +176,10 @@
#USE_NXP_AUD = yes
USE_AUDIENCE = no
-
+ifeq ($(USE_VOICE_BUFFER_IN_CAP),yes)
+DEFINE += -DCONFIG_VOICE_BUFFER_DRV
+DEFINE += -D_VBUFF_IN_MULTI_CORE
+endif