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

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

?? tmpnp.c

?? PNX系列設備驅動 PNX系列設備驅動
?? C
?? 第 1 頁 / 共 2 頁
字號:
/*---------------------------------------------------------------------------- 
COPYRIGHT (c) 1998 by Philips Semiconductors

THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY ONLY BE USED AND COPIED IN 
ACCORDANCE WITH THE TERMS AND CONDITIONS OF SUCH A LICENSE AND WITH THE 
INCLUSION OF THE THIS COPY RIGHT NOTICE. THIS SOFTWARE OR ANY OTHER COPIES 
OF THIS SOFTWARE MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY OTHER
PERSON. THE OWNERSHIP AND TITLE OF THIS SOFTWARE IS NOT TRANSFERRED. 

THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT ANY PRIOR NOTICE
AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY Philips Semiconductor. 

PHILIPS ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF THIS SOFTWARE
ON PLATFORMS OTHER THAN THE ONE ON WHICH THIS SOFTWARE IS FURNISHED.
----------------------------------------------------------------------------*/
/*
	HISTORY
	980603	Tilakraj Roychoudhury	Created

    Following SCCS macros added by Nadeem:
    
    Module name              : tmpnp.c    1.4 
 
    Last update              : 18:27:07 - 99/02/21
*/

/*----------------------------------------------------------------------------
          SYSTEM INCLUDE FILES
----------------------------------------------------------------------------*/
#define WANTVXDWRAPS
#include <basedef.h>
#include <vmm.h>
#include <vxdwraps.h>
#include <configmg.h>
#include <mmdevldr.h>
#include <vwin32.h>

/*----------------------------------------------------------------------------
          DRIVER SPECIFIC INCLUDE FILES
----------------------------------------------------------------------------*/
#include "vxstd.h"
#include "vxwin.h"

#include "tmmanlib.h"
#include "platform.h"

#define isdigit(x)      ((((x) >= 0) && ((x) <= 9)) ? TRUE : FALSE )
#define hexchar(x)      (CHAR)((isdigit(x) ? ((x) + '0') : (((x) - 0xa) + 'A')))
#define iscontrol(c)    ( (((c)<= 0) && ((c)<=32)) ? 1 : 0 )
#define toupper(c)      ( (((c) >='a') && ((c) <= 'z')) ? ((c) - 'a' + 'A') : (c) )


#pragma VxD_LOCKED_CODE_SEG
#pragma	VxD_LOCKED_DATA_SEG

DEBUG_CONFIG_NAMES

CONFIGRET  CM_HANDLER vxdPnPConfigHandler(
	CONFIGFUNC cfFuncName,
	SUBCONFIGFUNC scfSubFuncName,
	DEVNODE	dnToDevNode,
	DWORD dwRefData,
	ULONG ulFlags);

ULONG	pnpDevNodeToDeviceIndex ( DEVNODE DevNode );

typedef BOOL ( *PCI_DEVICE_COMPARE ) ( PULONG PCIRegisters, PVOID Context );

BOOL	pnpPCIDeviceID2Number (
	ULONG	DeviceVendorID,
	PCI_DEVICE_COMPARE	ComparisonFunction, 
	PVOID				ComparisonContext,
	PULONG	Bus, 
	PULONG	Device, 
	PULONG	Function  );

// Added by NM
//UInt32 GetBoardType(PCHAR DeviceID);

BOOL	DECBridgeComparisonFunction ( PULONG PCIRegisters, PVOID Context );
BOOL	TM1000ComparisonFunction ( PULONG PCIRegisters,  PVOID Context );
BOOL	TM2000ComparisonFunction ( PULONG PCIRegisters,  PVOID Context );

/*----------------------------------------------------------------------------
          GENERIC PNP FUNCTIONS
----------------------------------------------------------------------------*/
CONFIGRET CM_SYSCTRL
vxdConfigRegisterHandler ( DWORD DevNode, LOAD_TYPE LoadType, DWORD Constant )
{
	//LOAD_TYPE LoadType = (LOAD_TYPE)pvContext;

	switch (LoadType) 
	{
		case DLVXD_LOAD_ENUMERATOR:
			return(CR_DEFAULT);

		case DLVXD_LOAD_DRIVER:
			return 	CM_Register_Device_Driver(
				DevNode, vxdPnPConfigHandler, 0, CM_REGISTER_DEVICE_DRIVER_REMOVABLE);

		case DLVXD_LOAD_DEVLOADER:
			return(CR_DEFAULT);

		default:
			return(CR_DEFAULT);
	}

}


