亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? usbtcdnet2280interrupt.c

?? This the compressed USB driver source code for vxworks5.6. It has device controller driver and other
?? C
?? 第 1 頁 / 共 4 頁
字號:
/* usbTcdNET2280Interrupt.c - defines modules for interrupt handling *//* Copyright 2004 Wind River Systems, Inc. *//*Modification history--------------------01i,30sep04,pdg  DMA testing fixes01h,29sep04,ami  Mips related Changes01g,23sep04,pdg  Fix for short packet handling and not losing a setup                 interrupt.01f,22sep04,pdg  Fix for setting the address01e,21sep04,pdg  Full speed testing fixes01d,20sep04,ami  NET2280 tested for High Speed01c,17sep04,ami  After Control, Interrupt IN and Bulk OUT Testing   01b,08sep04,ami  Code Review Comments Incorporated01a,03sep04,ami Written*//*DESCRIPTIONThis file implements the interrupt related functionalities of TCD(Target Controller Driver) for the Netchip NET2280INCLUDE FILES: usb/usbPlatform.h, usb/ossLib.h, usb/usb.h,               usb/target/usbHalCommon.h, usb/target/usbTcd.h               drv/usb/target/usbNET2280.h,               drv/usb/target/usbNET2280Tcd.h,               drv/usb/target/usbTcdNET2280Debug.h               usb/target/usbPeriphInstr.h*//* includes */#include "usb/usbPlatform.h"#include "usb/ossLib.h"#include "usb/usb.h"#include "usb/target/usbHalCommon.h"#include "usb/target/usbTcd.h"#include "drv/usb/target/usbNET2280.h"#include "drv/usb/target/usbNET2280Tcd.h"#include "drv/usb/target/usbTcdNET2280Debug.h"#include "usb/target/usbPeriphInstr.h"/********************************************************************************* usbTcdNET2280Isr - isr of NET2280 TCD** This is the ISR for the NET2280 TCD.** RETURNS: N/A** ERRNO:*   none** \NOMANUAL*/LOCAL VOID usbTcdNET2280Isr    (    pUSB_TCD_NET2280_TARGET	pTarget		/* ISR Parameters */    )    {    UINT32	data32 = 0 ;			/* temporary register */    /* WindView Instrumentation */    USB_TCD_LOG_EVENT(USB_TCD_NET2280_INTERRUPT,    "usbTcdNET2280Isr entered...", USB_TCD_NET2280_WV_FILTER);    USB_NET2280_DEBUG ("usbTcdNET2280Isr: Entered...\n",0,0,0,0,0,0);    if ( pTarget == NULL )        {        USB_NET2280_ERROR("usbTcdNET2280Isr : Bad Parameters...\n",0,0,0,0,0,0);        return;        }    /* Disable the Interrupts. Reset bit 31 of PCIIRQENB1 register */    data32 = NET2280_CFG_READ (pTarget, NET2280_PCIIRQENB1_REG);    data32 &= ~NET2280_XIRQENB1_INTEN;    NET2280_CFG_WRITE (pTarget, NET2280_PCIIRQENB1_REG, data32);    /* Call the HAL ISR */    (*pTarget->usbHalIsr)(pTarget->usbHalIsrParam);    /* Enable the Interrupts. Set bit 31 of PCIIRQENB1 register */    data32 = NET2280_CFG_READ (pTarget, NET2280_PCIIRQENB1_REG);    data32 |= NET2280_XIRQENB1_INTEN;    NET2280_CFG_WRITE (pTarget, NET2280_PCIIRQENB1_REG, data32);    USB_NET2280_DEBUG ("usbTcdNET2280Isr: Exiting...\n",0,0,0,0,0,0);    return;    }/********************************************************************************* usbTcdNET2280FncInterruptStatusGet - to get the interrupt status** This function returns the interrupt status i.e whether the reset interrupt,* suspend interrupt, resume interrupt, disconnect interrupt or endpoint* related interrupt is pending. It also carries out the handling of certain* interrpts which are not intimated to the HAL.** RETURNS: OK or ERROR, if the interrupt status is not retrieved successfully** ERRNO:* \is* \i S_usbTcdLib_BAD_PARAM.* Bad Parameter is passed.* \ie** \NOMANUAL*/LOCAL STATUS usbTcdNET2280FncInterruptStatusGet    (    pTRB_INTERRUPT_STATUS_GET_CLEAR pTrb	/* TRB to be executed */    )    {    pTRB_HEADER	pHeader = (pTRB_HEADER) pTrb;	/* TRB_HEADER */    pUSB_TCD_NET2280_TARGET	pTarget = NULL;	/* USB_TCD_NET2280_TARGET */    UINT32	data32 = 0;			/* temporary variable */    UINT8	i = 0;#ifdef NET2280_DMA_SUPPORTED    UINT32	tempData = 0;			/* Temporary variable */#endif    /* WindView Instrumentation */    USB_TCD_LOG_EVENT(USB_TCD_NET2280_INTERRUPT,    "usbTcdNET2280FncInterruptStatusGet entered...", USB_TCD_NET2280_WV_FILTER);    USB_NET2280_DEBUG ("usbTcdNET2280FncInterruptStatusGet: 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_NET2280_INTERRUPT,        "usbTcdNET2280FncInterruptStatusGet exiting: Bad Parameter Received...",        USB_TCD_NET2280_WV_FILTER);        USB_NET2280_ERROR ("usbTcdNET2280FncInterruptStatusGet: \        Bad Parameters...\n",0,0,0,0,0,0);        return ossStatus (S_usbTcdLib_BAD_PARAM);        }    pTarget =  (pUSB_TCD_NET2280_TARGET) pHeader->handle;    /* Reset uInterruptStatus */    pTrb->uInterruptStatus = 0;    /*     * Read IRQSTAT0 register to determine the whether any endpoint related     * interrupts have occured     */    data32 = NET2280_CFG_READ (pTarget, NET2280_IRQSTAT0_REG);    /* Mask the unwanted interrupts */    data32 &= NET2280_CFG_READ(pTarget,NET2280_PCIIRQENB0_REG);      /* If bit 7 is set, setup interrupt has occured */    if ((data32 & NET2280_IRQENB0_SETUP) != 0)        {        /* To store the value of interruptEnable register */        UINT32 intEnableValue = 0;        USB_NET2280_DEBUG ("usbTcdNET2280FncInterruptStatusGet: Setup Interrupt\        ...\n",0,0,0,0,0,0);        /* WindView Instrumentation */        USB_TCD_LOG_EVENT(USB_TCD_NET2280_INTERRUPT,        "usbTcdNET2280FncInterruptStatusGet: Setup Event Occured...",        USB_TCD_NET2280_WV_FILTER);        pTarget->setupIntPending = TRUE;        /*         * Disable the setup interrupt, till we handle the setup. This will         * be enabled in the endpoint interrupt status clear.         */        intEnableValue = NET2280_CFG_READ(pTarget,NET2280_PCIIRQENB0_REG);        intEnableValue &= ~NET2280_IRQENB0_SETUP;        NET2280_CFG_WRITE (pTarget,NET2280_PCIIRQENB0_REG, intEnableValue);        /* Set the endpoint interrupt mask value */        pTrb->uInterruptStatus |= USBTCD_ENDPOINT_INTERRUPT_MASK;        }    /* Check if any endpoint specific interrupts have occured */     if ((data32 & NET2280_IRQENB0_EPMASK) != 0)         {        /* If bits 0:6 are set, endpoint related interrupt has occured */        for (i = NET2280_ENDPT_0_OUT; i <= NET2280_ENDPT_F; i++)            {            if ((data32 & NET2280_IRQENB0_EP(i)) != 0)                { 	        UINT32	dataEpStat = 0;                 /* set bit 4 if TRB :: uInterruptStatus */                pTrb->uInterruptStatus |= USBTCD_ENDPOINT_INTERRUPT_MASK;                /*                 * Read the EP_STAT regsiter for the endpoint and determine the                  * type of interrupt that has occured                 */                dataEpStat = NET2280_CFG_READ (pTarget,                              NET2280_EP_STAT_OFFSET(i));                /*                 * If the endpoint is not NET2280_ENDPT_0, update endptIntPending and                  * clear the particular bit in EP_STAT regsiter,                 * else determine the type of interrupt on endpoint 0, update                  * endptIntPending accordingle and clear the EP_STAT register                 */                 if (i != NET2280_ENDPT_0_OUT)                  {                                 pTarget->endptIntPending |= (1 << i);                  /* Clear the EP_STAT register */                  dataEpStat = (NET2280_EP_STAT_DPT | NET2280_EP_STAT_DPR |                                                      NET2280_EP_STAT_SPOD);                  NET2280_CFG_WRITE (pTarget,  NET2280_EP_STAT_OFFSET(i),                                    dataEpStat);                                                 }                   else                                       {                    if ((dataEpStat & NET2280_EP_STAT_DPT) != 0)                        {                        /*                          * Check if the address is to be set. If this                         * condition succeeds, then the data packet                         * transmitted interrupt has occured on the                         * status stage completion of the setAddress                         * standard request. So we write to OURADDR register                         * to set the new address.                         */                        if (pTarget->addressTobeSet != 0)                            {                                                       NET2280_CFG_WRITE(pTarget, NET2280_OURADDR_REG,                                              pTarget->addressTobeSet);                                                       /* Reset the addressTobeSet value */                            pTarget->addressTobeSet = 0;                            }                         /* Control In Interrupt. Set bit 7 of endptIntPending */                         pTarget->endptIntPending |= (1 << NET2280_ENDPT_0_IN);                        /* Clear the EP_STAT regsiter */                        NET2280_CFG_WRITE (pTarget,  NET2280_EP_STAT_OFFSET(i),                                    NET2280_EP_STAT_DPT);                        }                    if ((dataEpStat & NET2280_EP_STAT_DPR) != 0)                        {                        if (pTarget->setupIntPending == FALSE)                            {                            /* Clear the EP_STAT regsiter */                            NET2280_CFG_WRITE (pTarget,  NET2280_EP_STAT_OFFSET(i),                                                dataEpStat & NET2280_EP_STAT_DPR);                            }                        else                            {                            UINT32 dataTemp = 0;                              dataTemp = NET2280_CFG_READ (pTarget,                                                    NET2280_EP_IRQENB_OFFSET(i));                            dataTemp &= ~NET2280_EP_STAT_DPR;                            NET2280_CFG_WRITE(pTarget,                                          NET2280_EP_IRQENB_OFFSET(i),dataTemp);                                                      }                        /*                         * Disable the control status interrupt. We enable this in                          * usbTcdNET2280FncCopyDataToEpbuf, when the callback calls this                          * function for status stage. This ensures that we have handled                          * Data OUT stage before handling the Control Status stage                         */                                                          dataEpStat = NET2280_CFG_READ (pTarget,                                                        NET2280_PCIIRQENB1_REG);                        dataEpStat &= ~NET2280_XIRQENB1_CS;                        NET2280_CFG_WRITE (pTarget, NET2280_PCIIRQENB1_REG,                                            dataEpStat);                                                    		pTarget->statusINPending = TRUE;	                        /* Control Out Interrupt. Set bit 0 of endptIntPending */                        pTarget->endptIntPending |= (1 << NET2280_ENDPT_0_OUT);                        }                    }                }            }    	}    /* Read IRQSTAT1 register */    data32 = NET2280_CFG_READ (pTarget, NET2280_IRQSTAT1_REG);    /* Mask the unwanted interrupts */    data32 &= NET2280_CFG_READ(pTarget,NET2280_PCIIRQENB1_REG );    /* reset interrupt */    if ((data32 & NET2280_IRQENB1_RPRESET) != 0)        {        USB_NET2280_DEBUG ("usbTcdNET2280FncInterruptStatusGet: Reset Interrupt\        ...\n",0,0,0,0,0,0);        /* WindView Instrumentation */        USB_TCD_LOG_EVENT(USB_TCD_NET2280_INTERRUPT,        "usbTcdNET2280FncInterruptStatusGet: Reset Event Occured...",        USB_TCD_NET2280_WV_FILTER);    	/* set bit 1 of TRB :: uInterruptStatus */

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品羞羞答答xxdd| 亚洲乱码日产精品bd| 欧美影院一区二区| 色综合久久88色综合天天6| 国产98色在线|日韩| 国产精品综合久久| 国产不卡免费视频| av网站免费线看精品| 91啪在线观看| 欧美日韩一区不卡| 91麻豆精品久久久久蜜臀| 欧美久久久久久蜜桃| 欧美一卡二卡三卡| 久久久欧美精品sm网站| 欧美国产日韩a欧美在线观看| 国产三级精品三级| 亚洲精品乱码久久久久久黑人| 亚洲人成精品久久久久| 午夜成人免费视频| 久久99精品视频| 成人高清视频在线观看| 色婷婷久久久久swag精品| 欧美人伦禁忌dvd放荡欲情| 日韩视频国产视频| 国产精品国产三级国产aⅴ入口| 亚洲人成网站影音先锋播放| 日韩国产一二三区| 成人一二三区视频| 欧美日韩国产一区| 久久久蜜桃精品| 亚洲在线视频免费观看| 久久国产人妖系列| 色综合久久久久久久久久久| 欧美一卡二卡三卡四卡| 国产精品麻豆一区二区 | 久久亚洲捆绑美女| 亚洲精品写真福利| 韩国av一区二区三区| 在线视频一区二区三区| 欧美成人猛片aaaaaaa| 亚洲精品你懂的| 国产精品一二二区| 7777精品伊人久久久大香线蕉经典版下载 | 丰满岳乱妇一区二区三区| 色伊人久久综合中文字幕| 欧美第一区第二区| 一区二区三区在线播放| 韩国午夜理伦三级不卡影院| 91香蕉视频污| 久久精品夜夜夜夜久久| 午夜精品福利视频网站| 91在线国产福利| 精品国产成人系列| 天天av天天翘天天综合网 | 欧美在线999| 中文字幕一区二| 经典一区二区三区| 欧美一级夜夜爽| 亚洲sss视频在线视频| 99国产精品国产精品久久| 久久久av毛片精品| 精品一区二区在线免费观看| 欧美亚洲图片小说| 亚洲免费观看高清完整版在线 | 免费成人在线视频观看| 欧美色图在线观看| 亚洲精品中文字幕在线观看| 成人午夜视频网站| 亚洲国产成人私人影院tom | 亚洲免费观看视频| 色综合av在线| 一区二区三区中文字幕| 91麻豆国产香蕉久久精品| 国产精品家庭影院| 北条麻妃一区二区三区| 欧美激情在线看| 不卡的av在线播放| 亚洲免费视频中文字幕| 色综合久久88色综合天天免费| 亚洲三级小视频| 日本电影亚洲天堂一区| 亚洲成人中文在线| 56国语精品自产拍在线观看| 视频一区视频二区中文| 91麻豆精品国产自产在线| 久久国产精品72免费观看| 精品国产91久久久久久久妲己| 久久99精品国产| 中文字幕二三区不卡| 在线观看国产一区二区| 偷拍亚洲欧洲综合| 精品国产三级电影在线观看| 国产伦精品一区二区三区免费迷| 欧美国产禁国产网站cc| 99riav一区二区三区| 亚洲超碰97人人做人人爱| 日韩一级欧美一级| 成人中文字幕在线| 亚洲国产裸拍裸体视频在线观看乱了| 欧美日韩成人高清| 国产91精品精华液一区二区三区 | av色综合久久天堂av综合| 亚洲午夜激情网站| 日韩欧美黄色影院| 91欧美一区二区| 另类综合日韩欧美亚洲| 最新国产精品久久精品| 欧美夫妻性生活| 成年人国产精品| 日日夜夜免费精品| 国产精品久久久久久久久晋中| 欧洲精品一区二区三区在线观看| 另类综合日韩欧美亚洲| 一区二区三区在线影院| 日韩三区在线观看| 色www精品视频在线观看| 精品一区免费av| 夜夜揉揉日日人人青青一国产精品| 日韩欧美成人激情| 91麻豆蜜桃一区二区三区| 美国三级日本三级久久99| 亚洲精品国产视频| 国产欧美一区二区在线观看| 欧美日韩国产a| 99精品久久久久久| 国产电影一区在线| 琪琪久久久久日韩精品| 亚洲乱码国产乱码精品精98午夜| 久久久综合精品| 538prom精品视频线放| 色婷婷一区二区三区四区| 国产高清无密码一区二区三区| 日韩精彩视频在线观看| 一区二区三区丝袜| 亚洲图片欧美激情| 久久精品人人爽人人爽| 精品99久久久久久| 欧美一区二区三级| 欧美三级午夜理伦三级中视频| 91麻豆国产福利在线观看| 成人av手机在线观看| 国产呦精品一区二区三区网站| 日韩高清国产一区在线| 亚洲成av人综合在线观看| 亚洲一区二区在线免费看| 国产精品乱码久久久久久| 国产精品狼人久久影院观看方式| 久久久美女毛片| 国产无人区一区二区三区| 久久久久99精品一区| 国产三区在线成人av| 精品国精品自拍自在线| 日韩小视频在线观看专区| 精品久久久久久亚洲综合网| 日韩视频免费观看高清完整版| 欧美电影免费观看高清完整版在 | 亚洲一区二区三区自拍| 亚洲精品国产精品乱码不99| 亚洲日本va在线观看| 一区二区成人在线| 午夜久久久久久| 精品一区二区三区影院在线午夜| 另类小说一区二区三区| 国产一区二区三区日韩 | 欧美日韩成人高清| 日韩亚洲欧美在线| 国产欧美一区二区精品性色超碰| 国产三级一区二区三区| 亚洲激情图片qvod| 午夜久久福利影院| 国产专区欧美精品| 成人一级片在线观看| 欧美午夜视频网站| 欧美一区二区在线不卡| 久久一区二区视频| 亚洲欧洲av另类| 天天爽夜夜爽夜夜爽精品视频| 久久99深爱久久99精品| 成人国产精品免费观看视频| 欧美日韩三级一区二区| 欧美成人精品二区三区99精品| 国产欧美精品一区二区三区四区 | 国产精品不卡在线| 视频在线观看一区| 国产精品一区在线| 日本道精品一区二区三区 | 国产精品丝袜一区| 午夜精品一区二区三区电影天堂 | 久久99国产精品免费| av中文字幕在线不卡| 欧美一区二区播放| 亚洲三级在线观看| 国产主播一区二区| 欧美日韩国产免费| 国产拍揄自揄精品视频麻豆| 亚洲国产成人tv| 成人app下载| 精品国产一区久久| 亚洲午夜在线电影| 成人精品电影在线观看|