/** static int ipcs_init(void *smbase, unsigned int size) */ static int __init ipcs_init(void *smbase, unsigned int size) { int rc = 0; //Initialize OS specific callbacks with the IPC lib rc = ipc_ipc_init(smbase, size); if (rc) { IPC_DEBUG(DBG_ERROR, "ipc_ipc_init() failed, ret[%d]\n", rc); return(rc); } //Register Endpoints rc = ipcs_ccb_init(); if (rc) { IPC_DEBUG(DBG_ERROR, "ipcs_ccb_init() failed, ret[%d]\n", rc); return(rc); } // AP ipc init is done g_ipc_info.ap_ipc_init_done = 1; //Let CP know that we are done registering endpoints IPC_Configured(); //Wait for IPC initialized IPC_DEBUG(DBG_INFO, "IPC_Configured() invoked\n"); return(0); }
/** static int ipcs_init(void *smbase, unsigned int size) */ static int ipcs_init(void *smbase, unsigned int size, int isReset) { int rc = 0; IPC_DEBUG(DBG_TRACE, "WaitForCpIpc\n"); /* Wait for CP to initialize */ WaitForCpIpc(smbase); IPC_DEBUG(DBG_TRACE, "Calling ipc_set_interrupt_mask()\n"); ipc_set_interrupt_mask(); IPC_DEBUG(DBG_TRACE, "Done ipc_set_interrupt_mask()\n"); IPC_DEBUG(DBG_TRACE, "Calling ipc_set_interrupt_mask()\n"); ipc_set_interrupt_mask(); IPC_DEBUG(DBG_TRACE, "Done ipc_set_interrupt_mask()\n"); /* Initialize OS specific callbacks with the IPC lib */ rc = ipc_ipc_init(smbase, size); if (rc) { IPC_DEBUG(DBG_ERROR, "ipc_ipc_init() failed, ret[%d]\n", rc); return rc; } IPC_DEBUG(DBG_TRACE, "ipc_ipc_init done\n"); /* Register Endpoints */ rc = ipcs_ccb_init(isReset); if (rc) { IPC_DEBUG(DBG_ERROR, "ipcs_ccb_init() failed, ret[%d]\n", rc); return rc; } IPC_DEBUG(DBG_TRACE, "ipcs_ccb_init done\n"); /* Let CP know that we are done registering endpoints */ IPC_Configured(); /* Wait for IPC initialized */ IPC_DEBUG(DBG_TRACE, "IPC_Configured() invoked\n"); return 0; }