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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? usb.c

?? 有關ARM開發板上的IXP400網絡驅動程序的源碼以。
?? C
?? 第 1 頁 / 共 5 頁
字號:
                           USBEventCallback eventCallback,                            USBEventMap eventMap){    USBEventProcessor *events;    UDCRegisters *registers;    CHECK_DEVICE(device);    CHECK_EVENT_MASK(device, eventMap);    events    = EVENTS(device);    registers = REGISTERS(device);    if (eventCallback != NULL)    {        UINT32 UFNHR = REG_GET(&registers->UFNHR);        BOOL sofMaskSet     = (UFNHR & UDC_UFNHR_SIM) != 0;        BOOL sofMaskDesired = (eventMap & USB_SOF) == 0;        events->eventCallback = eventCallback;        events->eventMap      = eventMap;        /* check if we need to switch the SOF mask */        if (sofMaskSet != sofMaskDesired)        {            if (sofMaskDesired)            {                /* set mask */                UFNHR = UDC_UFNHR_SIM;            }            else            {                /* unset mask (this will enable SOF interrupts) */                UFNHR = UFNHR & ~UDC_UFNHR_SIM;            }            REG_SET(&registers->UFNHR, UFNHR);        }    }    else    {        events->eventCallback = ixUSBNullEventCallback;        events->eventMap      = USB_DEVICE_EVENTS;        /* mask start of frame interrupts */        REG_SET(&registers->UFNHR, UDC_UFNHR_SIM);    }    RETURN_OK(device);}#ifdef IX_USB_HAS_STATISTICS_SHOWPUBLIC IX_STATUS ixUSBStatisticsShow(USBDevice *device){    USBDeviceCounters *devCounters;    BOOL deviceEnabled;    UDCRegisters *registers;#ifdef IX_USB_STATS_SHOW_PER_ENDPOINT_INFO    UINT16 epIndex;#endif /* IX_USB_STATS_SHOW_PER_ENDPOINT_INFO */    CHECK_DEVICE(device);    devCounters   = COUNTERS(device);    deviceEnabled = CONTEXT(device)->enabled;    registers     = REGISTERS(device);    /* device info */
    printf("USB controller %d (I/O %x, IRQ %d) - %s, %s, %d irqs, %d frames\n",
            device->deviceIndex,
            device->baseIOAddress,
            device->interruptLevel,
            deviceEnabled ? "enabled" : "disabled",
            (REG_GET(&registers->UDCCR) & UDC_UDCCR_UDA) ? "active" : "inactive",
            devCounters->irqCount,
            devCounters->frames);

    /* device stats */
    printf("packets Tx %d, Rx %d, dropped Tx %d, Rx %d - bytes Tx %d, Rx %d - setup %d\n",
            devCounters->Tx,
            devCounters->Rx,
            devCounters->DTx,
            devCounters->DRx,
            devCounters->bytesTx,
            devCounters->bytesRx,
            devCounters->setup);
