// ========================================================================== // // Function Name: csl_audvoc_render_configure // // Description: Configure the audio path render // // ========================================================================= Result_t csl_audio_render_configure ( AUDIO_SAMPLING_RATE_t sampleRate, AUDIO_CHANNEL_NUM_t numChannels, AUDIO_BITS_PER_SAMPLE_t bitsPerSample, UInt8 *ringBuffer, UInt32 numBlocks, UInt32 blockSize, CSL_AUDRENDER_CB csl_audio_render_cb, UInt32 streamID ) { OSDAL_DMA_DWIDTH dataWidth = OSDAL_DMA_DATA_SIZE_16BIT; // default is 16 OSDAL_DMA_CLIENT dstClient = OSDAL_DMA_CLIENT_AUDIO_OUT_FIFO; CSL_AUDVOC_Drv_t *audDrv = NULL; OSDAL_DMA_CALLBACK dmaCB = NULL; Log_DebugPrintf(LOGID_SOC_AUDIO, "csl_audvoc_render_configure:: streamID = 0x%x, sampleRate =0x%x, numChannels = 0x%x, numbBuffers = 0x%x, blockSize = 0x%x\n", streamID, sampleRate, numChannels, numBlocks, blockSize); if (numChannels==AUDIO_CHANNEL_STEREO || numChannels==AUDIO_CHANNEL_STEREO_LEFT || numChannels==AUDIO_CHANNEL_STEREO_RIGHT) { dataWidth = OSDAL_DMA_DATA_SIZE_32BIT; } audDrv = GetDriverByType (streamID); if (audDrv == NULL) return RESULT_ERROR; audDrv->dmaCB = csl_audio_render_cb; if (streamID == CSL_AUDVOC_STREAM_AUDIO) { dmaCB = (OSDAL_DMA_CALLBACK)AUDIO_DMA_CB; //chal_audioaopath_SetSampleRate (NULL, sampleRate ); } else if (streamID == CSL_AUDVOC_STREAM_POLYRINGER) { dmaCB = (OSDAL_DMA_CALLBACK)PLR_DMA_CB; //chal_audiopopath_SetSampleRate (NULL, sampleRate ); dstClient = OSDAL_DMA_CLIENT_POLYRING_OUT_FIFO; } if ( ConfigDMA (audDrv->dmaCH, ringBuffer, numBlocks, blockSize, dstClient, dataWidth, dmaCB) != RESULT_OK) { // do clean up } return RESULT_OK; }
// ========================================================================== // // Function Name: csl_audvoc_capture_configure // // Description: Configure audio path capture. // // ========================================================================= Result_t csl_audio_capture_configure( AUDIO_SAMPLING_RATE_t sampleRate, AUDIO_CHANNEL_NUM_t numChannels, AUDIO_BITS_PER_SAMPLE_t bitsPerSample, UInt8 *ringBuffer, UInt32 numBlocks, UInt32 blockSize, CSL_AUDCAPTURE_CB csl_audio_capture_cb, UInt32 streamID ) { OSDAL_DMA_DWIDTH dataWidth = OSDAL_DMA_DATA_SIZE_16BIT; // default is 16 OSDAL_DMA_CLIENT srcClient = OSDAL_DMA_CLIENT_AUDIO_IN_FIFO; CSL_AUDVOC_Drv_t *audDrv = NULL; OSDAL_DMA_CALLBACK dmaCB = NULL; Log_DebugPrintf(LOGID_SOC_AUDIO, "csl_audvoc_capture_configure:: DMA streamID = 0x%x, sampleRate =0x%x, numChannels = 0x%x, bits/sample = 0x%x numbBuffers = 0x%x, blockSize = 0x%x\n", streamID, sampleRate, numChannels, bitsPerSample, numBlocks, blockSize); if (numChannels == AUDIO_CHANNEL_STEREO) { dataWidth = OSDAL_DMA_DATA_SIZE_32BIT; } audDrv = GetDriverByType (streamID); if (audDrv == NULL) return RESULT_ERROR; audDrv->dmaCB = csl_audio_capture_cb; if (streamID == CSL_AUDVOC_STREAM_AUDIO) { dmaCB = (OSDAL_DMA_CALLBACK)AUDIO_DMA_CB; } else if (streamID == CSL_AUDVOC_STREAM_BTW) { dmaCB = (OSDAL_DMA_CALLBACK)BTW_DMA_CB; srcClient = OSDAL_DMA_CLIENT_AUDIO_WB_MIXERTAP; } if ( ConfigDMA (audDrv->dmaCH, ringBuffer, numBlocks, blockSize, srcClient, dataWidth, dmaCB) != RESULT_OK) { // do clean up } return RESULT_OK; }