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

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

?? sysbuspci.c

?? WINDRIVER MCP750 BSP
?? C
字號:
/* sysBusPci.c - Motorola MCPX750 PCI "board" special configuration code *//* Copyright 1997,1998,1999 Motorola, Inc. All Rights Reserved *//* Copyright 1997-1999 Wind River Systems, Inc. All Rights Reserved *//*modification history--------------------01h,01nov01,mil  Assigned USB interrupt and cleaned up compiler warnings.01g,10may99,srr  Merge in WRS pciAutoConfig support.01f,20apr99,srr  Remove non-standard CompactPCI interrupt support.01e,30sep98,scb  Make pciConfigInWord() calls with proper offset allignment.01d,29jul98,scb  Name change from "mv2600.h" to "mcpx750.h"01c,02jun98,mas  renamed module sysBusPci.c from pciNonGeneric.c.01b,24apr98,scb  mods to work with "generic" libraries.01a,05Jan98,scb  written based on Motorola bug code*//*DESCRIPTIONThis module contains the "non-generic" or "board specific" PCI-PCIbridge initialization code.  The module contains code to:  1.  Determine if a particular function is to be excluded from the	  automatic configuration process.  2.  Program the "interrupt line" field of the PCI configuration header.*//* includes */#include "mcpx750.h"#include "drv/pci/pciAutoConfigLib.h"#include "drv/pci/pciConfigLib.h"/* defines */#define INTA2INTD		4#define CPCI_LOGIGAL_SLOTS	8#define PCI_INTA		0#define PCI_INTB		1#define PCI_INTC		2#define PCI_INTD		3#define DEV_ON_ADDIN_BUS	1/* typedefs *//* globals *//* locals *//* * Table for converting (device number, interrupt pin) to interrupt * line value for programming the PCI configuration header.  This * table only applies to PCI devices which reside on bus 0 (Case 1 * as explained in sysPciAutoConfigIntAsgn()). */static UCHAR intLine [][4] =    {	{ 0xff, 0xff, 0xff, 0xff },  /* dev #0, PCI bridge */	{ 0xff, 0xff, 0xff, 0xff },  /* dev #1 */	{ 0xff, 0xff, 0xff, 0xff },  /* dev #2 */	{ 0xff, 0xff, 0xff, 0xff },  /* dev #3 */	{ 0xff, 0xff, 0xff, 0xff },  /* dev #4 */	{ 0xff, 0xff, 0xff, 0xff },  /* dev #5 */	{ 0xff, 0xff, 0xff, 0xff },  /* dev #6 */	{ 0xff, 0xff, 0xff, 0xff },  /* dev #7 */	{ 0xff, 0xff, 0xff, 0xff },  /* dev #8 */	{ 0xff, 0xff, 0xff, 0xff },  /* dev #9 */	{ 0xff, 0xff, 0xff, 0xff },  /* dev #10 */	{ 0xff, 0xff, 0xff, 0x0b },  /* dev #11, PCI-ISA/IDE/USB brg */	{ 0xff, 0xff, 0xff, 0xff },  /* dev #12, Not used */	{ 0xff, 0xff, 0xff, 0xff },  /* dev #13, Not used */	{ 0x02, 0xff, 0xff, 0xff },  /* dev #14, ethernet */	{ 0xff, 0xff, 0xff, 0xff },  /* dev #15, Not used */#ifdef CONFIG1_PLANAR_PCI /* e.g. MCP750 */	{ 0x03, 0x03, 0x03, 0x03 },  /* dev #16, PMC slot */	{ 0xff, 0xff, 0xff, 0xff },  /* dev #17, Not used */	{ 0xff, 0xff, 0xff, 0xff },  /* dev #18, Not used */	{ 0xff, 0xff, 0xff, 0xff },  /* dev #19, Not used */	{ 0x08, 0x09, 0x0a, 0x0b }   /* dev #20, PCI-PCI bridge */#endif /* CONFIG1_PLANAR_PCI */#ifdef CONFIG2_PLANAR_PCI /* e.g. MCPN750 */	{ 0x09, 0x0a, 0x0b, 0x0c },  /* dev #16, PMC slot */	{ 0x0c, 0x09, 0x0a, 0x0b },  /* dev #17, Not used */	{ 0xff, 0xff, 0xff, 0xff },  /* dev #18, Not used */	{ 0xff, 0xff, 0xff, 0xff },  /* dev #19, Not used */	{ 0x04, 0xff, 0xff, 0xff }   /* dev #20, nontransparent bridge */#endif /* CONFIG2_PLANAR_PCI */    };LOCAL    PCI_SYSTEM    sysParams;#ifdef PCI_ROLL_CALL_LIST_ENTRIES/* PCI autoconfig roll call support *//* Roll call list entry structure, list elements specified in "config.h" */typedef struct _PCI_ROLL_CALL_LIST    {    UINT count;    UINT Dev;    UINT Vend;    } PCI_ROLL_CALL_LIST;LOCAL PCI_ROLL_CALL_LIST rollCall[] =    {    PCI_ROLL_CALL_LIST_ENTRIES    { 0xffff, 0xffff, 0xffff }  /* Required entry: marks end of list */    };#endif/* forward declarations */LOCAL UCHAR sysPciAutoConfigIntAsgn ( PCI_SYSTEM * pSys, PCI_LOC * pFunc,    			UCHAR intPin );LOCAL STATUS sysPciAutoConfigInclude ( PCI_SYSTEM *pSys, PCI_LOC *pciLoc,			UINT devVend );#ifdef PCI_ROLL_CALL_LIST_ENTRIESLOCAL STATUS sysPciRollcallRtn ( );#endif/* subroutines *//******************************************************************************** sysPciAutoConfigInclude - Determine if function is to be autoConfigured** This function is called with PCI bus, device, function, and vendor * information.  It returns an indication of whether or not the particular* function should be included in the automatic configuration process.* This capability is useful if it is desired that a particular function* NOT be automatically configured.  Of course, if the device is not* included in automatic configuration, it will be unusable unless the* user's code made provisions to configure the function outside of the* the automatic process.** RETURNS: OK if function is to be included in automatic configuration,*          ERROR otherwise.*/ LOCAL STATUS sysPciAutoConfigInclude    (    PCI_SYSTEM *pSys,       /* input: AutoConfig system information */    PCI_LOC *pciLoc,        /* input: PCI address of this function */    UINT     devVend        /* input: Device/vendor ID number      */    )    {    BOOL retVal = OK;        /* If it's the host bridge then exclude it */    if ((pciLoc->bus == 0) && (pciLoc->device == 0) && (pciLoc->function == 0))        return ERROR;    switch(devVend)	{	/* EXCLUDED Devices */	case PCI_ID_IBC:		retVal = ERROR;		PCI_AUTO_DEBUG_MSG("sysPciAutoconfigInclude: Excluding IBC\n",			0, 0, 0, 0, 0, 0);		break;	 case PCI_ID_IDE:		retVal = ERROR;		PCI_AUTO_DEBUG_MSG("sysPciAutoconfigInclude: Excluding IDE\n",			0, 0, 0, 0, 0, 0);		break;	case PCI_ID_USB:		retVal = ERROR;		PCI_AUTO_DEBUG_MSG("sysPciAutoconfigInclude: Excluding USB\n",			0, 0, 0, 0, 0, 0);		break;	 case PCI_ID_PM:		retVal = ERROR;		PCI_AUTO_DEBUG_MSG("sysPciAutoconfigInclude: Excluding Power Mgmt\n",			0, 0, 0, 0, 0, 0);		break;	/* INCLUDED Devices */	case PCI_ID_PRI_LAN:		retVal = OK;		PCI_AUTO_DEBUG_MSG("sysPciAutoconfigInclude: Including Ethernet\n",			0, 0, 0, 0, 0, 0);		break;	case PCI_ID_BR_DEC21554:		retVal = OK;		PCI_AUTO_DEBUG_MSG("sysPciAutoconfigInclude: Including DEC 21554 bridge\n",			0, 0, 0, 0, 0, 0);		break;	case PCI_ID_BR_DEC21150:		retVal = OK;		PCI_AUTO_DEBUG_MSG("sysPciAutoconfigInclude: Including DEC 21150 bridge\n",			0, 0, 0, 0, 0, 0);		break;    	default:    		retVal = OK;		PCI_AUTO_DEBUG_MSG("sysPciAutoconfigInclude: Including unknown device\n",			0, 0, 0, 0, 0, 0);		break;	}    return retVal;    }/******************************************************************************** sysPciAutoConfigIntAssign - Assign the "interrupt line" value** RETURNS: "interrupt line" value.**/LOCAL UCHAR sysPciAutoConfigIntAsgn    (     PCI_SYSTEM * pSys,	/* input: AutoConfig system information */    PCI_LOC * pFunc,    UCHAR intPin	/* input: interrupt pin number */    )    {    UCHAR irqValue = 0xff;    /* Calculated value                */    if (intPin == 0)        return irqValue;    irqValue = intLine [(pFunc->device)][(intPin - 1)];    PCI_AUTO_DEBUG_MSG("intAssign called for device [%d %d %d] IRQ: %d\n",                pFunc->bus, pFunc->device, pFunc->function,                irqValue, 0, 0 );    return (irqValue);    }#ifdef PCI_ROLL_CALL_LIST_ENTRIES/******************************************************************************* sysPciRollCallRtn - Check "roll call" list against list of PCI devices found** This function checks if the number of devices actually found during* the 1st pass of PCI autoconfiguration (bus enumeration process)* passes the "roll call" test.  That is, for each entry in the roll call* list (consisting of a count and device/vendor ID), a check is made to* insure that at least the specified minimum number of devices has* actually been discovered.  If the roll call passes, the function returns* TRUE.  If the roll call fails and the time duration in seconds represented* by ROLL_CALL_MAX_DURATION has not elapsed, the function will wait 1* second and return FALSE.  If the roll call fails and the time duration in* seconds represented by ROLL_CALL_MAX_DURATION has elapsed, the function* will return TRUE.** RETURNS: TRUE if roll call test passes or timeout, FALSE otherwise.*/LOCAL STATUS sysPciRollcallRtn    (    )    {    STATUS  rollCallPass;       /* Flag indicating pass or fail */    int     rollIndex;    int    bus;    int    dev;    int    func;    int     count;    static  int secDelay = -1;    if (secDelay == -1)	secDelay = ROLL_CALL_MAX_DURATION;    rollCallPass = TRUE;        /* Default = "passed" */    rollIndex = 0;    while (secDelay >= 0)         {        if (rollCall[rollIndex].Vend == 0xffff)            break;              /* End of roll call list, we're done */        count = 0;        while (pciFindDevice(rollCall[rollIndex].Vend, rollCall[rollIndex].Dev,			    count, &bus, &dev, &func) == OK)	    count++;        if (count < rollCall[rollIndex].count)            {	    secDelay--;	    if (secDelay < 0)		{		rollCallPass = TRUE;	    /* Timeout, say we passed */		break;		}	    else		{                rollCallPass = FALSE;       /* Roll call - someone is missing */	        sysMsDelay(1000);           /* Delay a second */	        break;		}            }	rollIndex++;        }    if (rollCallPass == TRUE)	secDelay = -1;    return (rollCallPass);    }#endif/********************************************************************************* sysPciAutoConfig - PCI autoConfig support routine** This routine instantiates the PCI_SYSTEM structure needed to configure* the system. This consists of assigning address ranges to each category* of PCI system resource: Prefetchable and Non-Prefetchable 32-bit Memory, and* 16- and 32-bit I/O. Global values for the Cache Line Size and Maximum* Latency are also specified. Finally, the four supplemental routines for * device inclusion/exclusion, interrupt assignment, and pre- and* post-enumeration bridge initialization are specified. ** RETURNS: N/A*/void sysPciAutoConfig(void)    {    /*     * 32-bit Non-prefetchable Memory Space     * offset by 0x10 so that it doesn't start at PCI address 0x0     */    sysParams.pciMemIo32 = (PCI_MSTR_MEMIO_BUS + 0x10);    sysParams.pciMemIo32Size = PCI_MSTR_MEMIO_SIZE;    /* 32-bit Prefetchable Memory Space */    sysParams.pciMem32 = PCI_MSTR_MEM_BUS;    sysParams.pciMem32Size = PCI_MSTR_MEM_SIZE;    /* 16-bit ISA I/O Space - start after legacy devices. */    sysParams.pciIo16 = ISA_MSTR_IO_BUS + ISA_LEGACY_SIZE;    sysParams.pciIo16Size = ISA_MSTR_IO_SIZE - ISA_LEGACY_SIZE;    /* 32-bit PCI I/O Space */    sysParams.pciIo32 = PCI_MSTR_IO_BUS;    sysParams.pciIo32Size = PCI_MSTR_IO_SIZE;    /* Configuration space parameters */    sysParams.maxBus = 0;    sysParams.cacheSize = ( _CACHE_ALIGN_SIZE / sizeof(UINT32) );    sysParams.maxLatency = PCI_LAT_TIMER;    sysParams.autoIntRouting = TRUE;    /* Device inclusion and interrupt routing routines */    sysParams.includeRtn = sysPciAutoConfigInclude;    sysParams.intAssignRtn = sysPciAutoConfigIntAsgn;#ifdef PCI_ROLL_CALL_LIST_ENTRIES    /* "Roll call" routine */    sysParams.pciRollcallRtn = sysPciRollcallRtn;#endif    /*     * PCI-to-PCI Bridge Pre-     * and Post-enumeration init     * routines     */    sysParams.bridgePreConfigInit = NULL;    sysParams.bridgePostConfigInit = NULL;    /* Perform AutoConfig */    pciAutoConfig(&sysParams);    }

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线看不卡av| 日韩国产精品久久| 国产黄色91视频| 欧美sm美女调教| 美国毛片一区二区| 国产亚洲一区二区三区在线观看 | 亚洲素人一区二区| 色综合天天天天做夜夜夜夜做| 国产精品网站导航| 成人动漫视频在线| 一区二区三区四区在线免费观看| av激情成人网| 亚洲图片欧美视频| 91精品国产黑色紧身裤美女| 视频一区视频二区在线观看| 7777精品伊人久久久大香线蕉经典版下载| 五月婷婷综合在线| 欧美一级欧美三级在线观看| 精品一区二区在线免费观看| 国产精品电影一区二区| 91在线云播放| 天天操天天色综合| 欧美日韩国产一区| 日韩电影免费在线看| 精品欧美黑人一区二区三区| 成人国产免费视频| 亚洲卡通欧美制服中文| 欧美视频日韩视频在线观看| 国产中文字幕精品| 亚洲视频狠狠干| 99精品一区二区| 免费观看成人鲁鲁鲁鲁鲁视频| 精品成人私密视频| 国产sm精品调教视频网站| 国产精品美女久久久久久久网站| 91影院在线免费观看| 亚洲午夜久久久久久久久电影网| 欧美年轻男男videosbes| 免费观看成人av| 中文字幕亚洲视频| 欧美一区二区三区免费大片| 国内外成人在线| 亚洲精品伦理在线| 2023国产精华国产精品| 91黄色免费看| 精品亚洲国产成人av制服丝袜 | 国产欧美精品国产国产专区| 99精品桃花视频在线观看| 久久国产日韩欧美精品| 亚洲色欲色欲www| 777色狠狠一区二区三区| 成人动漫视频在线| 蜜臀99久久精品久久久久久软件| 一区二区久久久久| 日本一区二区在线不卡| 91精品国产综合久久蜜臀| 色呦呦日韩精品| 国产在线视频一区二区三区| 亚洲一区二区三区自拍| 日韩伦理免费电影| 久久色在线观看| 成av人片一区二区| 床上的激情91.| 久久福利视频一区二区| 综合久久久久久| 久久亚洲春色中文字幕久久久| 欧美午夜影院一区| 色妞www精品视频| 粉嫩aⅴ一区二区三区四区五区| 琪琪久久久久日韩精品| 日韩国产欧美在线观看| 亚洲免费伊人电影| 欧美国产精品一区二区| 精品国产精品网麻豆系列| 欧美日韩小视频| 成人午夜激情影院| 懂色av一区二区夜夜嗨| 黄页视频在线91| 国产精一品亚洲二区在线视频| 日韩精品一二三区| 亚洲成a人v欧美综合天堂下载 | 精品国产91九色蝌蚪| 欧美精品xxxxbbbb| 91麻豆蜜桃一区二区三区| 91网上在线视频| av亚洲产国偷v产偷v自拍| 国产福利一区二区三区视频在线 | 久久99精品久久久久久久久久久久 | 一本色道久久综合亚洲精品按摩| 天堂av在线一区| 久久久久综合网| 精品免费国产一区二区三区四区| 欧美三级三级三级| 成人国产精品免费网站| 国产成人综合自拍| 激情图区综合网| 天天免费综合色| 无吗不卡中文字幕| 爽爽淫人综合网网站| 久久99精品久久只有精品| 日本成人在线网站| 美女视频一区二区三区| 国产一区欧美二区| 国产一区二区电影| 成人午夜电影久久影院| 一本久久综合亚洲鲁鲁五月天 | 丝袜亚洲精品中文字幕一区| 亚洲伊人伊色伊影伊综合网| 亚洲最快最全在线视频| 亚洲va中文字幕| 亚洲大尺度视频在线观看| 石原莉奈在线亚洲三区| 日本一道高清亚洲日美韩| 日韩电影免费在线| 精品亚洲porn| 成人性生交大合| 欧美日韩三级一区| 日韩欧美一区电影| 欧美第一区第二区| 中文字幕av一区二区三区免费看| 亚洲欧洲www| 亚洲成人av福利| 狠狠色狠狠色合久久伊人| 国产91丝袜在线播放九色| 欧美亚洲免费在线一区| 91精品国产免费| 亚洲国产成人午夜在线一区| 日日嗨av一区二区三区四区| 精品一区二区免费视频| 99久久久国产精品| 精品欧美乱码久久久久久 | 美女一区二区视频| 粉嫩嫩av羞羞动漫久久久| 国产成人在线免费| 欧洲亚洲精品在线| 日韩视频一区二区三区在线播放 | 一区二区三区四区在线免费观看| 天堂av在线一区| 成人国产在线观看| 这里只有精品免费| 亚洲精品视频在线| 精品亚洲国产成人av制服丝袜| 99re成人在线| 久久久久久久综合| 婷婷亚洲久悠悠色悠在线播放| 国产一区二区三区久久久 | 国产精品久久久久久久久动漫| 首页国产欧美久久| 一本色道a无线码一区v| 在线亚洲+欧美+日本专区| 精品国产91乱码一区二区三区| 亚洲欧洲日产国码二区| 久久精品国产秦先生| 欧美无砖专区一中文字| 国产精品视频yy9299一区| 青青草一区二区三区| 91社区在线播放| 国产亚洲女人久久久久毛片| 秋霞影院一区二区| 欧美日韩在线精品一区二区三区激情| 久久精品亚洲精品国产欧美 | 欧美日韩五月天| 亚洲手机成人高清视频| 中文字幕亚洲一区二区av在线| 精品一区二区在线免费观看| 91高清在线观看| 亚洲午夜视频在线观看| 在线区一区二视频| 亚洲欧美色图小说| 色婷婷av一区二区| 亚洲免费在线观看| 欧美日韩中文另类| 日韩激情av在线| 亚洲欧美视频一区| 精品美女一区二区三区| 2023国产精品视频| 精品影视av免费| 日韩你懂的在线播放| 美女爽到高潮91| 26uuuu精品一区二区| 亚洲成av人片在www色猫咪| 欧美色网一区二区| 亚洲欧美日韩国产综合在线| 极品少妇xxxx精品少妇| 国产拍欧美日韩视频二区| 精品亚洲国内自在自线福利| 蜜桃一区二区三区在线| 欧美女孩性生活视频| 免费在线观看不卡| 2024国产精品视频| 成人精品国产福利| 欧美精品一级二级| 亚洲精品v日韩精品| 99久久精品久久久久久清纯| 一区二区三区在线观看网站| 欧美高清视频不卡网| 久久av资源网| 亚洲日本免费电影| 久久久久9999亚洲精品| 国产精品色哟哟|