/***************************************************************************** Prototype : BSP_MailBox_SpNotifyDisable Description : 专有邮箱数据到达通知中断去使能接口 param : None Return Value : void *****************************************************************************/ void BSP_MailBox_SpNotifyDisable(void) { if(BSP_OK != BSP_IPC_IntDisable(IPC_INT_DSP_PS_MAC_MBX)) { bsp_trace(BSP_LOG_LEVEL_ERROR, BSP_MODU_MBX, "[mailbox]: <%s> BSP_IPC_IntDisable failed.\n", __FUNCTION__); } if(BSP_OK != BSP_IPC_IntDisonnect(IPC_INT_DSP_PS_MAC_MBX, NULL, 0)) { bsp_trace(BSP_LOG_LEVEL_ERROR, BSP_MODU_MBX, "[mailbox]: <%s> BSP_IPC_IntDisonnect failed.\n", __FUNCTION__); } }
/***************************************************************************** Prototype : BSP_MailBox_SpNotifyDisable Description : 专有邮箱数据到达通知中断去使能接口 param : None Return Value : void *****************************************************************************/ void BSP_MailBox_SpNotifyDisable(void) { if(BSP_OK != BSP_IPC_IntDisable(IPC_INT_DSP_PS_MAC_MBX)) { Mbx_Printf("BSP_IPC_IntDisable failed.\n"); } if(BSP_OK != BSP_IPC_IntDisonnect(IPC_INT_DSP_PS_MAC_MBX, NULL, 0)) { Mbx_Printf("BSP_IPC_IntDisonnect failed.\n"); } }
/***************************************************************************** * 函 数 名 : DRV_IPC_INTDISCONNECT * * 功能描述 : 去注册某个中断 * * 输入参数 : BSP_U32 ulLvl 要去注册的中断号,取值范围0~31 VOIDFUNCPTR routine 中断服务程序 * BSP_U32 parameter 中断服务程序参数 * 输出参数 : 无 * * 返 回 值 : OK&ERROR * * 修改记录 : 2011年4月11日 wangjing creat *****************************************************************************/ BSP_S32 DRV_IPC_INTDISCONNECT (IPC_INT_LEV_E ulLvl,VOIDFUNCPTR routine, BSP_U32 parameter) { return BSP_IPC_IntDisonnect(ulLvl, routine, parameter); }
/***************************************************************************** Prototype : BSP_MailBox_IntTypeSet Description : 设置PS邮箱中断源接口(默认IPC中断方式) 只用于PS邮箱,OM邮箱无中断上报 param : None Return Value : 0: 成功; 其他: 设置的type非法 *****************************************************************************/ u32 BSP_MailBox_IntTypeSet(MAILBOX_INT_TYPE_E enIntType) { s32 ret; switch(enIntType) { case EN_MAILBOX_INT_SUBFRAME: { if(BSP_OK != BSP_Mailbox_ForbidDspSleep(EN_MAILBOX_SLEEP_WAKEUP)) { Mbx_Printf("BSP_Mailbox_ForbidDspSleep failed.\n"); return ERR_MAILBOX_TIMEOUT; } BSP_BBPIntTimerRegCb(Mbx_ComPsIntProc); /* [false alarm]:fortify */ ret = BSP_BBPIntTimerEnable();/* [false alarm]:fortify */ if(BSP_OK != ret) { /* [false alarm]:fortify */ Mbx_Printf("BSP_BBPIntTimerEnable failed.\n"); } BSP_Mailbox_AllowDspSleep(); ret = (s32)BSP_IPC_IntDisable(IPC_INT_DSP_PS_PUB_MBX); if(BSP_OK != ret) { Mbx_Printf("BSP_IPC_IntDisable failed.\n"); } ret = (s32)BSP_IPC_IntDisonnect(IPC_INT_DSP_PS_PUB_MBX, NULL, 0); /* [false alarm]:fortify */ if(BSP_OK != ret) { Mbx_Printf("BSP_IPC_IntDisonnect failed.\n"); } g_stMbxCtrl.bIsSubFrameInt = BSP_TRUE; break; } case EN_MAILBOX_INT_COM_IPC: { ret = (s32)BSP_IPC_IntConnect(IPC_INT_DSP_PS_PUB_MBX, (VOIDFUNCPTR)Mbx_ComPsIntProc, 0); if(BSP_OK != ret) { Mbx_Printf("BSP_IPC_IntConnect failed.\n"); } ret = (s32)BSP_IPC_IntEnable(IPC_INT_DSP_PS_PUB_MBX); if(BSP_OK != ret) { Mbx_Printf("BSP_IPC_IntEnable failed.\n"); } if(BSP_OK != BSP_Mailbox_ForbidDspSleep(EN_MAILBOX_SLEEP_WAKEUP)) { Mbx_Printf("BSP_Mailbox_ForbidDspSleep failed.\n"); return ERR_MAILBOX_TIMEOUT; } BSP_BBPIntTimerDisable(); BSP_BBPIntTimerClear(); BSP_Mailbox_AllowDspSleep(); g_stMbxCtrl.bIsSubFrameInt = BSP_FALSE; break; } default : { Mbx_Printf("enIntType %d.\n", enIntType); return ERR_MAILBOX_PARAM_INCORRECT; } } return BSP_OK; }