Ejemplo n.º 1
0
UInt32 audio_control_dsp(UInt32 param1, UInt32 param2, UInt32 param3,
			 UInt32 param4, UInt32 param5, UInt32 param6)
{
	UInt32 val = (UInt32) 0;

	Audio_Params_t audioParam;
	UInt32 tid;
	/*
	MsgType_t msgType;
	RPC_ACK_Result_t ackResult; */
	unsigned long jiff_in = 0;

	aTrace(LOG_AUDIO_DRIVER,
			"\n\r * audio_control_dsp (AP) param1 %ld, param2 %ld"
			" param3 %ld param4 %ld *\n\r",
			param1, param2, param3, param4);

	if (inCpReset)
		return val;

	switch (param1) {

	case AUDDRV_DSPCMD_COMMAND_DIGITAL_SOUND:
		VPRIPCMDQ_DigitalSound((UInt16) param2);
		break;

	case AUDDRV_DSPCMD_COMMAND_SET_BT_NB:
		VPRIPCMDQ_SetBTNarrowBand((UInt16) param2);

		break;

	case AUDDRV_DSPCMD_COMMAND_USB_HEADSET:
		VPRIPCMDQ_USBHeadset((UInt16) param2);

		break;

	case AUDDRV_DSPCMD_MM_VPU_ENABLE:
		VPRIPCMDQ_MMVPUEnable((UInt16) param2);

		break;

	case AUDDRV_DSPCMD_MM_VPU_DISABLE:
		VPRIPCMDQ_MMVPUDisable();

		break;

		/* AMCR PCM enable bit is controlled by ARM audio */
	case AUDDRV_DSPCMD_AUDIO_SET_PCM:
		VPRIPCMDQ_DigitalSound((UInt16) param2);

		break;

	case AUDDRV_DSPCMD_COMMAND_VOIF_CONTROL:
		VPRIPCMDQ_VOIFControl((UInt16) param2);

		break;

	case AUDDRV_DSPCMD_COMMAND_SP:
		VPRIPCMDQ_SP((UInt16) param2, (UInt16) param3, (UInt16) param4);

		break;

	case AUDDRV_DSPCMD_COMMAND_CLEAR_VOIPMODE:
		VPRIPCMDQ_Clear_VoIPMode((UInt16) param2);
		break;

	default:
		audioParam.param1 = param1;
		audioParam.param2 = param2;
		audioParam.param3 = param3;
		audioParam.param4 = param4;
		audioParam.param5 = param5;
		audioParam.param6 = param6;

		tid = s_sid++; /* RPC_SyncCreateTID(&val, sizeof(UInt32)); */
		aTrace(LOG_AUDIO_DRIVER,
			"audio_control_dsp tid=%ld,param1=%ld\n", tid, param1);

		/** init completion before send this DSP command */
		if (param1 == AUDDRV_DSPCMD_AUDIO_ENABLE) {
			/*aError("i_c");*/
			init_completion(&audioEnableDone);
			/*aError("i_d");*/
		}

		CAPI2_audio_control_dsp(tid, audioClientId, &audioParam);
		/*
		RPC_SyncWaitForResponse(tid, audioClientId, &ackResult,
					&msgType, NULL);
		*/
		if (param1 == AUDDRV_DSPCMD_AUDIO_ENABLE) {

			/** wait for response from DSP for this command.
			Response usually comes back very fast, less than 10ms  */
			jiff_in = wait_for_completion_timeout(
				&audioEnableDone,
				timeout_jiff);
			if (!jiff_in) {
				aError("!!!Timeout on COMMAND_AUDIO_ENABLE %d"
					" resp!!!\n", (int)param2);
				/**
				IPCCP_SetCPCrashedStatus(IPC_AP_ASSERT);
				BUG_ON(1);
				panic("COMMAND_AUDIO_ENABLE timeout");
				*/
			}
#if defined(ENABLE_DMA_VOICE)
			{
				UInt16 dsp_path;
				dsp_path =
				csl_dsp_caph_control_aadmac_get_enable_path();
				csl_caph_enable_adcpath_by_dsp(dsp_path);
			}
#endif
		}

		break;
	}

	return val;

}
//CAPI2
/////////////////////////////////////////////////////////////////////////////
//!
//! Function Name:	audio_control_dsp
//!
//! Description:	audio control dsp cmd
//!
/////////////////////////////////////////////////////////////////////////////
inline void audio_control_dsp(UInt32 param1, UInt32 param2, UInt32 param3, UInt32 param4)
{
    CAPI2_audio_control_dsp(AUD_CreateTID(), BCM_AUD_HAL_CAPI2_CID, param1, param2, param3, param4);
    //RPC_SyncWaitForResponse();
}
UInt32 audio_control_dsp(UInt32 param1,UInt32 param2,UInt32 param3,UInt32 param4,UInt32 param5,UInt32 param6)
{
	Audio_Params_t audioParam;
	UInt32 tid;
	MsgType_t msgType;
	RPC_ACK_Result_t ackResult;
	UInt32 val = (UInt32)0;
	Log_DebugPrintf(LOGID_AUDIO, "\n\r\t* audio_control_dsp (AP) param1 %d, param2 %d param3 %d param4 %d *\n\r", param1, param2, param3, param4);

	switch (param1)
	{

#if 0
		case DSPCMD_TYPE_COMMAND_DIGITAL_SOUND:
			RIPCMDQ_DigitalSound((UInt16)param2);
			
			break;

		case DSPCMD_TYPE_COMMAND_SET_ARM2SP:
			RIPCMDQ_SetARM2SP((UInt16)param2, (UInt16)param3);
			
			break;

		case DSPCMD_TYPE_COMMAND_SET_ARM2SP2:
			RIPCMDQ_SetARM2SP2((UInt16)param2, (UInt16)param3);
			
			break;
			
		case DSPCMD_TYPE_COMMAND_SET_BT_NB:
			RIPCMDQ_SetBTNarrowBand((UInt16)param2);
			
			break;

		case DSPCMD_TYPE_COMMAND_USB_HEADSET:
			RIPCMDQ_USBHeadset((UInt16)param2);

			break;		


		case DSPCMD_TYPE_MM_VPU_ENABLE:
				RIPCMDQ_MMVPUEnable((UInt16)param2);
				
			break;
			
		case DSPCMD_TYPE_MM_VPU_DISABLE:
				RIPCMDQ_MMVPUDisable();
				
			break;
			
	// AMCR PCM enable bit is controlled by ARM audio		
		case DSPCMD_TYPE_AUDIO_SET_PCM:
			RIPCMDQ_DigitalSound((UInt16)param2);

			break;			


		case DSPCMD_TYPE_SET_VOCODER_INIT:
			RIPCMD_Vocoder_Init((UInt16)param2);
			
			break;		
		case DSPCMD_TYPE_COMMAND_VOIF_CONTROL:
			RIPCMDQ_VOIFControl((UInt16)param2);
			
			break;	 

		case DSPCMD_TYPE_COMMAND_SP:
			RIPCMDQ_SP((UInt16)param2, (UInt16)param3, (UInt16)param4);
			
			break;	

		case DSPCMD_TYPE_COMMAND_CLEAR_VOIPMODE:
			RIPCMDQ_Clear_VoIPMode( (UInt16) param2 );
			break;
#endif			
		default:
            Log_DebugPrintf(LOGID_AUDIO, "\n\r\t* audio_control_dsp (AP) default case param1 %d, param2 %d param3 %d param4 %d *\n\r", param1, param2, param3, param4);

			audioParam.param1 = param1;
			audioParam.param2 = param2;
			audioParam.param3 = param3;
			audioParam.param4 = param4;
			audioParam.param5 = param5;
			audioParam.param6 = param6;

			tid = RPC_SyncCreateTID( &val, sizeof( UInt32 ) );
			CAPI2_audio_control_dsp(tid, audioClientId,&audioParam);
			RPC_SyncWaitForResponse( tid,audioClientId, &ackResult, &msgType, NULL );
	
			break;
	} 
	
	return val;

}