?? usbtcdnet2280initexit.c
字號(hào):
/* WindView Instrumentation */ USB_TCD_LOG_EVENT(USB_TCD_NET2280_INIT_EXIT, "usbTcdNET2280FncDetach exiting: Bad Parameter received", USB_TCD_NET2280_WV_FILTER); USB_NET2280_ERROR ("usbTcdNET2280FncDetach : Bad Parameters...\n", 0,0,0,0,0,0); return ossStatus (S_usbTcdLib_BAD_PARAM); } pTarget = (pUSB_TCD_NET2280_TARGET) pHeader->handle; /* Disable the interrupts by reset in PCI Interrupt Enable of PCIIRQENB1 */ data32 = NET2280_CFG_READ (pTarget, NET2280_PCIIRQENB1_REG); data32 &= ~NET2280_XIRQENB1_INTEN; NET2280_CFG_WRITE (pTarget, NET2280_PCIIRQENB1_REG, data32); /* flush all the FIFO */ data32 = NET2280_CFG_READ (pTarget, NET2280_DEVINIT_REG); data32 |= NET2280_DEVINIT_FIFO_RESET; NET2280_CFG_WRITE (pTarget, NET2280_DEVINIT_REG, data32); /* Reset the USBCTL regsiter */ NET2280_CFG_WRITE (pTarget, NET2280_USBCTL_REG,0); /* Un-hook the ISR */ usbPciIntRestore ((INT_HANDLER_PROTOTYPE)usbTcdNET2280Isr, (pVOID)pTarget, pTarget->irq); /* Release the USB_TCD_NET2280_TARGET */ OSS_FREE (pTarget); USB_NET2280_DEBUG ("usbTcdNET2280FncDetach : Exiting...\n",0,0,0,0,0,0); return OK; }/******************************************************************************** usbTcdNET2280FncEnable - implements TCD_FNC_ENABLE** The purpose of this function is to enable the Target Controller** RETURNS: OK or ERROR, if not able to enable the target controller.** ERRNO:* \is* \i S_usbTcdLib_BAD_PARAM* Bad Parameter is passed.* \ie** \NOMANUAL*/LOCAL STATUS usbTcdNET2280FncEnable ( pTRB_ENABLE_DISABLE pTrb /* TRB to be executed */ ) { pTRB_HEADER pHeader = (pTRB_HEADER) pTrb; /* TRB_HEADER */ pUSB_TCD_NET2280_TARGET pTarget = NULL; /* USB_TCD_ISP1582_TARGET */ UINT32 data32 = 0; /* temporary variable */ /* WindView Instrumentation */ USB_TCD_LOG_EVENT(USB_TCD_NET2280_INIT_EXIT, "usbTcdNET2280FncEnable entered ...", USB_TCD_NET2280_WV_FILTER); USB_NET2280_DEBUG ("usbTcdNET2280FncEnable : Entered...\n",0,0,0,0,0,0); /* Validate parameters */ if (pHeader == NULL || pHeader->trbLength < sizeof (TRB_HEADER) || (pHeader->handle == NULL)) { /* WindView Instrumentation */ USB_TCD_LOG_EVENT(USB_TCD_ISP1582_INIT_EXIT, "usbTcdNET2280FncEnable exiting: Bad Parameter received", USB_TCD_NET2280_WV_FILTER); USB_NET2280_ERROR ("usbTcdNET2280FncEnable : Bad Parameters...\n", 0,0,0,0,0,0); return ossStatus (S_usbTcdLib_BAD_PARAM); } pTarget = (pUSB_TCD_NET2280_TARGET) pHeader->handle; /* Set the USB DETECT ENABLE bit of USBCTL register */ data32 = NET2280_CFG_READ (pTarget, NET2280_USBCTL_REG); data32 |= NET2280_USBCTL_REG_USBDE; NET2280_CFG_WRITE (pTarget, NET2280_USBCTL_REG, data32); return OK; }/******************************************************************************** usbTcdNET2280FncDisable - implements TCD_FNC_DISBLE** The purpose of this function is to enable the Target Controller** RETURNS: OK or ERROR, if not able to enable the target controller.** ERRNO:* \is* \i S_usbTcdLib_BAD_PARAM* Bad Parameter is passed.* \ie** \NOMANUAL*/LOCAL STATUS usbTcdNET2280FncDisable ( pTRB_ENABLE_DISABLE pTrb /* TRB to be executed */ ) { pTRB_HEADER pHeader = (pTRB_HEADER) pTrb; /* TRB_HEADER */ pUSB_TCD_NET2280_TARGET pTarget = NULL; /* USB_TCD_ISP1582_TARGET */ UINT32 data32 = 0; /* temporary variable */ /* WindView Instrumentation */ USB_TCD_LOG_EVENT(USB_TCD_NET2280_INIT_EXIT, "usbTcdNET2280FncDisable entered ...", USB_TCD_NET2280_WV_FILTER); USB_NET2280_DEBUG ("usbTcdNET2280FncDisable : Entered...\n",0,0,0,0,0,0); /* Validate parameters */ if (pHeader == NULL || pHeader->trbLength < sizeof (TRB_HEADER) || (pHeader->handle == NULL)) { /* WindView Instrumentation */ USB_TCD_LOG_EVENT(USB_TCD_ISP1582_INIT_EXIT, "usbTcdNET2280FncDisable exiting: Bad Parameter received", USB_TCD_NET2280_WV_FILTER); USB_NET2280_ERROR ("usbTcdNET2280FncDisable : Bad Parameters...\n", 0,0,0,0,0,0); return ossStatus (S_usbTcdLib_BAD_PARAM); } pTarget = (pUSB_TCD_NET2280_TARGET) pHeader->handle; /* Reset the USB DETECT ENABLE bit of USBCTL register */ data32 = NET2280_CFG_READ (pTarget, NET2280_USBCTL_REG); data32 &= ~NET2280_USBCTL_REG_USBDE; NET2280_CFG_WRITE (pTarget, NET2280_USBCTL_REG, data32); return OK; }/******************************************************************************** usbTcdNET2280Exec - single Entry Point for NETCHIP 2280 TCD** This is the single entry point for the NETCHIP 2280* USB TCD (Target Controller Driver). The function qualifies the TRB passed* by the caller and fans out to the appropriate TCD function handler.** RETURNS: OK or ERROR if failed to execute TRB passed by caller.** ERRNO:* \is* \i S_usbTcdLib_BAD_PARAM* Bad parameter is passed.* \ie*/STATUS usbTcdNET2280Exec ( pVOID pTrb /* TRB to be executed */ ) { pTRB_HEADER pHeader = (pTRB_HEADER) pTrb; /* TRB_HEADER */ pUSB_TCD_NET2280_TARGET pTarget = NULL; /* USB_TCD_NET2280_TARGET */ UINT32 status = OK; /* WindView Instrumentation */ USB_TCD_LOG_EVENT(USB_TCD_NET2280_INIT_EXIT, "usbTcdNET2280Exec entered ...", USB_TCD_ISP582_WV_FILTER); USB_NET2280_DEBUG ("usbTcdNET2280Exec : Entered...\n",0,0,0,0,0,0); /* Validate parameters */ if (pHeader == NULL || pHeader->trbLength < sizeof (TRB_HEADER)) { /* WindView Instrumentation */ USB_TCD_LOG_EVENT(USB_TCD_NET2280_INIT_EXIT, "usbTcdNET2280Exec exiting: Bad Paramters Received ...", USB_TCD_ISP582_WV_FILTER); USB_NET2280_ERROR ("usbTcdNET2280Exec : Bad Parameters...\n", 0,0,0,0,0,0); return ossStatus (S_usbTcdLib_BAD_PARAM); } if (pHeader->function != TCD_FNC_ATTACH) { if ((pTarget = (pUSB_TCD_NET2280_TARGET) pHeader->handle) == NULL) { /* WindView Instrumentation */ USB_TCD_LOG_EVENT(USB_TCD_NET2280_INIT_EXIT, "usbTcdNET2280Exec exiting: Handle value is NULL...", USB_TCD_ISP582_WV_FILTER); USB_NET2280_ERROR ("usbTcdNET2280Exec : Bad Parameters...\n", 0,0,0,0,0,0); return ossStatus (S_usbTcdLib_BAD_PARAM); } } USB_NET2280_DEBUG ("usbTcdNET2280Exec : Fucntion Code is %d...\n", pHeader->function,0,0,0,0,0); /* Fan-out to appropriate function processor */ switch (pHeader->function) { /* Following functions codes are not implemented by ISP 1582 */ case TCD_FNC_HANDLE_SUSPEND_INTERRUPT : case TCD_FNC_HANDLE_RESUME_INTERRUPT : break; /* initialization and uninitialization function codes */ case TCD_FNC_ATTACH : status = usbTcdNET2280FncAttach((pTRB_ATTACH) pHeader); break; case TCD_FNC_DETACH: status = usbTcdNET2280FncDetach((pTRB_DETACH) pHeader); break; case TCD_FNC_ENABLE: status = usbTcdNET2280FncEnable((pTRB_ENABLE_DISABLE) pHeader); break; case TCD_FNC_DISABLE: status = usbTcdNET2280FncDisable((pTRB_ENABLE_DISABLE) pHeader); break; /* device control and status function codes */ case TCD_FNC_ADDRESS_SET: status = usbTcdNET2280FncAddressSet((pTRB_ADDRESS_SET) pHeader); break; case TCD_FNC_SIGNAL_RESUME: status = usbTcdNET2280FncSignalResume((pTRB_SIGNAL_RESUME)pHeader); break; case TCD_FNC_CURRENT_FRAME_GET: status = usbTcdNET2280FncCurrentFrameGet( (pTRB_CURRENT_FRAME_GET)pHeader); break; case TCD_FNC_DEVICE_FEATURE_SET: status = usbTcdNET2280FncDeviceFeatureSet( (pTRB_DEVICE_FEATURE_SET_CLEAR)pHeader); break; case TCD_FNC_DEVICE_FEATURE_CLEAR : status = usbTcdNET2280FncDeviceFeatureClear( (pTRB_DEVICE_FEATURE_SET_CLEAR) pHeader); break; /* endpoint related function codes */ case TCD_FNC_ENDPOINT_ASSIGN: status = usbTcdNET2280FncEndpointAssign( (pTRB_ENDPOINT_ASSIGN) pHeader); break; case TCD_FNC_ENDPOINT_RELEASE: status = usbTcdNET2280FncEndpointRelease( (pTRB_ENDPOINT_RELEASE) pHeader); break; case TCD_FNC_ENDPOINT_STATE_SET: status = usbTcdNET2280FncEndpointStateSet( (pTRB_ENDPOINT_STATE_SET)pHeader); break; case TCD_FNC_ENDPOINT_STATUS_GET: status = usbTcdNET2280FncEndpointStatusGet( (pTRB_ENDPOINT_STATUS_GET)pHeader); break; case TCD_FNC_IS_BUFFER_EMPTY: status = usbTcdNET2280FncIsBufferEmpty( (pTRB_IS_BUFFER_EMPTY) pHeader); break; case TCD_FNC_COPY_DATA_FROM_EPBUF: status = usbTcdNET2280FncCopyDataFromEpBuf( (pTRB_COPY_DATA_FROM_EPBUF) pHeader); break; case TCD_FNC_COPY_DATA_TO_EPBUF: status = usbTcdNET2280FncCopyDataToEpBuf( (pTRB_COPY_DATA_TO_EPBUF) pHeader); break; /* interrupt related function codes */ case TCD_FNC_ENDPOINT_INTERRUPT_STATUS_GET: status = usbTcdNET2280FncEndpointIntStatusGet( (pTRB_ENDPOINT_INTERRUPT_STATUS_GET) pHeader); break; case TCD_FNC_ENDPOINT_INTERRUPT_STATUS_CLEAR: status = usbTcdNET2280FncEndpointIntStatusClear( (pTRB_ENDPOINT_INTERRUPT_STATUS_CLEAR) pHeader); break; case TCD_FNC_INTERRUPT_STATUS_GET: status = usbTcdNET2280FncInterruptStatusGet( (pTRB_INTERRUPT_STATUS_GET_CLEAR) pHeader); break; case TCD_FNC_INTERRUPT_STATUS_CLEAR: status = usbTcdNET2280FncInterruptStatusClear( (pTRB_INTERRUPT_STATUS_GET_CLEAR) pHeader); break; case TCD_FNC_HANDLE_RESET_INTERRUPT : status = usbTcdNET2280FncHandleResetInterrupt( (pTRB_HANDLE_RESET_INTERRUPT) pHeader); break; case TCD_FNC_HANDLE_DISCONNECT_INTERRUPT : status = usbTcdNET2280FncHandleDisconnectInterrupt( (pTRB_HANDLE_DISCONNECT_INTERRUPT) pHeader); break; default: /* WindView Instrumentation */ USB_TCD_LOG_EVENT(USB_TCD_NET2280_INIT_EXIT, "usbTcdNET2280Exec exiting: Wrong Function Code ...", USB_TCD_ISP582_WV_FILTER); USB_NET2280_ERROR ("usbTcdNET2280Exec : Bad Parameters...\n", 0,0,0,0,0,0); status = ossStatus (S_usbTcdLib_BAD_PARAM); } /* WindView Instrumentation */ USB_TCD_LOG_EVENT(USB_TCD_NET2280_INIT_EXIT, "usbTcdNET2280Exec exiting ...", USB_TCD_ISP582_WV_FILTER); USB_NET2280_DEBUG ("usbTcdNET2280Exec : Exiting...\n",0,0,0,0,0,0); /* Return status */ return status; }
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -