/* * \brief The CB called in the driver context upon new interrupt * * \param hFwEvent - FwEvent Driver handle * \return void * * \par Description * Called by the context module after scheduled by fwEvent_InterruptRequest(). * If IDLE, start the SM, and if not just indicate pending event for later. * * \sa */ static void fwEvent_NewEvent (TI_HANDLE hFwEvent) { TfwEvent *pFwEvent = (TfwEvent *)hFwEvent; CL_TRACE_START_L2(); /* If the SM is idle, call it to start handling new events */ if (pFwEvent->eSmState == FWEVENT_STATE_IDLE) { TRACE0(pFwEvent->hReport, REPORT_SEVERITY_INFORMATION, "fwEvent_NewEvent: Start SM\n"); fwEvent_StateMachine (pFwEvent); } /* Else - SM is busy so set flag to handle it when finished with current events */ else { TRACE0(pFwEvent->hReport, REPORT_SEVERITY_INFORMATION, "fwEvent_NewEvent: SM busy, set IntrPending flag\n"); pFwEvent->bIntrPending = TI_TRUE; } CL_TRACE_END_L2("tiwlan_drv.ko", "CONTEXT", "FwEvent", ""); }
ETxnStatus sdioAdapt_Transact (unsigned int uFuncId, unsigned int uHwAddr, void * pHostAddr, unsigned int uLength, unsigned int bDirection, unsigned int bBlkMode, unsigned int bFixedAddr, unsigned int bMore) { int iStatus; #ifdef PROPRIETARY_SDIO /* If transction length is below threshold, use Sync methods */ if (uLength < SYNC_ASYNC_LENGTH_THRESH) { #endif /* Call read or write Sync method */ if (bDirection) { CL_TRACE_START_L2(); iStatus = sdioDrv_ReadSync (uFuncId, uHwAddr, pHostAddr, uLength, bFixedAddr, bMore); CL_TRACE_END_L2("tiwlan_drv.ko", "INHERIT", "SDIO", ".ReadSync"); } else { CL_TRACE_START_L2(); iStatus = sdioDrv_WriteSync (uFuncId, uHwAddr, pHostAddr, uLength, bFixedAddr, bMore); CL_TRACE_END_L2("tiwlan_drv.ko", "INHERIT", "SDIO", ".WriteSync"); } /* If failed return ERROR, if succeeded return COMPLETE */ if (iStatus) { return TXN_STATUS_ERROR; } return TXN_STATUS_COMPLETE; #ifdef PROPRIETARY_SDIO } #endif #ifdef PROPRIETARY_SDIO /* If transction length is above threshold, use Async methods */ else { /* Call read or write Async method */ if (bDirection) { CL_TRACE_START_L2(); iStatus = sdioDrv_ReadAsync (uFuncId, uHwAddr, pHostAddr, uLength, bBlkMode, bFixedAddr, bMore); CL_TRACE_END_L2("tiwlan_drv.ko", "INHERIT", "SDIO", ".ReadAsync"); } else { CL_TRACE_START_L2(); iStatus = sdioDrv_WriteAsync (uFuncId, uHwAddr, pHostAddr, uLength, bBlkMode, bFixedAddr, bMore); CL_TRACE_END_L2("tiwlan_drv.ko", "INHERIT", "SDIO", ".WriteAsync"); } /* If failed return ERROR, if succeeded return PENDING */ if (iStatus) { return TXN_STATUS_ERROR; } return TXN_STATUS_PENDING; } #endif }