⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 usbtcdisp1582initexit.c

📁 This the compressed USB driver source code for vxworks5.6. It has device controller driver and other
💻 C
📖 第 1 页 / 共 2 页
字号:
/******************************************************************************** usbTcdIsp1582FncDetach - implements TCD_FNC_DETACH** The purpose of this function is to shutdown the Target Controller** RETURNS: OK or ERROR, if TCD is not able to detach.** ERRNO:* \is* \i S_usbTcdLib_BAD_PARAM* Bad parameter is passed.* \ie** \NOMANUAL*/LOCAL STATUS usbTcdIsp1582FncDetach    (    pTRB_DETACH	pTrb				/* TRB to be executed */    )    {    pTRB_HEADER	pHeader = (pTRB_HEADER) pTrb;	/* TRB_HEADER */    pUSB_TCD_ISP1582_TARGET	pTarget = NULL;	/* USB_TCD_ISP1582_TARGET */    UINT16	data16 = 0;    /* WindView Instrumentation */     USB_TCD_LOG_EVENT(USB_TCD_ISP1582_INIT_EXIT,   "usbTcdIsp1582FncDetach entered...", USB_TCD_ISP582_WV_FILTER);       USBISP1582_DEBUG ("usbTcdIsp1582FncDetach : 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,        "usbTcdIsp1582FncDetach exiting: Bad Parameter received",         USB_TCD_ISP582_WV_FILTER);           USBISP1582_ERROR ("usbTcdIsp1582FncDetach : Bad Parameters...\n",        0,0,0,0,0,0);        return ossStatus (S_usbTcdLib_BAD_PARAM);        }    pTarget =  (pUSB_TCD_ISP1582_TARGET) pHeader->handle;    /* Disable the device address */    /* perform a soft reset */    data16 = isp1582Read16 (pTarget , ISP1582_MODE_REG);    data16 |=ISP1582_MODE_REG_SFRESET;    isp1582Write16 (pTarget, ISP1582_MODE_REG , data16 & ISP1582_MODE_REG_MASK);    /* Give a delay of 1 micro sec */    OSS_THREAD_SLEEP (1);    data16 &= ~(ISP1582_MODE_REG_SFRESET);    isp1582Write16 (pTarget, ISP1582_MODE_REG , data16 & ISP1582_MODE_REG_MASK);    /* Give a delay of 1 micro sec */    OSS_THREAD_SLEEP (1);    /* Reset the GINTENA */    data16 &= ~(ISP1582_MODE_REG_SOFTCT | ISP1582_MODE_REG_GLINTENA);    isp1582Write16 (pTarget, ISP1582_MODE_REG , data16 & ISP1582_MODE_REG_MASK);    /* Un-hook the ISR */#ifndef   ISP1582_POLLING    usbPciIntRestore ((INT_HANDLER_PROTOTYPE)usbTcdIsp1582Isr, (pVOID)pTarget,                       pTarget->irq);       /* WindView Instrumentation */     USB_TCD_LOG_EVENT(USB_TCD_ISP1582_INIT_EXIT,    "usbTcdIsp1582FncDetach: ISR un-hooked successfully ...",     USB_TCD_ISP582_WV_FILTER);   #else    OSS_THREAD_DESTROY(pTarget->threadId);    /* WindView Instrumentation */     USB_TCD_LOG_EVENT(USB_TCD_ISP1582_INIT_EXIT,    "usbTcdIsp1582FncDetach: Polling Thread destroyed successfully ...",     USB_TCD_ISP582_WV_FILTER);   #endif    /* Release the USB_TCD_ISP1582_TARGET */    OSS_FREE (pTarget);    /* WindView Instrumentation */     USB_TCD_LOG_EVENT(USB_TCD_ISP1582_INIT_EXIT,   "usbTcdIsp1582FncDetach exiting...", USB_TCD_ISP582_WV_FILTER);       USBISP1582_DEBUG ("usbTcdIsp1582FncDetach : Exiting...\n",0,0,0,0,0,0);    return OK;    }/******************************************************************************** usbTcdIsp1582FncEnable - 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 usbTcdIsp1582FncEnable    (    pTRB_ENABLE_DISABLE	pTrb			/* TRB to be executed */    )    {    pTRB_HEADER	pHeader = (pTRB_HEADER) pTrb;	/* TRB_HEADER */    pUSB_TCD_ISP1582_TARGET	pTarget = NULL;	/* USB_TCD_ISP1582_TARGET */    UINT16	data16 = 0;    /* WindView Instrumentation */     USB_TCD_LOG_EVENT(USB_TCD_ISP1582_INIT_EXIT,    "usbTcdIsp1582FncEnable entered ...", USB_TCD_ISP582_WV_FILTER);       USBISP1582_DEBUG ("usbTcdIsp1582FncEnable : 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,        "usbTcdIsp1582FncEnable exiting: Bad Parameter received",         USB_TCD_ISP582_WV_FILTER);           USBISP1582_ERROR ("usbTcdIsp1582FncEnable : Bad Parameters...\n",        0,0,0,0,0,0);        return ossStatus (S_usbTcdLib_BAD_PARAM);        }    pTarget =  (pUSB_TCD_ISP1582_TARGET) pHeader->handle;    /* Read the Mode Register */    data16 = isp1582Read16 (pTarget , ISP1582_MODE_REG);    /* Set the soft connect bit */    data16 |= ISP1582_MODE_REG_SOFTCT;    /* Write to the Mode Register */    isp1582Write16 (pTarget, ISP1582_MODE_REG , data16 & ISP1582_MODE_REG_MASK);    /* WindView Instrumentation */     USB_TCD_LOG_EVENT(USB_TCD_ISP1582_INIT_EXIT,    "usbTcdIsp1582FncEnable exiting ...", USB_TCD_ISP582_WV_FILTER);       USBISP1582_DEBUG ("usbTcdIsp1582FncEnable : Exiting...\n",0,0,0,0,0,0);    return OK;    }/********************************************************************************* usbTcdIsp1582FncDisable - implements TCD_FNC_DISABLE** The purpose of this function is to disable the Target Controller** RETURNS: OK or ERROR, if not able to disable the target controller.** ERRNO:* \is* \i S_usbTcdLib_BAD_PARAM* Bad parameter is passed.* \ie** \NOMANUAL*/LOCAL STATUS usbTcdIsp1582FncDisable    (    pTRB_ENABLE_DISABLE	pTrb		/* TRB to be executed */    )    {    pTRB_HEADER	pHeader = (pTRB_HEADER) pTrb;	/* TRB_HEADER */    pUSB_TCD_ISP1582_TARGET	pTarget = NULL;	/* USB_TCD_ISP1582_TARGET */    UINT16	data16 = 0;    /* WindView Instrumentation */     USB_TCD_LOG_EVENT(USB_TCD_ISP1582_INIT_EXIT,    "usbTcdIsp1582FncDisable entered ...", USB_TCD_ISP582_WV_FILTER);       USBISP1582_DEBUG ("usbTcdIsp1582FncDisable : 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,        "usbTcdIsp1582FncDisable exiting: Bad Parameter received",         USB_TCD_ISP582_WV_FILTER);           USBISP1582_ERROR ("usbTcdIsp1582FncDisable : Bad Parameters...\n",        0,0,0,0,0,0);        return ossStatus (S_usbTcdLib_BAD_PARAM);        }    pTarget =  (pUSB_TCD_ISP1582_TARGET) pHeader->handle;    /* Read the Mode Register */    data16 = isp1582Read16 (pTarget , ISP1582_MODE_REG);    /* Reset the soft connect bit */    data16 &= ~ISP1582_MODE_REG_SOFTCT;    /* Write to the Mode Register */    isp1582Write16 (pTarget, ISP1582_MODE_REG , data16 & ISP1582_MODE_REG_MASK);    /* WindView Instrumentation */     USB_TCD_LOG_EVENT(USB_TCD_ISP1582_INIT_EXIT,    "usbTcdIsp1582FncDisable exiting ...", USB_TCD_ISP582_WV_FILTER);       USBISP1582_DEBUG ("usbTcdIsp1582FncDisable : Exiting...\n",0,0,0,0,0,0);    return OK;    }/******************************************************************************** usbTcdIsp1582EvalExec - single Entry Point for ISP 1582 TCD** This is the single entry point for the Philips ISP 1582* 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 usbTcdIsp1582EvalExec    (    pVOID	pTrb			/* TRB to be executed */    )    {    pTRB_HEADER	pHeader = (pTRB_HEADER) pTrb;	/* TRB_HEADER */    pUSB_TCD_ISP1582_TARGET	pTarget = NULL;	/* USB_TCD_ISP1582_TARGET */    UINT32	status = OK;    /* WindView Instrumentation */     USB_TCD_LOG_EVENT(USB_TCD_ISP1582_INIT_EXIT,    "usbTcdIsp1582EvalExec entered ...", USB_TCD_ISP582_WV_FILTER);       USBISP1582_DEBUG ("usbTcdIsp1582EvalExec : 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_ISP1582_INIT_EXIT,        "usbTcdIsp1582EvalExec exiting: Bad Paramters Received  ...",        USB_TCD_ISP582_WV_FILTER);           USBISP1582_ERROR ("usbTcdIsp1582EvalExec : 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_ISP1582_TARGET) pHeader->handle) == NULL)           {           /* WindView Instrumentation */            USB_TCD_LOG_EVENT(USB_TCD_ISP1582_INIT_EXIT,           "usbTcdIsp1582EvalExec exiting: Handle value is NULL...",           USB_TCD_ISP582_WV_FILTER);              USBISP1582_ERROR ("usbTcdIsp1582EvalExec : Bad Parameters...\n",           0,0,0,0,0,0);           return ossStatus (S_usbTcdLib_BAD_PARAM);           }        }    USBISP1582_DEBUG ("usbTcdIsp1582EvalExec : 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_DISCONNECT_INTERRUPT :        case TCD_FNC_DEVICE_FEATURE_CLEAR        : break;        /* initialization and uninitialization function codes */        case TCD_FNC_ATTACH :            status = usbTcdIsp1582FncAttach((pTRB_ATTACH) pHeader);    	    break;        case TCD_FNC_DETACH:    	    status = usbTcdIsp1582FncDetach((pTRB_DETACH) pHeader);            break;        case TCD_FNC_ENABLE:    	    status = usbTcdIsp1582FncEnable((pTRB_ENABLE_DISABLE) pHeader);            break;        case TCD_FNC_DISABLE:    	    status = usbTcdIsp1582FncDisable((pTRB_ENABLE_DISABLE) pHeader);            break;        /* device control and status function codes */        case TCD_FNC_ADDRESS_SET:            status = usbTcdIsp1582FncAddressSet((pTRB_ADDRESS_SET) pHeader);            break;        case TCD_FNC_SIGNAL_RESUME:    	    status = usbTcdIsp1582FncSignalResume((pTRB_SIGNAL_RESUME)pHeader);            break;        case TCD_FNC_CURRENT_FRAME_GET:            status = usbTcdIsp1582FncCurrentFrameGet(                      (pTRB_CURRENT_FRAME_GET)pHeader);            break;        case TCD_FNC_DEVICE_FEATURE_SET:            status = usbTcdIsp1582FncDeviceFeatureSet(                      (pTRB_DEVICE_FEATURE_SET_CLEAR)pHeader);            break;        /* endpoint related function codes */        case TCD_FNC_ENDPOINT_ASSIGN:            status = usbTcdIsp1582FncEndpointAssign(                      (pTRB_ENDPOINT_ASSIGN) pHeader);            break;        case TCD_FNC_ENDPOINT_RELEASE:            status = usbTcdIsp1582FncEndpointRelease(                      (pTRB_ENDPOINT_RELEASE) pHeader);            break;        case TCD_FNC_ENDPOINT_STATE_SET:            status = usbTcdIsp1582FncEndpointStateSet(                      (pTRB_ENDPOINT_STATE_SET)pHeader);            break;        case TCD_FNC_ENDPOINT_STATUS_GET:            status = usbTcdIsp1582FncEndpointStatusGet(                      (pTRB_ENDPOINT_STATUS_GET)pHeader);            break;        case TCD_FNC_IS_BUFFER_EMPTY:            status = usbTcdIsp1582FncIsBufferEmpty(                      (pTRB_IS_BUFFER_EMPTY) pHeader);            break;        case TCD_FNC_COPY_DATA_FROM_EPBUF:	        status = usbTcdIsp1582FncCopyDataFromEpBuf(                      (pTRB_COPY_DATA_FROM_EPBUF) pHeader);	        break;        case TCD_FNC_COPY_DATA_TO_EPBUF:            status = usbTcdIsp1582FncCopyDataToEpBuf(                      (pTRB_COPY_DATA_TO_EPBUF) pHeader);            break;        /* interrupt related function codes */        case TCD_FNC_ENDPOINT_INTERRUPT_STATUS_GET:            status = usbTcdIsp1582FncEndpointIntStatusGet(                     (pTRB_ENDPOINT_INTERRUPT_STATUS_GET) pHeader);            break;        case TCD_FNC_ENDPOINT_INTERRUPT_STATUS_CLEAR:            status = usbTcdIsp1582FncEndpointIntStatusClear(                      (pTRB_ENDPOINT_INTERRUPT_STATUS_CLEAR) pHeader);            break;        case TCD_FNC_INTERRUPT_STATUS_GET:            status = usbTcdIsp1582FncInterruptStatusGet(                      (pTRB_INTERRUPT_STATUS_GET_CLEAR) pHeader);            break;        case TCD_FNC_INTERRUPT_STATUS_CLEAR:            status = usbTcdIsp1582FncInterruptStatusClear(                      (pTRB_INTERRUPT_STATUS_GET_CLEAR) pHeader);            break;        case TCD_FNC_HANDLE_RESUME_INTERRUPT:            status = usbTcdIsp1582FncHandleResumeInterrupt(                      (pTRB_HANDLE_RESUME_INTERRUPT) pHeader);            break;        case TCD_FNC_HANDLE_RESET_INTERRUPT :            status = usbTcdIsp1582FncHandleResetInterrupt(                      (pTRB_HANDLE_RESET_INTERRUPT) pHeader);            break;        default:            /* WindView Instrumentation */             USB_TCD_LOG_EVENT(USB_TCD_ISP1582_INIT_EXIT,            "usbTcdIsp1582EvalExec exiting: Wrong Function Code  ...",            USB_TCD_ISP582_WV_FILTER);               USBISP1582_ERROR ("usbTcdIsp1582EvalExec : Bad Parameters...\n",            0,0,0,0,0,0);            status = ossStatus (S_usbTcdLib_BAD_PARAM);        }    /* WindView Instrumentation */     USB_TCD_LOG_EVENT(USB_TCD_ISP1582_INIT_EXIT,    "usbTcdIsp1582EvalExec exiting ...", USB_TCD_ISP582_WV_FILTER);       USBISP1582_DEBUG ("usbTcdIsp1582EvalExec : Exiting...\n",0,0,0,0,0,0);    /* Return status */    return status;    }    

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -