/***************************************************************************** 函 数 名 : hifireset _runcbfun 功能描述 : HIFI复位前后调用回调函数的函数。 输入参数 : DRV_RESET_CALLCBFUN_MOMENT eparam, 0 表示HIFI复位前;非零表示复位后。 输出参数 : 无 返 回 值 : int 0, 成功,非0,失败 *****************************************************************************/ int hifireset_runcbfun (DRV_RESET_CALLCBFUN_MOMENT eparam) { int iresult = 0; if (DRV_RESET_CALLCBFUN_RESET_BEFORE == eparam) { /*遍历回调函数链表,调用NAS的回调*/ iresult = hifireset_doruncbfun("NAS_AT", eparam); if (BSP_RESET_OK != iresult) { /*如果返回失败,记录下组建name, 返回值,保存到文件*/ goto return_error; } } else { /*遍历回调函数链表,调用回调函数*/ iresult = hifireset_doruncbfun(RESET_CBFUN_IGNORE_NAME, eparam); if (BSP_RESET_OK != iresult) { goto return_error; } } printk(KERN_INFO "%s: end of run cb functions for hifi reset at %d, %d\n", __FUNCTION__, eparam, iresult); return BSP_RESET_OK; return_error: return BSP_RESET_ERROR; }
/***************************************************************************** 函 数 名 : hifireset _runcbfun 功能描述 : HIFI复位前后调用回调函数的函数。 输入参数 : DRV_RESET_CB_MOMENT_E eparam, 0 表示HIFI复位前;非零表示复位后。 输出参数 : 无 返 回 值 : int 0, 成功,非0,失败 *****************************************************************************/ int hifireset_runcbfun (DRV_RESET_CB_MOMENT_E eparam) { int iresult = 0; if (MDRV_RESET_CB_BEFORE == eparam) { /*Mailbox 处理*/ reset_set_cpu_status(1, RESET_CPU_HIFI_STATUS_OFF); /*遍历回调函数链表,调用NAS的回调*/ iresult = hifireset_doruncbfun("NAS_AT", eparam); if (BSP_RESET_OK != iresult) { /*如果返回失败,记录下组建name, 返回值,保存到文件*/ goto return_error; } /*遍历回调函数链表,调用音频的回调*/ iresult = hifireset_doruncbfun("CODEC", eparam); if (BSP_RESET_OK != iresult) { /*如果返回失败,记录下组建name, 返回值,保存到文件*/ goto return_error; } /*通知MCU*/ g_reset_assistant_hifi.smailboxmsg_mcu.iproctec = BSP_RESET_MAILBOX_MSG_PROTECT; g_reset_assistant_hifi.smailboxmsg_mcu.idata = BSP_RESET_MCU_MSG_HIFI_RESET_BEFORE; hifireset_tonotify(eparam, BSP_RESET_MODULE_MCU); /*遍历回调函数链表,调用OM的回调*/ iresult = hifireset_doruncbfun("OAM", eparam); if (BSP_RESET_OK != iresult) { /*如果返回失败,记录下组建name, 返回值,保存到文件*/ goto return_error; } } else { /*通知MCU*/ g_reset_assistant_hifi.smailboxmsg_mcu.idata = BSP_RESET_MCU_MSG_HIFI_RESET_AFTER; hifireset_tonotify(eparam, BSP_RESET_MODULE_MCU); /*MAILBOX处理*/ reset_set_cpu_status(0, RESET_CPU_HIFI_STATUS_OFF); /*遍历回调函数链表,调用回调函数*/ iresult = hifireset_doruncbfun(RESET_CBFUN_IGNORE_NAME, eparam); if (BSP_RESET_OK != iresult) { goto return_error; } } printk(KERN_INFO "%s: end of run cb functions for hifi reset at %d, %d\n", __FUNCTION__, eparam, iresult); return BSP_RESET_OK; return_error: return BSP_RESET_ERROR; }