CONFIGRET	pnpOnConfigStop ( DEVNODE DevNode )
{
	return CR_SUCCESS;
}

CONFIGRET	pnpOnConfigTest ( DEVNODE DevNode )
{
	return CR_SUCCESS;
}

CONFIGRET	pnpOnConfigRemove ( DEVNODE DevNode )
{
	ULONG DeviceIndex;

	if ( 0xffffffff == ( DeviceIndex = pnpDevNodeToDeviceIndex ( DevNode ) ) )
	{
		DPF(0,("TM:pnpConfigStart:Devnode[0x%x]@[0x%x]:Already Removed:FAIL\n",
			DevNode, DeviceIndex ));
		return CR_SUCCESS;
	}

	tmmanExit ( DeviceIndex );

	TMManGlobal->DeviceList[DeviceIndex] = NULL;

	return CR_SUCCESS;
}


CONFIGRET	pnpOnConfigStart ( 
	DEVNODE DevNode )
{
	halParameters	Config;
	PVOID			AllocatedDevice;
	ULONG			LatencyTimer, CommandStatus;
	CHAR			DeviceID[MAX_DEVICE_ID_LEN];
	CONFIGRET		CMResult;
	CMCONFIG		CMConfig;
	ULONG			Idx, DevnodeIndex;
	ULONG			PCIVendorDeviceID;

	if ( 0xffffffff != ( DevnodeIndex = pnpDevNodeToDeviceIndex ( DevNode ) ) )
	{
		DPF(0,("TM:pnpConfigStart:Devnode[0x%x]@[0x%x]:Already Exits:FAIL\n",
			DevNode, DevnodeIndex ));
		return CR_SUCCESS;
	}

	if ( ( CMResult = CM_Get_Device_ID  ( 
		DevNode, DeviceID, MAX_DEVICE_ID_LEN, 0  ))
		!= CR_SUCCESS )
	{
		DPF(0,("TM:pnpConfigStart:CONFIGMG_Get_Device_ID:FAIL\n"));
		return CR_FAILURE;
	}


	DPF(1,("TM:pnpConfigStart:CONFIGMG_Get_Device_ID[%s]\n", DeviceID ));

	if ( ( CMResult = CM_Get_Alloc_Log_Conf ( 
		&CMConfig, DevNode, CM_GET_ALLOC_LOG_CONF_ALLOC ))
		!= CR_SUCCESS )
	{
		DPF(0,("TM:pnpConfigStart:CM_Get_Alloc_Log_Config:FAIL\n"));
		return CR_FAILURE;
	}

	// DEC Bridge
	if ( pnpPCIDeviceID2Number ( 
		( ( constTMMANDECBridgeDeviceID << 16 ) | constTMMANDECBridgeVendorID ),
		DECBridgeComparisonFunction,
		&CMConfig, 
		&Config.BusNumber, 
		&Config.DeviceNumber, 
		&Config.FunctionNumber  ) == FALSE )
	{
		// TM1000
		if ( pnpPCIDeviceID2Number ( 
			( ( constTMMANTM1000DeviceID << 16 ) | constTMMANTM1000VendorID ),
			TM1000ComparisonFunction,
			&CMConfig, 
			&Config.BusNumber, 
			&Config.DeviceNumber, 
			&Config.FunctionNumber  ) == FALSE )
		{
			// TM2000
			if ( pnpPCIDeviceID2Number ( 
				( ( constTMMANTM2000DeviceID << 16 ) | constTMMANTM2000VendorID ),
				TM2000ComparisonFunction,
				&CMConfig,
				&Config.BusNumber, 
				&Config.DeviceNumber, 
				&Config.FunctionNumber  ) == FALSE )
			{
				// TM1300
				if ( pnpPCIDeviceID2Number ( 
					( ( constTMMANTM1300DeviceID << 16 ) | constTMMANTM1300VendorID ),
					TM1000ComparisonFunction,
					&CMConfig,
					&Config.BusNumber, 
					&Config.DeviceNumber, 
					&Config.FunctionNumber  ) == FALSE )
				{
					return CR_FAILURE;
				}
			}
		}

	}


    // read the hardware revision ID
    if ( pciReadConfigDW ((BYTE)Config.BusNumber,
    	DevFunc2BYTE(Config.DeviceNumber,Config.FunctionNumber), 
    	(WORD)0x0, &PCIVendorDeviceID) == FALSE )
    {
    	DPF(0,("TM:pnpConfigStart:BIOS:PCI Vendor Device ID:FAIL\n"));
    	return CR_FAILURE;
    }


	// validate the resources count and fail if the resoruces are not OK
	// check for the DEC bridge chip of it is not then it is a TMX000
	if ( PCIVendorDeviceID == 
		( ( constTMMANDECBridgeDeviceID << 16 ) | constTMMANDECBridgeVendorID ) )
    {
    	if ( ( CMConfig.wNumMemWindows != 3 ) ||
    		( CMConfig.wNumIRQs != 1 ) )
    	{
    		DPF(0,("TM:pnpConfigStart:iResource Validation:FAIL\n"));
    		return CR_FAILURE;
    	}
    }
	else
	{
    	if ( ( CMConfig.wNumMemWindows != 2 ) ||
    		( CMConfig.wNumIRQs != 1 ) )
    	{
    		DPF(0,("TM:pnpConfigStart:iResource Validation:FAIL\n"));
    		return CR_FAILURE;
    	}
	}

	// get the interrupt vector
	Config.InterruptVector				= CMConfig.bIRQRegisters[0];


	if ( PCIVendorDeviceID == 
		( ( constTMMANDECBridgeDeviceID << 16 ) | constTMMANDECBridgeVendorID ) )
    {

		Config.BridgeDeviceVendorID = PCIVendorDeviceID;
		// Base 0 is not used. Start with Base 1
		Config.SDRAMAddrPhysical.HighPart	= 0;
		Config.SDRAMAddrPhysical.LowPart	= CMConfig.dMemBase[1];
		Config.SDRAMLength					= CMConfig.dMemLength[1];
		Config.MMIOAddrPhysical.HighPart	= 0;
		Config.MMIOAddrPhysical.LowPart		= CMConfig.dMemBase[2];
		Config.MMIOLength					= CMConfig.dMemLength[2];
    }
	else //TM1000 or TM2000
	{
		Config.TMDeviceVendorID				= PCIVendorDeviceID;
		Config.BridgeDeviceVendorID			= 0;
		Config.SDRAMAddrPhysical.HighPart	= 0;
		Config.SDRAMAddrPhysical.LowPart	= CMConfig.dMemBase[0];
		Config.SDRAMLength					= CMConfig.dMemLength[0];
		Config.MMIOAddrPhysical.HighPart	= 0;
		Config.MMIOAddrPhysical.LowPart		= CMConfig.dMemBase[1];
		Config.MMIOLength					= CMConfig.dMemLength[1];
    }

	Config.DevNode						= DevNode;


	if ( (  Config.TMDeviceVendorID == ( ( constTMMANTM1000DeviceID << 16 ) | constTMMANTM1000VendorID ) ) || 
		( Config.TMDeviceVendorID == ( ( constTMMANTM2000DeviceID << 16 ) | constTMMANTM2000VendorID ) ) ||
		( Config.TMDeviceVendorID == ( ( constTMMANTM1300DeviceID << 16 ) | constTMMANTM1300VendorID ) ) )
    {
    	// read the hardware revision ID
    	if ( pciReadConfigDW ((BYTE)Config.BusNumber,
    		DevFunc2BYTE(Config.DeviceNumber,Config.FunctionNumber), 
    		(WORD)0x8, &Config.TMClassRevisionID) == FALSE )
    	{
    		DPF(0,("TM:pnpConfigStart:BIOS:Revision ID Retrieve:FAIL\n"));
    		return CR_FAILURE;
    	}

    	// read the subsystem and subsystem vendor ID.
    	if ( pciReadConfigDW ((BYTE)Config.BusNumber,
    		DevFunc2BYTE(Config.DeviceNumber, Config.FunctionNumber), 
    		(WORD)0x2c, &Config.TMSubsystemID ) == FALSE )
    	{
    		DPF(0,("TM:pnpConfigStart:BIOS:Subsystem ID Retrieve:FAIL\n"));
    		return CR_FAILURE;
    	}

    	if ( pciReadConfigDW ((BYTE)Config.BusNumber,
    		DevFunc2BYTE(Config.DeviceNumber, Config.FunctionNumber), 
    		(WORD)0xc, &LatencyTimer ) == FALSE )
    	{
    		DPF(0,("TM:pnpConfigStart:BIOS:Latency Timer Retrive:FAIL\n"));
    		return CR_FAILURE;
    	}

    	// according to zcw latency 0f 0 is the maximum
    	LatencyTimer |=  ( ( 5 << 11) & ( ( 0 ) << 11 ) );

    	if ( pciWriteConfigDW ((BYTE)Config.BusNumber,
    		DevFunc2BYTE(Config.DeviceNumber, Config.FunctionNumber), 
    		(WORD)0xc, LatencyTimer ) == FALSE )
    	{
    		DPF(0,("TM:pnpConfigStart:BIOS:Latency Timer Write:FAIL\n"));
    		return CR_FAILURE;
    	}


    	// on some machine intel does not set the MA bit - so go ahead
    	// and set it.
    	if ( pciReadConfigDW ((BYTE)Config.BusNumber,
    		DevFunc2BYTE(Config.DeviceNumber, Config.FunctionNumber), 
    		(WORD)0x4, &CommandStatus ) == FALSE )
    	{
    		DPF(0,("TM:pnpConfigStart:BIOS:Command Status Retrieve:FAIL\n"));
    		return CR_FAILURE;
    	}


    	CommandStatus |=  1 << 1;

    	if ( pciWriteConfigDW ((BYTE)Config.BusNumber,
    		DevFunc2BYTE(Config.DeviceNumber, Config.FunctionNumber), 
    		(WORD)0x4, CommandStatus ) == FALSE )
    	{
    		DPF(0,("TM:pnpConfigStart:BIOS:Command Status Write:FAIL\n"));
    		return CR_FAILURE;
    	}
	}       // End TM Board specific code

	/* read the entire PCI space and store it */
	for ( Idx = 0 ; Idx < constTMMANPCIRegisters ; Idx++ )
	{
		if ( pciReadConfigDW (
			(BYTE)Config.BusNumber,
			DevFunc2BYTE(Config.DeviceNumber, Config.FunctionNumber), 
			(WORD)Idx * 4, 
			&Config.PCIRegisters[Idx] ) == FALSE )

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产ts人妖一区二区| 亚洲黄网站在线观看| 欧美肥胖老妇做爰| 欧美综合天天夜夜久久| 91免费版在线| 91麻豆国产香蕉久久精品| 在线观看精品一区| 中文字幕亚洲区| 久久久久国产精品免费免费搜索| 日韩欧美国产一二三区| 日韩亚洲欧美一区| 欧美videossexotv100| 欧美三级中文字幕在线观看| 成人免费在线观看入口| 欧美日韩国产综合草草| 69久久夜色精品国产69蝌蚪网| 欧美日本国产视频| 91精品国产色综合久久久蜜香臀| 欧美一区二区黄色| 久久久亚洲午夜电影| 国产精品毛片久久久久久久| 亚洲欧美日韩在线| 午夜精品久久久久| 久久精品国产亚洲高清剧情介绍 | 国产亚洲欧美在线| 国产精品视频看| 亚洲综合图片区| 免费成人美女在线观看.| 国产一区二区三区四区在线观看| 国产69精品久久99不卡| 色香色香欲天天天影视综合网| 日本高清无吗v一区| 91精品欧美久久久久久动漫| 337p日本欧洲亚洲大胆精品| 国产精品久久久久精k8 | 九九国产精品视频| 成人一区在线观看| 欧美调教femdomvk| 日韩精品中文字幕一区 | 婷婷综合五月天| 麻豆成人久久精品二区三区红 | 色婷婷综合中文久久一本| 国产曰批免费观看久久久| 丝袜美腿一区二区三区| 免费观看成人鲁鲁鲁鲁鲁视频| 久久国产人妖系列| 日韩亚洲国产中文字幕欧美| 欧美激情一区二区三区不卡| 日韩精品电影在线| 欧美日韩mp4| 色综合久久久久网| 欧美一区二视频| 国产精品久久久久桃色tv| 亚洲丰满少妇videoshd| 国产一区二区日韩精品| 91久久精品国产91性色tv| 欧美sm极限捆绑bd| 一区二区三区在线观看欧美| 国产在线日韩欧美| 欧美性极品少妇| 国产欧美一区二区三区在线看蜜臀| 亚洲永久免费av| 国产白丝网站精品污在线入口| 欧美午夜精品电影| 中文字幕第一区综合| 日韩激情av在线| 91视频免费观看| 久久精品一区蜜桃臀影院| 五月天激情综合| 91理论电影在线观看| 精品国产91亚洲一区二区三区婷婷| 亚洲美女淫视频| 高清视频一区二区| 精品久久久久久久久久久久久久久 | 精品国产伦一区二区三区观看体验| 亚洲猫色日本管| 国产suv一区二区三区88区| 日韩精品一区二区三区四区| 亚洲午夜羞羞片| 91麻豆精品秘密| 国产精品美女久久久久久久久久久| 蜜桃免费网站一区二区三区| 欧美日韩小视频| 亚洲精品免费在线| av亚洲精华国产精华精| 国产午夜久久久久| 久久国产尿小便嘘嘘尿| 8v天堂国产在线一区二区| 一区二区三区四区乱视频| av亚洲精华国产精华| 中文子幕无线码一区tr| 国产精品自拍av| www国产精品av| 久久成人18免费观看| 日韩一区二区三区免费观看| 丝袜诱惑制服诱惑色一区在线观看| 色域天天综合网| 亚洲精品v日韩精品| 一本久久综合亚洲鲁鲁五月天| 亚洲日本va在线观看| 成人18精品视频| 国产精品国模大尺度视频| jiyouzz国产精品久久| 国产精品毛片a∨一区二区三区| 国产成人精品免费一区二区| 久久久91精品国产一区二区三区| 久久se精品一区二区| 日韩精品一区二区三区三区免费 | 国产大片一区二区| 久久综合狠狠综合久久综合88| 久久黄色级2电影| 欧美精品一区二区三区在线播放| 激情综合色丁香一区二区| 337p日本欧洲亚洲大胆精品| 国产综合色视频| 欧美国产精品v| 91在线视频观看| 亚洲一区二区成人在线观看| 欧美日韩欧美一区二区| 日韩电影在线一区二区三区| 日韩欧美的一区| 国产成人av电影在线观看| 中文字幕中文字幕一区二区| 91亚洲精品一区二区乱码| 亚洲综合色区另类av| 在线观看91av| 国产一区在线精品| 中日韩av电影| 欧美三级中文字幕在线观看| 蜜桃视频在线观看一区| 久久久久国产精品麻豆ai换脸| 国产成人精品免费视频网站| 一区二区三区在线视频免费| 欧美丝袜第三区| 久久成人综合网| 欧美经典一区二区| 欧美系列在线观看| 久久99精品国产| 中文字幕一区二区三区视频| 欧美日韩在线综合| 国产一区二区三区综合| 国产精品高潮呻吟久久| 欧美日韩免费一区二区三区视频| 麻豆精品视频在线观看视频| 国产欧美精品国产国产专区| 91久久一区二区| 狠狠色丁香婷综合久久| 成人免费在线视频观看| 欧美一区二区精品在线| 99re成人精品视频| 免费观看一级欧美片| 亚洲视频中文字幕| 日韩欧美123| 91视视频在线观看入口直接观看www | 亚洲午夜精品网| 久久久久久久性| 欧美在线综合视频| 国产一区 二区 三区一级| 樱花草国产18久久久久| 精品国产免费人成在线观看| 91在线播放网址| 激情综合一区二区三区| 亚洲国产日日夜夜| 国产亚洲成年网址在线观看| 欧美日韩专区在线| 国产成人免费视频一区| 日韩影院精彩在线| 亚洲精选一二三| 国产亚洲欧美激情| 538prom精品视频线放| av一区二区三区四区| 国产一区二区三区香蕉| 亚洲va欧美va人人爽| 国产精品美女久久久久久久网站| 日韩精品一区二区三区四区视频| 91激情五月电影| 成人国产一区二区三区精品| 美日韩一级片在线观看| 亚洲图片欧美色图| 中文字幕一区二区三区在线不卡| 精品国产sm最大网站免费看| 在线不卡的av| 欧洲av一区二区嗯嗯嗯啊| av一本久道久久综合久久鬼色| 国产一区二区在线观看视频| 美女脱光内衣内裤视频久久网站 | 99久久综合狠狠综合久久| 黄色成人免费在线| 蜜臀a∨国产成人精品| 亚洲国产va精品久久久不卡综合| 亚洲欧美一区二区三区极速播放| 久久精品视频在线看| 日韩免费视频一区| 日韩欧美一级二级| 欧美高清性hdvideosex| 欧美男女性生活在线直播观看| 91高清视频免费看| 91视频精品在这里| 91免费观看国产| 色婷婷综合久色|