コード例 #1
0
//=============================================================================
//
// Function Name: AUDDRV_Init
//
// Description:   Initialize audio system
//
//=============================================================================
void AUDDRV_Init( void )
{
	Log_DebugPrintf(LOGID_AUDIO, "\n\r\t* AUDDRV_Init *\n\r");
#if defined(FUSE_APPS_PROCESSOR)

    

#ifdef UNDER_LINUX


    // Register proper handler here
#ifdef VPU_INCLUDED
	RIPISR_Register_VPU_ProcessStatus( (VPU_ProcessStatus_t) &AP_VPU_ProcessStatus );   //not used in runtime?
#endif
   // create the IP here because it will take some time. Otherwise, the first IPC message will take long time.
	IPC_Audio_Create_BufferPool();
	Audio_Apps_EP_Register( );


#else
		RIPISR_Register_AudioISR_Handler( (Audio_ISR_Handler_t) &AP_Audio_ISR_Handler );  //not used in runtime?
#ifdef VPU_INCLUDED
	RIPISR_Register_VPU_ProcessStatus( (VPU_ProcessStatus_t) &AP_VPU_ProcessStatus );   //not used in runtime?
#endif
#endif


	AUDDRV_RegisterCB_getAudioMode( (CB_GetAudioMode_t) &AUDDRV_GetAudioMode );
	AUDDRV_RegisterCB_setAudioMode( (CB_SetAudioMode_t) &AUDDRV_SetAudioMode );
	AUDDRV_RegisterCB_setMusicMode( (CB_SetMusicMode_t) &AUDDRV_SetMusicMode );
	AUDDRV_RegisterCB_getAudioApp( (CB_GetAudioApp_t) &AUDDRV_GetAudioApp );

    // Initialize RPC and shared memory here
#ifdef UNDER_LINUX
    Audio_InitRpc();
    //VPSHAREDMEM_Init();
    DSPDRV_Init();

#endif

#else  //#if defined(FUSE_APPS_PROCESSOR)


#if !defined(FUSE_DUAL_PROCESSOR_ARCHITECTURE)
		// ATHENA_EDGE_CP_STANDALONE build
	RIPISR_Register_AudioISR_Handler( (Audio_ISR_Handler_t) &AP_Audio_ISR_Handler );  //not used in runtime?
	#ifdef VPU_INCLUDED
	RIPISR_Register_VPU_ProcessStatus( (VPU_ProcessStatus_t) &AP_VPU_ProcessStatus );   //not used in runtime?
	#endif

	AUDDRV_RegisterCB_getAudioMode( (CB_GetAudioMode_t) &AUDDRV_GetAudioMode );
	AUDDRV_RegisterCB_setAudioMode( (CB_SetAudioMode_t) &AUDDRV_SetAudioMode );
	AUDDRV_RegisterCB_setMusicMode( (CB_SetMusicMode_t) &AUDDRV_SetMusicMode );

#else
	RIPISR_Register_AudioISR_Handler( (Audio_ISR_Handler_t) &CP_Audio_ISR_Handler );

#endif
#endif	
}
コード例 #2
0
/*+++++++++++++++++++++++++++++++++++++++++++++++++++++
 *
 *  Function Name: PcmDeviceNew
 *
 *  Description: Create PCM playback and capture device
 *
 *------------------------------------------------------------
 */
int __devinit PcmDeviceNew(struct snd_card *card)
{
	struct snd_pcm *pcm;
	int err = 0;
	brcm_alsa_chip_t *pChip;
	struct snd_pcm_substream *substream;

	callMode = CALL_MODE_NONE;
	err =
	    snd_pcm_new(card, "Broadcom CAPH", 0, NUM_PLAYBACK_SUBDEVICE,
			NUM_CAPTURE_SUBDEVICE, &pcm);
	if (err < 0)
		return err;

	pcm->private_data = card->private_data;
	strcpy(pcm->name, "Broadcom CAPH PCM");

	snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_PLAYBACK,
			&brcm_alsa_omx_pcm_playback_ops);
	snd_pcm_set_ops(pcm, SNDRV_PCM_STREAM_CAPTURE,
			&brcm_alsa_omx_pcm_capture_ops);

	pcm->info_flags = 0;

	/*pre-allocate memory for playback device */
	substream = pcm->streams[0].substream;
	for (; substream; substream = substream->next) {

		err =
		    snd_pcm_lib_preallocate_pages(substream, SNDRV_DMA_TYPE_DEV,
						  0,
						  (IS_PCM_MEM_PREALLOCATED) ?
						  PCM_MAX_PLAYBACK_BUF_BYTES :
						  0,
						  PCM_MAX_PLAYBACK_BUF_BYTES);
		if (err)
			aError
			    ("\n Error : Error when allocate memory for"
			     " playback device err=%d\n", err);
	}

	/*pre-allocate memory for capture device */
	substream = pcm->streams[1].substream;
	for (; substream; substream = substream->next) {
		err =
		    snd_pcm_lib_preallocate_pages(substream, SNDRV_DMA_TYPE_DEV,
						  0,
						  (IS_PCM_MEM_PREALLOCATED) ?
						  PCM_MAX_CAPTURE_BUF_BYTES : 0,
						  PCM_MAX_CAPTURE_BUF_BYTES);
		if (err)
			aError
			    ("\n Error : Error when allocate memory for"
			     " capture device err=%d\n", err);
	}

	pChip = (brcm_alsa_chip_t *) card->private_data;

	/* Initialize the audio controller */
	aTrace(LOG_ALSA_INTERFACE, "ALSA-CAPH PcmDeviceNew:call AUDIO_Init\n");
	caph_audio_init();
#if defined(CONFIG_BCM_MODEM)
	DSPDRV_Init();
#endif
	AUDCTRL_Init();

#if defined(DYNAMIC_DMA_PLAYBACK)
	spin_lock_init(&copy_lock);
#endif

	aTrace(LOG_ALSA_INTERFACE,
	       "\n PcmDeviceNew : PcmDeviceNew err=%d\n", err);
	return err;

}