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

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

?? usbtcdisp1582initexit.c

?? This the compressed USB driver source code for vxworks5.6. It has device controller driver and other
?? C
?? 第 1 頁 / 共 2 頁
字號:
/* usbTcdIsp1582InitExit.c - Initialization/uninitialization for ISP 1582 TCD *//* Copyright 2004 Wind River Systems, Inc. *//*Modification history--------------------01f,17sep04,ami  WindView Instrumentation Changes01e,02aug04,mta  Modification History Changes01d,19jul04,ami  Coding Convention Changes01c,16jul04,pdg  Removed usbPciIntEnable and usbPciIntDisable01b,21jun04,ami  Warm Reboot changes01a,21apr04,ami  First.*//*DESCRIPTIONThis file implements the initialization and uninitialization modules of TCD(Target Controller Driver) for the Philips ISP 1582.This module exports a single entry point, usbTcdIsp1582EvalExec().  This isthe USB_TCD_EXEC_FUNC for this TCD.  The caller passes requests to the TCD byconstructing TRBs, or Target Request Blocks, and passing them to this entrypoint.TCDs are initialized by invoking the TCD_FNC_ATTACH function.  In response tothis function, the TCD returns information about the target controller,including its USB speed, the number of endpoints it supports etc.INCLUDE FILES: usb/usbPlatform.h, usb/ossLib.h, usb/usbPciLib.h,               usb/target/usbHalCommon.h, usb/target/usbTcd.h               drv/usb/target/usbIsp1582Eval.h,               drv/usb/target/usbTcdIsp1582EvalLib.h,               drv/usb/target/usbIsp1582Tcd.h,               drv/usb/target/usbIsp1582Debug.h, rebootLib.h               usb/target/usbPeriphInstr.h   *//* includes */#include "usb/usbPlatform.h"	                #include "usb/ossLib.h" 		             #include "usb/usbPciLib.h"	                  #include "usb/target/usbHalCommon.h"           #include "usb/target/usbTcd.h"                 #include "drv/usb/target/usbIsp1582.h"           #include "drv/usb/target/usbIsp1582Eval.h"	    #include "drv/usb/target/usbTcdIsp1582EvalLib.h"  #include "drv/usb/target/usbIsp1582Tcd.h"         #include "drv/usb/target/usbIsp1582Debug.h"   #include "rebootLib.h"                  #include "usb/target/usbPeriphInstr.h"     #include "usbTcdIsp1582Util.c"                   #include "usbTcdIsp1582DeviceControl.c"       #include "usbTcdIsp1582Endpoint.c"          #include "usbTcdIsp1582Interrupt.c"           /* defines */#define MAX_TARGET_CONTROLLER	5		/* maximum target controllers *//* globals */UINT32	usbIsp1582Debug = 0;			/* for debugging */long ioBase [MAX_TARGET_CONTROLLER];		/* to hold base addresses */#ifdef ISP1582_POLLING/* forward declaration */LOCAL VOID usbTcdIsp1582PollingIsr (pVOID param);#endif/* functions *//******************************************************************************** usbIsp1582Exit - function to be called on a reboot** This function clears the Soft-Connect bit on a reboot.** RETURNS: None.** ERRNO:*   None.** \NOMANUAL*/LOCAL VOID usbIsp1582Exit    (    int	startType    )    {    UINT8	i = 0;        /* For all ISP 1582 target controllers attached, reset the mode register */    for (i = 0 ; i < MAX_TARGET_CONTROLLER ; i++)        {        if (ioBase [i] != 0)            {            USB_PCI_WORD_OUT (ioBase [i] + ISP1582EVAL_ADDRESS_PORT ,            ISP1582_MODE_REG);            USB_PCI_WORD_OUT (ioBase [i] + ISP1582EVAL_DATA_PORT , 0);            ioBase [i] = 0;            }        }    }/******************************************************************************** usbTcdIsp1582Attach - function implementing function code TCD_FNC_ATTACH** The purpose of this function is to initialize the Target Controller* for USB operation.** RETURNS: OK or ERROR if failed to initialize the Target Controller.** ERRNO:* \is* \i S_usbTcdLib_BAD_PARAM* Bad parameter is passed.* * \i S_usbTcdLib_OUT_OF_MEMORY* No more memory to allocate variables.** \i S_usbTcdLib_HW_NOT_READY* Hardware is not ready.** \i  S_usbTcdLib_GENERAL_FAULT* Fault occured in upper software layers.* \ie** \NOMANUAL*/LOCAL STATUS usbTcdIsp1582FncAttach    (    pTRB_ATTACH	pTrb			/* TRB to be executed */    )    {    pTRB_HEADER pHeader = (pTRB_HEADER) pTrb;	/* TRB_HEADER */    pUSB_TCD_ISP1582_TARGET	pTarget = NULL;	/* USB_TCD_ISP1582_TARGET */    pUSB_TCD_ISP1582_PARAMS pParams = NULL;	/* USB_TCD_ISP1582_PARAMS */    UINT8	data8 = 0;    UINT16	data16 = 0;    UINT32	data32 = 0;    UINT8	i = 0;    /* WindView Instrumentation */     USB_TCD_LOG_EVENT(USB_TCD_ISP1582_INIT_EXIT,    "usbTcdIsp1582FncAttach entered...", USB_TCD_ISP582_WV_FILTER);       USBISP1582_DEBUG ("usbTcdIsp1582FncAttach : 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,        "usbTcdIsp1582FncAttach exiting: Bad Parameter Received...",        USB_TCD_ISP582_WV_FILTER);           USBISP1582_ERROR ("usbTcdIsp1582FncAttach : Bad Parameters...\n",        0,0,0,0,0,0);        return ossStatus (S_usbTcdLib_BAD_PARAM);        }    if ( (pTrb->tcdParam == NULL ) || (pTrb->usbHalIsr == NULL ) ||         (pTrb->pHalDeviceInfo == NULL) || (pTrb->pDeviceInfo == NULL)  )        {        /* WindView Instrumentation */         USB_TCD_LOG_EVENT(USB_TCD_ISP1582_INIT_EXIT,        "usbTcdIsp1582FncAttach exiting: Bad Parameter Received...",        USB_TCD_ISP582_WV_FILTER);           USBISP1582_ERROR ("usbTcdIsp1582FncAttach : Bad Parameters...\n",        0,0,0,0,0,0);        return ossStatus (S_usbTcdLib_BAD_PARAM);        }    pParams = (pUSB_TCD_ISP1582_PARAMS)pTrb->tcdParam;    /* Create a USB_TCD_ISP1582_TARGET structure to manage controller. */    if ((pTarget = OSS_CALLOC (sizeof (*pTarget))) == NULL )        {        /* WindView Instrumentation */         USB_TCD_LOG_EVENT(USB_TCD_ISP1582_INIT_EXIT,        "usbTcdIsp1582FncAttach exiting: Memory Allocation Error...",        USB_TCD_ISP582_WV_FILTER);           USBISP1582_ERROR ("usbTcdIsp1582FncAttach : Memory Allocation Error \        ...\n",0,0,0,0,0,0);        return ossStatus (S_usbTcdLib_OUT_OF_MEMORY);        }    /* Store the user supplied parameters */    pTarget->ioBase = pParams->ioBase;    pTarget->irq = pParams->irq;    pTarget->dma = pParams->dma;    /*     * Store the ioBase address into the global ioBase which is to be used     * during warm reboot     */    for ( i = 0 ; i < MAX_TARGET_CONTROLLER ; i++)        {        if (ioBase [i] == 0)            {            ioBase [i] = pParams->ioBase;            break;            }        }    /* Read the Chip ID and confirm that its ISP 1582 */    data32 = (isp1582Read32 (pTarget , ISP1582_CHIP_ID_REG) &              ISP1582_CHIP_ID_MASK);     if (data32 != ISP1582_CHIP_ID)        {        /* WindView Instrumentation */         USB_TCD_LOG_EVENT(USB_TCD_ISP1582_INIT_EXIT,        "usbTcdIsp1582FncAttach exiting: Wrong Chip Id...",        USB_TCD_ISP582_WV_FILTER);           USBISP1582_ERROR ("usbTcdIsp1582FncAttach : Chip ID Mismatch... \n",        0,0,0,0,0,0);        /* Free the memory allocated */        OSS_FREE (pTarget);        return ossStatus (S_usbTcdLib_HW_NOT_READY);        }     /* Hook the function which needs to be called on a reboot */     if(ERROR == rebootHookAdd((FUNCPTR)usbIsp1582Exit))	{        /* WindView Instrumentation */         USB_TCD_LOG_EVENT(USB_TCD_ISP1582_INIT_EXIT,        "usbTcdIsp1582FncAttach exiting: Enable to hook function for reboot...",        USB_TCD_ISP582_WV_FILTER);           USBISP1582_ERROR ( " usbTcdIsp1582FncAttach: Not able \        to hook a function on reboot ", 0,0,0,0,0,0);        OSS_FREE (pTarget);		return ERROR;        }    /* Unlock the registers */    isp1582Write16 (pTarget, ISP1582_UNLOCK_DEV_REG,                    ISP1582_UNLOCK_DEV_REG_CODE);    /* 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);    /*     * a soft reset does not clear the soft connect bit     * clear the soft connect bit      */    data16 = isp1582Read16 (pTarget , ISP1582_MODE_REG);    data16 &= ~(ISP1582_MODE_REG_SOFTCT );    isp1582Write16 (pTarget, ISP1582_MODE_REG , data16 & ISP1582_MODE_REG_MASK);    /* Set bit 7 in Control Port to 0 */    USB_PCI_WORD_OUT(pTarget->ioBase + ISP1582EVAL_CNTL_PORT , ~(0x80));    /* Clear the interrupt status register */    isp1582Write32 (pTarget , ISP1582_INT_REG , ISP1582_INT_REG_CLEAR);    /*     * Clear the interrupt enable register to disable interrupts on all the     * endpoints     */    isp1582Write32 (pTarget , ISP_1582_INT_ENABLE_REG , 0);    /* write 0 to OTG register */    isp1582Write8(pTarget,ISP_1582_OTG_REG, 0);    /* write wake up on chip select */    data16 = isp1582Read16 (pTarget , ISP1582_MODE_REG);    data16 |= ISP1582_MODE_REG_WKUPCS;    isp1582Write16 (pTarget, ISP1582_MODE_REG , data16 & ISP1582_MODE_REG_MASK);    /* install the ISR */    /* Store HAL parameters */    pTarget->usbHalIsr = pTrb->usbHalIsr;    pTarget->usbHalIsrParam = pTrb->usbHalIsrParam;#ifndef   ISP1582_POLLING    /* Set bit 7 in Control Port to 0 */    USB_PCI_WORD_OUT((pTarget->ioBase + ISP1582EVAL_CNTL_PORT) , ~(0x80));    /* Hook the ISR */    if (usbPciIntConnect ((INT_HANDLER_PROTOTYPE)usbTcdIsp1582Isr,        (pVOID)pTarget, pTarget->irq)!= OK)        {        /* WindView Instrumentation */         USB_TCD_LOG_EVENT(USB_TCD_ISP1582_INIT_EXIT,        "usbTcdIsp1582FncAttach exiting: Error Hooking the ISR...",        USB_TCD_ISP582_WV_FILTER);           OSS_FREE (pTarget);        USBISP1582_ERROR ("usbTcdIsp1582FncAttach :Error Hooking the ISR...\n",        0,0,0,0,0,0);        return ERROR;        }    /* Set bit 7 in Control Port to 1 */    USB_PCI_WORD_OUT((pTarget->ioBase + ISP1582EVAL_CNTL_PORT) , (0x80));#else    /* Set bit 7 in Control Port to 1 */    USB_PCI_WORD_OUT(pTarget->ioBase + ISP1582EVAL_CNTL_PORT , (0x80));    /* Create a thread for handling the interrupts */    if (OSS_THREAD_CREATE((THREAD_PROTOTYPE)usbTcdIsp1582PollingIsr,                          pTarget,                          100,                          "isp1582Thread",                          &pTarget->threadId) != OK)        {        /* WindView Instrumentation */         USB_TCD_LOG_EVENT(USB_TCD_ISP1582_INIT_EXIT,        "usbTcdIsp1582FncAttach exiting: Error in spawning of polling Thread...",        USB_TCD_ISP582_WV_FILTER);           USBISP1582_ERROR ( "usbTcdIsp1582FncAttach : Spawning of polling \		ISR Failed... " ,0,0,0,0,0,0);        OSS_FREE (pTarget);        return ERROR;	}#endif    /* Decode the address to 0 */    isp1582Write8 (pTarget ,ISP1582_ADDRESS_REG , ISP1582_ADRS_REG_ENABLE);    /* Set Mode Register by setting bits GLINTENA , DMACLKON, CLKON */    data16 = isp1582Read16 (pTarget , ISP1582_MODE_REG);    data16 |= ISP1582_MODE_REG_GLINTENA;     data16 |= ISP1582_MODE_REG_DMACLKON;    data16 |= ISP1582_MODE_REG_CLKAON;    data16 |= ISP1582_MODE_REG_POWRON;    isp1582Write16 (pTarget , ISP1582_MODE_REG , data16 & ISP1582_MODE_REG_MASK);    /* Form the byte to write into Interrupt Configration Register */    data8 = ((ISP1582_INT_CONF_REG_CDBGMOD_SHIFT(             ISP1582_INT_CONF_REG_CDBGMOD_ACK_ONLY)) |            (ISP1582_INT_CONF_REG_DDBGMODIN_SHIFT(             ISP1582_INT_CONF_REG_DDBGMODIN_ACK_ONLY)) |            (ISP1582_INT_CONF_REG_DDBGMODOUT_SHIFT(             ISP1582_INT_CONF_REG_DDBGMODOUT_ACK_NYET)));    /*     * Set the Interrupt Configuration Register to generate interrupts only     * on ACKS     */    isp1582Write8 (pTarget , ISP1582_INT_CONFIG_REG , data8);    /* Initialize Interrupt Enable Register */    isp1582Write32 (pTarget , ISP_1582_INT_ENABLE_REG ,                   (ISP1582_INT_ENABLE_REG_IEBRST |                    ISP1582_INT_ENABLE_REG_IESUSP |                    ISP1582_INT_ENABLE_REG_IERESM |                    ISP1582_INT_ENABLE_REG_IEHS_STA));    /* Initialize the DMA Hardware Register */     data8 = ISP1582_DMA_HARDWARE_REG_EOT_POL | ISP1582_DMA_HARDWARE_REG_DREQ_POL;    isp1582Write8 (pTarget, ISP1582_DMA_HARDWARE_REG , data8 );    /* Initialize the DMA COnfiguration Register */    isp1582Write16 (pTarget , ISP1582_DMA_CONFIG_REG ,              ISP1582_DMA_CONFIG_REG_MODE_SET(ISP1582_DMA_CONFIG_REG_MODE_00)              | ISP1582_DMA_CONFIG_REG_WIDTH_8);    /* Return target information to caller */    pTrb->pHalDeviceInfo->uNumberEndpoints = ISP1582_NUM_ENDPOINTS;    /* supports remote wake up, test mode feature and is USB2 compliant */    pTrb->pDeviceInfo->uDeviceFeature = USB_FEATURE_DEVICE_REMOTE_WAKEUP |                                        USB_FEATURE_TEST_MODE |                                        USB_FEATURE_USB20;    /*     * Set the bit maps for usEndpointNumbr Bitmap     * Setting bits 0 to 7 indicates that ISP 1582 support 8 Out endpoints,     * Setting bits 16 to 21 indicates that ISP 1582 support 8 In endpoints     */    pTrb->pDeviceInfo->uEndpointNumberBitmap = USB_ISP1582_TCD_OUT_ENDPOINT |                                               USB_ISP1582_TCD_IN_ENDPOINT ;    /* update handle */    pHeader->handle = pTarget;    /* WindView Instrumentation */     USB_TCD_LOG_EVENT(USB_TCD_ISP1582_INIT_EXIT,   "usbTcdIsp1582FncAttach exiting...", USB_TCD_ISP582_WV_FILTER);       USBISP1582_DEBUG ("usbTcdIsp1582FncAttach : Exiting...\n",0,0,0,0,0,0);    return OK;    }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品国产91乱码一区二区三区| 麻豆精品精品国产自在97香蕉| 欧美成人艳星乳罩| 欧洲视频一区二区| 99热在这里有精品免费| 狠狠狠色丁香婷婷综合久久五月| 日本不卡免费在线视频| 日韩av在线播放中文字幕| 亚洲精品成人天堂一二三| 一区二区三区四区中文字幕| 国产精品入口麻豆原神| 亚洲视频你懂的| 亚洲精品免费在线播放| 亚洲成人高清在线| 日韩**一区毛片| 日韩av成人高清| 国产一区二区电影| 成人a区在线观看| 亚洲一区日韩精品中文字幕| 4438x成人网最大色成网站| 欧美日韩不卡视频| 亚洲欧洲一区二区在线播放| 久久精品国产77777蜜臀| 欧美另类一区二区三区| 一区二区三区欧美日| kk眼镜猥琐国模调教系列一区二区| 精品国产乱子伦一区| 日本亚洲一区二区| 欧美伦理影视网| 日韩精品一级二级 | 亚洲国产精品成人综合| 日韩av不卡一区二区| 日韩欧美一区二区免费| 午夜激情综合网| 欧美成人国产一区二区| 蜜臀久久99精品久久久久宅男| 欧美日韩成人综合在线一区二区| 亚洲成av人片在线观看| 欧美精品成人一区二区三区四区| 亚洲va国产va欧美va观看| 日韩精品专区在线影院观看| 国产精品资源在线看| 中文在线免费一区三区高中清不卡| 成人激情图片网| 日本欧美在线看| 国产精品国产自产拍高清av| 欧美精品日韩一本| 成人免费看的视频| 日本不卡一区二区| 国产精品视频一二| 欧美草草影院在线视频| 成人一区二区三区视频在线观看 | 久久久精品人体av艺术| 成人动漫中文字幕| 免费精品视频最新在线| 最新国产の精品合集bt伙计| 日韩精品一区二区三区视频播放| 欧美在线啊v一区| 成年人午夜久久久| 国产精品77777| 国产精品一二三四五| 老司机免费视频一区二区三区| 日韩一区有码在线| 亚洲精选视频在线| 一区二区三区鲁丝不卡| 国产精品女上位| 亚洲欧美一区二区不卡| 欧美激情综合网| 中文字幕不卡在线观看| 日本一区二区电影| 亚洲欧美在线观看| 亚洲夂夂婷婷色拍ww47| 亚洲午夜久久久久中文字幕久| 一区二区三区中文字幕电影| 亚洲福利一区二区| 欧美另类变人与禽xxxxx| 欧美成人性战久久| √…a在线天堂一区| 亚洲免费观看高清完整版在线| 一二三四社区欧美黄| 亚洲二区视频在线| 国产一二精品视频| 99v久久综合狠狠综合久久| 欧美体内she精高潮| 久久影院午夜片一区| 亚洲欧洲中文日韩久久av乱码| 香蕉av福利精品导航| 国产精品1区二区.| 欧美唯美清纯偷拍| 国产三级欧美三级日产三级99| 亚洲午夜av在线| 成人性生交大片免费| 欧美成人一区二区三区片免费| 亚洲精品国产一区二区三区四区在线| 国产精品久久国产精麻豆99网站 | 日本不卡视频一二三区| 91久久精品一区二区二区| 日韩亚洲欧美一区| 亚洲高清中文字幕| 欧美色手机在线观看| 综合久久久久久| 97精品久久久久中文字幕| 国产亚洲欧洲997久久综合 | 91精品国产综合久久精品| 国产精品视频麻豆| 成人ar影院免费观看视频| 中文字幕乱码久久午夜不卡| 国产成人综合自拍| 国产精品久久久久久久久快鸭 | 国产精品嫩草久久久久| 国产精品自拍av| 亚洲特黄一级片| 欧美伊人精品成人久久综合97 | 精品日韩在线观看| 国产自产高清不卡| 久久先锋资源网| 色综合久久综合中文综合网| 亚洲曰韩产成在线| 日韩一二三四区| 99久久久精品| 久久国产精品无码网站| 国产清纯美女被跳蛋高潮一区二区久久w | 97久久超碰国产精品| 日本亚洲免费观看| 亚洲欧美日韩人成在线播放| 日韩精品一区二区三区四区视频| 91最新地址在线播放| 久久99国内精品| 亚洲高清不卡在线| 亚洲三级在线播放| 日韩色在线观看| 91高清在线观看| 国产成都精品91一区二区三| 亚洲线精品一区二区三区八戒| 欧美亚洲日本国产| 国产成人在线看| 国产一区福利在线| 久久超碰97人人做人人爱| 日本视频一区二区| 日本不卡一二三区黄网| 亚洲一线二线三线久久久| 国产精品美女久久久久aⅴ国产馆| 欧美成人精品高清在线播放| 欧美视频精品在线观看| 色综合天天综合色综合av| 91社区在线播放| 在线观看日韩一区| 在线播放欧美女士性生活| 91精品在线免费观看| 欧美成人精品福利| 欧美激情中文不卡| 亚洲国产激情av| 亚洲老司机在线| 亚洲欧美aⅴ...| 日韩高清在线一区| 日韩国产精品久久久| 精品一区二区三区影院在线午夜 | 久久伊99综合婷婷久久伊| 日韩免费看网站| 久久久久成人黄色影片| 中文字幕人成不卡一区| 热久久国产精品| 成人av资源站| 精品国产乱码久久久久久图片| 久久免费视频色| 一区二区高清免费观看影视大全| 日韩福利视频网| 日本道在线观看一区二区| 久久免费国产精品| 日一区二区三区| 91黄色激情网站| 国产精品国产三级国产普通话三级| 亚洲午夜激情av| 色域天天综合网| 国产区在线观看成人精品| 精品一区二区在线观看| 日韩一区二区三区电影在线观看 | 精品亚洲aⅴ乱码一区二区三区| 色综合久久88色综合天天6| 欧美国产成人在线| 国产精品一区久久久久| 久久久久久久久岛国免费| 久草这里只有精品视频| 精品久久久久久综合日本欧美| 日韩精品午夜视频| 日韩欧美久久一区| 国产在线一区二区综合免费视频| 日韩欧美中文字幕制服| 久久国内精品自在自线400部| 欧美成人aa大片| 波波电影院一区二区三区| 亚洲精品视频在线| 7777精品伊人久久久大香线蕉最新版| 亚洲国产精品久久人人爱蜜臀 | 综合色天天鬼久久鬼色| 欧美系列亚洲系列| 日本网站在线观看一区二区三区| 久久综合久久综合亚洲| 99精品久久只有精品| 免费成人深夜小野草|