#ifdef IX_USB_STATS_SHOW_PER_ENDPOINT_INFO

    printf("\n");

    /* endpoint stats - table header */    printf("ep |   packets |   dropped |     bytes | irqs | flags   | FIFO o/u\n");
    printf("   |  Tx    Rx |  Tx    Rx |   Tx   Rx |      |         |\n");
    /* endpoint info */    for (epIndex = ENDPOINT_0 ; epIndex < NUM_ENDPOINTS ; epIndex++)    {        USBEndpointCounters *epCounters = EPCOUNTERS(device, epIndex);        BOOL stallState;        ixUSBIsEndpointStalled(device, epIndex, &stallState);

        printf("%2d | %3d%s %3d%s | %3d%s %3d%s | %3d%s %3d%s | %4d | %s | %3d%s %3d%s\n",
                epIndex,
                SHOW_NUMBER(epCounters->Tx), SHOW_METRIC(epCounters->Tx),
                SHOW_NUMBER(epCounters->Rx), SHOW_METRIC(epCounters->Rx),
                SHOW_NUMBER(epCounters->DTx), SHOW_METRIC(epCounters->DTx),
                SHOW_NUMBER(epCounters->DRx), SHOW_METRIC(epCounters->DRx),
                SHOW_NUMBER(epCounters->bytesTx), SHOW_METRIC(epCounters->bytesTx),
                SHOW_NUMBER(epCounters->bytesRx),  SHOW_METRIC(epCounters->bytesRx),                epCounters->irqCount,
                EP_TYPE(EPDescriptorTable[epIndex]) == USB_ISOCHRONOUS ? "    N/A" : stallState ? "stalled" : " active",
                SHOW_NUMBER(epCounters->fifoOverflows), SHOW_METRIC(epCounters->fifoOverflows),                SHOW_NUMBER(epCounters->fifoUnderruns), SHOW_METRIC(epCounters->fifoUnderruns));
    }#endif /* IX_USB_STATS_SHOW_PER_ENDPOINT_INFO */    RETURN_OK(device);}#endif /* IX_USB_HAS_STATISTICS_SHOW */PRIVATE UINT32 ixUSBIrqRead(void){    UINT32 intPending;    if(ixUSBIrqCtrlRegVirtAddr == 0)    {        ixOsalLog(IX_OSAL_LOG_LVL_ERROR,                  IX_OSAL_LOG_DEV_STDERR,                  "Irq Control Registers is not mem map\n",                  0, 0, 0 ,0 ,0 ,0);        return 0;    }        /**     * Get the interrupt control register content.      * The register is mem map in ixUSBDriverInit.      */    intPending = IX_OSAL_READ_LONG(ixUSBIrqCtrlRegVirtAddr);    return intPending;}/** * @} addtogroup USBDriver *//** * @addtogroup SupportAPI * @{ */PRIVATE void ixUSBInterruptHandlerWrapper(USBDevice *device){    UINT32 intPend     = 0;    UINT32 maxCount    = 0xFF;    UINT32 ep0Activity = 0;    intPend = ixUSBIrqRead();    if (! (intPend & (1 << IX_OSAL_IXP400_INT_LVL_USB)))    {        IX_USB_VERBOSE_WARN_TRACE("Arrived in ixUSBInterruptHandlerWrapper but no interrupt\n",   		  0, 0, 0, 0, 0, 0);        return;    }    while ((intPend & (1 << IX_OSAL_IXP400_INT_LVL_USB)) && maxCount)    {        ep0Activity = ixUSBInterruptHandler(device);        --maxCount;        intPend = ixUSBIrqRead();        intPend = ixUSBIrqRead();        intPend = ixUSBIrqRead();    }    if (maxCount == 0)    {        IX_USB_VERBOSE2_TRACE("Leaving ixUSBInterruptHandlerWrapper after 0xffff iterations\n", 	             0, 0, 0, 0, 0, 0);    }}/** * @fn PRIVATE UINT32 ixUSBInterruptHandler(USBDevice *device) * * @brief Main interrupt handler * * @param device USBDevice * (in) - structure identifying the device * * Takes a snapshot of the USB status registers and analyzes the * source of the interrupt, calling the appropriate handler. * Depending on the event that caused the interrupt this can be * the endpoint 0 interrupt handler, USB_IN/USB_OUT interrupt handlers * or the client event callback.<br> * UDC interrupts are disabled during the execution of this function * as the handler and its support functions are not reentrant. * * @return none * * @internal */ /*Note:         UDCCR     - UDC Control Register    USIR0     - UDC Interrupt and Status Register 0    USIR1     - UDC Interrupt and Status Register 1    UFNHR     - UDC Frame Number High Register */static INT32 ixUSBIPRset = 0;PRIVATE UINT32 ixUSBInterruptHandler(USBDevice *device){    UINT16 epIndex;    UINT32 eventSet    = USB_NO_EVENT;    UINT32 ep0Activity = 0;    USBDeviceContext *context      = CONTEXT(device);    UDCRegisters *registers        = context->registers;    USBEventCallback eventCallback = context->eventProcessor.eventCallback;    USBEventMap eventMap           = context->eventProcessor.eventMap;    UINT32 UDCCR; /* device control/status register */    UINT32 USIR0; /* endpoints 0..7 interrupt status */    UINT32 USIR1; /* endpoints 8..15 interrupt status */    UINT32 UFNHR; /* device frame number high register (contains SOF IRQ) */#ifdef IX_USB_HAS_CRITICAL_DATA_LOCKS    /* disable interrupts */    UINT32 irqStatus;    irqStatus = IX_USB_IRQ_LOCK;#endif /* IX_USB_HAS_CRITICAL_DATA_LOCKS */    /* read UDCCR, UISR0, UISR1, UFNHR */    UDCCR = REG_GET(&registers->UDCCR);    USIR0 = REG_GET(&registers->USIR0);    USIR1 = REG_GET(&registers->USIR1);    UFNHR = REG_GET(&registers->UFNHR);    ixUSBIPRset = 0;    if ((UDCCR | USIR0 | USIR1) == 0)    {        IX_USB_VERBOSE2_TRACE("USB: Oops, servicing interrupt with no events\n",                   0, 0, 0, 0, 0, 0);    }    /* debug */    IX_USB_VERBOSE3_TRACE("Int handler: UDCCR %2X, USIR0 %2X, USIR1 %2X, UFNHR %2X\n",                  UDCCR, USIR0, USIR1, UFNHR, 0, 0);    /* device IRQ counter */    context->counters.irqCount++;    /* Reset? */    if (UDCCR & UDC_UDCCR_RSTIR)    {        eventSet |= USB_RESET;        /* perform driver reset */                /* clear endpoint information */        for (epIndex = ENDPOINT_0 ; epIndex < NUM_ENDPOINTS ; epIndex++)        {            ixUSBEndpointClear(device, epIndex);        }        /* reset endpoint 0 state */        ixUSBEP0StateReset(device);    }    /* Suspend? */    if (UDCCR & UDC_UDCCR_SUSIR)    {        eventSet |= USB_SUSPEND;    }    /* Resume? */    if (UDCCR & UDC_UDCCR_RESIR)    {        eventSet |= USB_RESUME;    }    /* Start of frame? */    if (UFNHR & UDC_UFNHR_SIR)    {        eventSet |= USB_SOF;        /* device frame counter */        context->counters.frames++;    }    if ((eventCallback != NULL) && ((eventMap & eventSet) != 0))    {        eventCallback(device, eventSet);    }    /* Endpoint interrupt handling */    for (epIndex = ENDPOINT_0 ; epIndex < NUM_ENDPOINTS ; epIndex++)    {        UINT32 intReg = (epPriority[epIndex] < ENDPOINT_8) ? USIR0 : USIR1;                if (((intReg & UDCEPInterrupt[epPriority[epIndex]]) != 0))        {            EPStatusData *epData = &(context->epStatusData[epPriority[epIndex]]);            ep0Activity = (epPriority[epIndex] == 0);            /* endpoint IRQ count */            epData->counters.irqCount++;            /* debug */            IX_HWEMU_TRACE("USB::ixUSBInterruptHandler(): servicing endpoint %d\n",                   epIndex, 0, 0, 0, 0, 0);            /* service endpoint */            EPInterruptHandlerTable[epPriority[epIndex]](epData);            /* clear endpoint interrupt bit */            if (epPriority[epIndex] < ENDPOINT_8  )            {                if (epPriority[epIndex] != 0 || ixUSBIPRset == 0)                {                    REG_SET(&registers->USIR0, UDCEPInterrupt[epPriority[epIndex]]);                }            }            else            {                REG_SET(&registers->USIR1, UDCEPInterrupt[epPriority[epIndex]]);            }            ixUSBIPRset = 0;        }    }    /* clear serviced interrupts */    REG_SET(&registers->UDCCR, UDCCR);    /* REG_SET(&registers->USIR0, USIR0); */    /* REG_SET(&registers->USIR1, USIR1); */    REG_SET(&registers->UFNHR, UFNHR);#ifdef __HWEMU__ /* the emulator allows more time for processing */    if (USIR0 != 0x01)#endif /* __HWEMU__ */    {        REG_SET(&registers->USIR0, USIR0);    }#ifdef __HWEMU__    if (USIR0 == 0x01)     {        REG_SET(&registers->USIR0, USIR0);    }#endif /* __HWEMU__ */#ifdef IX_USB_HAS_CRITICAL_DATA_LOCKS    IX_USB_IRQ_UNLOCK(irqStatus);#endif /* IX_USB_HAS_CRITICAL_DATA_LOCKS */    return ep0Activity;}/** * @fn PRIVATE void ixUSBINInterruptHandler(EPStatusData *epData) * * @brief Interrupt handler for USB_IN endpoints * * @param epData EPStatusData * (in) - structure identifying the endpoint * * Interrupt handler for USB_IN endpoints. Is is called after a packet was * sent to the host. Calls ixUSBSendCleanup() to release outgoing * buffers and service the next transfer. * * @return none * * @internal */PRIVATE void ixUSBINInterruptHandler(EPStatusData *epData){    ixUSBSendCleanup(epData);}/** * @fn PRIVATE void ixUSBOUTInterruptHandler(EPStatusData *epData) * * @brief Interrupt handler for USB_OUT endpoints * * @param epData EPStatusData * (in) - structure identifying the endpoint * * @return none * * Interrupt handler for USB_OUT endpoints. Services Rx host requests by calling * ixUSBReceiveProcess(). * * @internal */PRIVATE void ixUSBOUTInterruptHandler(EPStatusData *epData){    ixUSBReceiveProcess(epData);}/** * @fn PRIVATE void ixUSBEP0InterruptHandler(EPStatusData *epData) * * @brief Interrupt handler for endpoint 0 * * @param epData EPStatusData * (in) - structure identifying the endpoint * * @return none * * The endpoint 0 interrupt handler analyzes and updates the endpoint 0 * state machine while taking appropriate actions to ensure Tx/Rx * on the control endpoint.<br> * Interacts with client code by calling the <i>setup receive</i> callback. * * @internal */PRIVATE void ixUSBEP0InterruptHandler(EPStatusData *epData){    USBDevice *device          = epData->device;    USBDeviceContext *context  = CONTEXT(device);    UDCRegisters *registers    = context->registers;    EP0ControlData *ep0Control = &context->ep0ControlData;    UINT32 UDCCS0              = REG_GET(&registers->UDCCS0);    static UINT32 controlWriteError = FALSE;    IX_HWEMU_TRACE("Ep0 handler: UDCCS0 is 0x%08X\n", UDCCS0, 0, 0, 0, 0, 0);    IX_USB_VERBOSE3_TRACE("::> UDCCS0 is 0x%02X\n", UDCCS0, 0, 0, 0, 0, 0);    ixOsalMutexLock(&usbBufferSubmitMutex[0], IX_OSAL_WAIT_FOREVER);        /* clear sent stall bit unless endpoint 0 doesn't unstall itself */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品盗摄一区二区三区| 日韩不卡免费视频| 亚洲成人一区二区| 精品一区二区三区不卡| 91电影在线观看| 国产欧美日韩亚州综合| 蜜桃视频一区二区三区| 欧美专区亚洲专区| 国产精品久久久久影院| 国产一区二区三区在线观看免费| 欧美无砖砖区免费| 中文字幕一区二区在线播放| 国产综合色精品一区二区三区| 欧美视频一区二区| 亚洲视频免费观看| 成年人国产精品| 久久久无码精品亚洲日韩按摩| 亚洲v精品v日韩v欧美v专区| 91污片在线观看| 国产精品久久久爽爽爽麻豆色哟哟| 捆绑紧缚一区二区三区视频| 欧美美女视频在线观看| 一区二区三区四区视频精品免费| 成人黄色综合网站| 久久综合五月天婷婷伊人| 毛片不卡一区二区| 日韩女优av电影| 久久99精品一区二区三区| 日韩欧美一区二区久久婷婷| 日韩成人一区二区| 欧美一二区视频| 热久久免费视频| 精品久久久久香蕉网| 经典三级视频一区| 久久久久国产精品人| 国产高清在线观看免费不卡| 久久老女人爱爱| 成人免费毛片片v| 综合色天天鬼久久鬼色| 色综合久久久久综合体| 一区二区三区蜜桃| 欧美午夜精品一区二区三区| 首页国产欧美日韩丝袜| 日韩一区二区三区视频在线 | 欧美另类久久久品| 五月天视频一区| 欧美一区二区三区免费大片 | 成人av午夜影院| 国产精品国产三级国产aⅴ中文 | 午夜国产精品一区| 日韩一区二区三区电影 | 欧美日韩国产123区| 丝袜诱惑制服诱惑色一区在线观看| 欧美日韩一级大片网址| 美女免费视频一区二区| 久久亚洲春色中文字幕久久久| 国产99精品国产| 一区二区三区四区亚洲| 欧美一级免费观看| 国产不卡在线一区| 亚洲午夜一区二区| 精品盗摄一区二区三区| av资源网一区| 免费在线看成人av| 国产精品国产三级国产专播品爱网| 99精品国产91久久久久久| 亚洲网友自拍偷拍| 久久久精品影视| 欧美性xxxxxx少妇| 国产在线日韩欧美| 亚洲午夜精品网| 国产亚洲精品中文字幕| 欧美日韩在线三级| 成人午夜在线免费| 日韩av中文在线观看| 欧美国产一区视频在线观看| 欧美日韩精品福利| 成人精品国产福利| 美国欧美日韩国产在线播放| 亚洲伦在线观看| 精品国产亚洲在线| 欧美日韩一卡二卡| 91丨porny丨首页| 久久精品国产精品亚洲精品| 亚洲乱码精品一二三四区日韩在线| 精品美女被调教视频大全网站| 91福利精品视频| 国产精品18久久久久久久久久久久| 亚洲成人动漫在线免费观看| 国产精品麻豆视频| 精品成a人在线观看| 在线播放/欧美激情| 色婷婷久久综合| 成人av网站免费| 国产一区二区0| 免费成人av在线播放| 亚洲国产一区在线观看| 亚洲三级理论片| 国产精品热久久久久夜色精品三区 | 欧美一区二区三区电影| 在线观看一区不卡| 91麻豆免费在线观看| 成人精品国产免费网站| 成人免费看片app下载| 国产精品综合网| 国产一区二区视频在线| 久久91精品国产91久久小草| 三级影片在线观看欧美日韩一区二区 | 日韩在线卡一卡二| 亚洲一区成人在线| 亚洲色图19p| 亚洲影院在线观看| 亚洲午夜视频在线| 亚洲高清免费一级二级三级| 亚洲免费av在线| 亚洲欧美日韩国产成人精品影院 | 久久精品国产久精国产爱| 日本欧美大码aⅴ在线播放| 婷婷综合久久一区二区三区| 亚洲国产日韩一级| 免费一级欧美片在线观看| 喷水一区二区三区| 精品影院一区二区久久久| 看片的网站亚洲| 国产高清不卡二三区| 国产成人av一区| 99久久夜色精品国产网站| 91视频91自| 欧美日本乱大交xxxxx| 91精品国产91综合久久蜜臀| 日韩亚洲欧美中文三级| 久久男人中文字幕资源站| 国产亚洲成年网址在线观看| 国产欧美日韩一区二区三区在线观看| 欧美激情中文不卡| 尤物视频一区二区| 日韩高清在线一区| 国内国产精品久久| 99久久婷婷国产| 欧美日韩精品一二三区| 欧美精品一区二区三区很污很色的 | 成人的网站免费观看| 在线看日韩精品电影| 欧美一二区视频| 中文字幕免费一区| 婷婷中文字幕综合| 国产露脸91国语对白| 色一情一乱一乱一91av| 日韩一区二区电影网| 中文字幕不卡在线播放| 婷婷久久综合九色综合伊人色| 精品一区二区免费视频| 91黄色免费网站| 久久久一区二区| 午夜精品一区二区三区电影天堂| 极品少妇xxxx偷拍精品少妇| 色综合久久综合| 久久久不卡网国产精品一区| 亚洲精品一二三| 国产福利精品一区二区| 欧美日韩国产精品成人| 国产精品国产三级国产三级人妇| 男女性色大片免费观看一区二区| eeuss鲁一区二区三区| 日韩一区二区中文字幕| 亚洲一区二区高清| 不卡av免费在线观看| 精品国产自在久精品国产| 一区二区三区电影在线播| 国产成人免费av在线| 69久久夜色精品国产69蝌蚪网| 成人欧美一区二区三区白人| 狠狠色丁香久久婷婷综合_中| 欧美在线|欧美| 中文字幕永久在线不卡| 国产成人av资源| 精品国产91九色蝌蚪| 免费一级片91| 欧美一区二区三区日韩视频| 亚洲精品成人在线| 成人黄色大片在线观看| 国产亚洲精品久| 国产精品亚洲视频| 精品国产乱码久久久久久老虎| 午夜欧美在线一二页| 在线一区二区视频| 亚洲欧美成aⅴ人在线观看| 成人久久久精品乱码一区二区三区| 日韩女优制服丝袜电影| 蜜桃av噜噜一区| 欧美一区午夜精品| 日本网站在线观看一区二区三区| 欧洲一区二区三区免费视频| 亚洲免费观看视频| 91视频在线看| 亚洲区小说区图片区qvod| 91丨porny丨最新| 亚洲一区二区视频在线观看| 在线一区二区视频| 亚洲午夜免费福利视频|