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

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

?? halether.c

?? windows ce 50 drive program
?? C
?? 第 1 頁 / 共 2 頁
字號(hào):
/******************************************************************************
 *
 * System On Chip(SOC)
 *
 * Copyright (c) 2002 Software Center, Samsung Electronics, Inc.
 * All rights reserved.
 *
 * This software is the confidential and proprietary information of Samsung 
 * Electronics, Inc("Confidential Information"). You Shall not disclose such 
 * Confidential Information and shall use it only in accordance with the terms 
 * of the license agreement you entered into Samsung.
 *
 *-----------------------------------------------------------------------------
 *
 *	S3C2440 BSP
 *
 * halether.c :
 *
 *	Platform specific code for debug ethernet services (debug messages,          
 *	kernel debugger, text shell (CESH)).  These functions are all called         	
 *	from ethdbg.lib.  They are non-preemptible, and cannot make any system calls.
 *
 *
 * @author	zartoven@samsung.com (SOC, SWC, SAMSUNG Electronics)
 *
 * @date	2002/04/04
 * 
 * Log:
 *	2002/04/04  Start(From ODO's BSP)
 *      
 ******************************************************************************
 */


#include <windows.h>
#include <nkintr.h>
#include <ethdbg.h>
#include <halether.h>
#include <kitl.h>
#include "s2440.h"
#include "drv_glob.h"
#include "oalintr.h"

#define pDriverGlobals			((PDRIVER_GLOBALS) DRIVER_GLOBALS_PHYSICAL_MEMORY_START)

BOOL   CS8900DBG_Init(BYTE *iobase, DWORD membase, USHORT MacAddr[3]);
BOOL   CS8900DBG_IsReceivedPacket(void);
UINT16 CS8900DBG_GetFrame(BYTE *pbData, UINT16 *pwLength);
UINT16 CS8900DBG_SendFrame( BYTE *pbData, DWORD dwLength );
BOOL   CS8900DBG_ReInit(DWORD iobase, DWORD membase);
BOOL   CS8900DBG_MulticastList(PUCHAR pucMulticastAddresses, DWORD dwNumAddresses);
void   CS8900DBG_CurrentPacketFilter(DWORD dwFilter);
void   CS8900DBG_EnableInts(void);
void   CS8900DBG_DisableInts(void);
DWORD  CS8900DBG_GetPendingInts(void);

PVOID PCMCIA_Init(void);


//
// Function pointers to the support library functions of the currently installed debug ethernet controller.
//
PFN_EDBG_INIT             pfnEDbgInit;
PFN_EDBG_ENABLE_INTS      pfnEDbgEnableInts;
PFN_EDBG_DISABLE_INTS     pfnEDbgDisableInts;
PFN_EDBG_GET_PENDING_INTS pfnEDbgGetPendingInts;
PFN_EDBG_GET_FRAME        pfnEDbgGetFrame;
PFN_EDBG_SEND_FRAME       pfnEDbgSendFrame;
PFN_EDBG_READ_EEPROM      pfnEDbgReadEEPROM;
PFN_EDBG_WRITE_EEPROM     pfnEDbgWriteEEPROM;
PFN_EDBG_SET_OPTIONS      pfnEDbgSetOptions;

#ifdef IMGSHAREETH
PFN_EDBG_CURRENT_PACKET_FILTER  pfnCurrentPacketFilter;
PFN_EDBG_MULTICAST_LIST			pfnMulticastList;

BOOL OEMEthCurrentPacketFilter(PDWORD pdwRequestedFilter);

// Multicast list - Vmini assumes a maximum of 8 entries.
//
#define MAX_MULTICAST_LIST      8
BOOL	ucMultiAddr[MAX_MULTICAST_LIST][6];

BOOL	bNewFilter = FALSE;		//	User mode --> Kernel mode to set new filter.
DWORD	dwFilter;				//	The filter..
BOOL	bNewMulticast = FALSE;	//	User mode --> Kernel mode for new list
DWORD	dwNoOfEntry;

/* ProcessVMiniSend()
 *
 *		This routine drains the pending VMINI TX.
 * 
 */
void ProcessVMiniSend(void)
{
	PBYTE   pVMiniData;
    DWORD   dwVMiniDataLength;

	////////////////////////////////////////////////////////////////////////////
	//	Handle the filter if we need to..
	//
	if (bNewFilter && pfnCurrentPacketFilter)
	{
		bNewFilter = FALSE;		
		pfnCurrentPacketFilter(dwFilter);
	}		

	//
    //  Handle new multicast list..
    //
    if (bNewMulticast && pfnMulticastList)
    {
        bNewMulticast = FALSE;
        pfnMulticastList((PUCHAR)ucMultiAddr, dwNoOfEntry);
    }

    ////////////////////////////////////////////////////////////////////////////
    //  Consume all the client packets.
    //
    while (VBridgeKGetOneTxBuffer(&pVMiniData, &dwVMiniDataLength) == TRUE)
    {
        pfnEDbgSendFrame (pVMiniData, dwVMiniDataLength);
        VBridgeKGetOneTxBufferComplete(pVMiniData);
    } 

}	//	ProcessVMiniSend()

#endif //IMGSHAREETH



/* OEMEthInit
 *
 *  Initialization routine
 *
 *  Return Value:
 *    Return TRUE if init is successful, FALSE if error.
 */
BOOL
OEMEthInit(EDBG_ADAPTER *pAdapter) 
{
	PBYTE pBaseIOAddress;

	// Driver globals from the bootloader.
	//
	if (pDriverGlobals->eth.EbootMagicNum == EBOOT_MAGIC_NUM)
	{
		memcpy(pAdapter, &pDriverGlobals->eth.TargetAddr, sizeof(EDBG_ADAPTER));

		switch(pDriverGlobals->misc.EbootDevice)
		{
		case(DOWNLOAD_DEVICE_PCMCIA):	// NE2000 CF card.
			pBaseIOAddress  = (PBYTE)PCMCIA_Init();
			if (pBaseIOAddress)
			{
				// Initialize the built-in Ethenet controller.
				//
				if (!NE2000Init((PBYTE)pBaseIOAddress, 1, pAdapter->Addr.wMAC))
				{
					EdbgOutputDebugString("ERROR: OEMEthInit: Failed to initialize Ethernet controller.\r\n");
					return(FALSE);
				}
			}
			pfnEDbgInit           	= NE2000Init;
			pfnEDbgEnableInts     	= NE2000EnableInts;
			pfnEDbgDisableInts    	= NE2000DisableInts;
			pfnEDbgGetPendingInts 	= NE2000GetPendingInts;
			pfnEDbgGetFrame       	= NE2000GetFrame;
			pfnEDbgSendFrame      	= NE2000SendFrame;
			pfnEDbgReadEEPROM     	= NE2000ReadEEPROM;
			pfnEDbgWriteEEPROM    	= NE2000WriteEEPROM;
			pfnEDbgSetOptions     	= NE2000SetOptions;
		#ifdef IMGSHAREETH
			pfnCurrentPacketFilter	= Ne2000CurrentPacketFilter;
			pfnMulticastList		= NE2000MulticastList;
		#endif	// IMGSHAREETH.
			break;
		case(DOWNLOAD_DEVICE_CS8900):	// CS8900A.
			// Initialize the CS8900.
			//
			if (!CS8900DBG_Init((PBYTE)CS8900DBG_IOBASE, CS8900DBG_MEMBASE, pAdapter->Addr.wMAC))
			{
				EdbgOutputDebugString("ERROR: OEMEthInit: CS8900 initialization failed.\r\n");
				return(FALSE);
			}

			pfnEDbgInit				= CS8900DBG_Init;
			pfnEDbgEnableInts     	= CS8900DBG_EnableInts;
			pfnEDbgDisableInts    	= CS8900DBG_DisableInts;
			pfnEDbgGetFrame			= CS8900DBG_GetFrame;
			pfnEDbgSendFrame		= CS8900DBG_SendFrame;
			pfnEDbgGetPendingInts 	= CS8900DBG_GetPendingInts;
		#ifdef IMGSHAREETH
			pfnCurrentPacketFilter	= CS8900DBG_CurrentPacketFilter;
			pfnMulticastList		= CS8900DBG_MulticastList;
		#endif	// IMGSHAREETH.
			break;
		default:
			EdbgOutputDebugString("ERROR: OEMInit: Unknown download NIC (0x%x).\r\n", pDriverGlobals->misc.EbootDevice);
			return(FALSE);
		}
	}
	else
	{
		// TODO - retrieve CS8900 MAC address from flash...
		// TODO - intialize the CS8900 from scratch...
	}

	EdbgOutputDebugString("::: OEMEthInit() IP Address : %s\r\n", inet_ntoa(pAdapter->Addr.dwIP));
	EdbgOutputDebugString("::: OEMEthInit() Netmask    : %s\r\n", inet_ntoa(pDriverGlobals->eth.SubnetMask));

	// Setup SYSINTR used for KITL NIC.
	//
	if (pDriverGlobals->misc.EbootDevice == DOWNLOAD_DEVICE_PCMCIA)
		pAdapter->SysIntrVal    = SYSINTR_PCMCIA_LEVEL;
	else
		pAdapter->SysIntrVal    = SYSINTR_ETHER;

	pAdapter->DHCPLeaseTime = DEFAULT_DHCP_LEASE;
    pAdapter->EdbgFlags     = pDriverGlobals->eth.EdbgFlags;
		
#ifdef IMGSHAREETH
    VBridgeInit();
    VBridgeKSetLocalMacAddress((char *)pAdapter->Addr.wMAC);
#endif	// IMGSHAREETH.

	return(TRUE);
}


/* OEMEthEnableInts
 *
 *  Turn on HW interrupts.  
 */
void
OEMEthEnableInts()
{
	if (pfnEDbgEnableInts)
	{
		pfnEDbgEnableInts();
	}
}


/* OEMEthDisableInts
 *
 *  Disable HW interrupts.
 */
void
OEMEthDisableInts()
{
	if (pfnEDbgDisableInts)
	{
		pfnEDbgDisableInts();
	}
}

/* OEMEthISR
 *
 *    ISR routine, called by EDBG IST when Ethernet controller interrupts. Also
 *    called in polling mode, to check for received data.
 *
 * Return Value:
 *    Return bitmask indicating which interrupts are pending.  Currently, the ones
 *    that EDBG cares about are the following (others should be handled internally):
 *       INTR_TYPE_RX   -- Receive interrupt. IST will call into GetFrame to read data.
 */
DWORD
OEMEthISR()
{
#ifdef IMGSHAREETH
    ProcessVMiniSend();
#endif	// IMGSHAREETH.

    return (pfnEDbgGetPendingInts());
}

/* OEMEthGetFrame
 *
 *   Check to see if a frame has been received, and if so copy to buffer. An optimization
 *   which may be performed in the Ethernet driver is to filter out all received broadcast
 *   packets except for ARPs.  This is done in the SMC9000 driver.
 *
 * Return Value:
 *    Return TRUE if frame has been received, FALSE if not.
 */
BOOL
OEMEthGetFrame(
    BYTE *pData,       // OUT - Receives frame data
    UINT16 *pwLength)  // IN  - Length of Rx buffer
                       // OUT - Number of bytes received
{
#ifdef IMGSHAREETH
	BOOL	bStatus;
	BOOL	bTaken;		
	UINT16	wOriginalLength = *pwLength;
	
	ProcessVMiniSend();

	while (1)
	{		
		*pwLength = wOriginalLength;

		bStatus	 = pfnEDbgGetFrame(pData, pwLength);
			
		if (bStatus)
		{
			////////////////////////////////////////////////////////////////////
			VBridgeKIndicateOneRxBuffer(pData, *pwLength, FALSE, &bTaken);
			if (!bTaken)				
				return bStatus;
		}
		else
			break;
	}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久精品国产秦先生| 国产精品美女www爽爽爽| 亚洲高清视频在线| 欧美在线免费观看视频| 亚洲sss视频在线视频| 欧美日韩精品一区二区三区蜜桃| 亚洲一区成人在线| 69av一区二区三区| 蜜臀av在线播放一区二区三区| 日韩三级视频在线看| 国产福利视频一区二区三区| 国产精品久久久久影院老司| 日本高清不卡在线观看| 午夜视频在线观看一区| 欧美不卡一区二区三区| aaa国产一区| 日韩不卡免费视频| 国产亚洲精品中文字幕| 色偷偷88欧美精品久久久 | 国产日韩影视精品| av一区二区三区黑人| 一区二区在线观看视频| 日韩一区二区在线观看视频播放| 国产美女精品人人做人人爽| 亚洲精品久久久久久国产精华液| 91精品一区二区三区久久久久久| 国产剧情一区二区三区| 一区二区理论电影在线观看| 日韩视频在线一区二区| 99re热视频精品| 秋霞影院一区二区| 18成人在线视频| 56国语精品自产拍在线观看| 风间由美性色一区二区三区| 午夜精品视频在线观看| 中文字幕不卡一区| 欧美日韩一区二区三区四区| 国产成人免费视| 三级精品在线观看| 亚洲欧洲精品一区二区三区不卡| 欧美一区二区三区日韩视频| 99re6这里只有精品视频在线观看 99re8在线精品视频免费播放 | 欧美一级视频精品观看| 国产.欧美.日韩| 亚洲人成影院在线观看| 欧美在线free| 成人黄色电影在线| 蜜桃久久精品一区二区| 一区二区不卡在线视频 午夜欧美不卡在 | 欧美一区二区三区在线电影| av成人动漫在线观看| 国产在线精品一区二区三区不卡| 午夜精品一区二区三区电影天堂 | 青青草国产精品97视觉盛宴| 亚洲欧美激情视频在线观看一区二区三区 | 国模大尺度一区二区三区| 一区二区理论电影在线观看| 国产精品视频一二三区 | 欧美视频中文一区二区三区在线观看| 国产成人精品www牛牛影视| 蜜臀精品一区二区三区在线观看| 亚洲综合一区二区三区| 最近日韩中文字幕| 中文一区一区三区高中清不卡| 日韩一区二区三区精品视频| 欧美日韩色综合| 在线一区二区视频| 色综合天天综合色综合av | 激情综合色播五月| 视频一区二区中文字幕| 一区二区三区色| 亚洲欧美另类久久久精品| 国产精品伦一区二区三级视频| 亚洲国产精品国自产拍av| 欧美国产成人精品| 国产日韩精品一区| 欧美激情在线一区二区| 日本一区免费视频| 国产精品视频一二三区| 国产精品福利在线播放| 国产精品女主播av| 最新高清无码专区| 亚洲欧美日韩中文播放| 中文字幕一区二区三区色视频 | 国产精品国产三级国产aⅴ原创| 精品91自产拍在线观看一区| www激情久久| 中文字幕欧美国产| 亚洲人精品午夜| 亚洲成a人v欧美综合天堂下载| 亚洲国产成人porn| 日韩高清在线观看| 久久激情综合网| 国产sm精品调教视频网站| 99久久精品免费看| 在线观看av一区二区| 91精品国产综合久久久久久漫画| 日韩一区二区免费在线观看| 久久久蜜桃精品| 亚洲狠狠丁香婷婷综合久久久| 天天爽夜夜爽夜夜爽精品视频| 另类人妖一区二区av| 成人一区二区三区视频在线观看| 色综合天天综合狠狠| 欧美久久久久久蜜桃| 久久综合九色综合97婷婷女人| 国产精品欧美一区喷水| 亚洲午夜久久久久中文字幕久| 久久99精品久久久久久国产越南| 国产99精品视频| 欧美日韩国产三级| 国产欧美一区二区精品性色超碰| 亚洲精品福利视频网站| 蜜桃久久久久久久| 91一区一区三区| 欧美一级高清片| 国产精品第13页| 美女视频一区二区| 成人国产视频在线观看| 91麻豆精品国产91久久久久久| 久久精品亚洲精品国产欧美kt∨| 亚洲免费观看高清| 美美哒免费高清在线观看视频一区二区 | 午夜久久久久久久久久一区二区| 精品一区二区在线播放| 色婷婷一区二区三区四区| 日韩女优电影在线观看| 亚洲精品中文字幕在线观看| 久久国产精品第一页| 91久久精品一区二区二区| 日韩欧美不卡在线观看视频| 亚洲精品videosex极品| 国产最新精品精品你懂的| 91豆麻精品91久久久久久| 久久综合狠狠综合久久激情 | 日本一区二区免费在线观看视频| 亚洲福利一二三区| jizzjizzjizz欧美| 精品国偷自产国产一区| 一区二区三区四区不卡在线 | 国产一区二区精品在线观看| 欧美这里有精品| 国产精品福利电影一区二区三区四区| 精品亚洲成a人| 欧美日韩国产高清一区| 亚洲欧洲制服丝袜| 成人精品高清在线| 久久精品男人天堂av| 麻豆精品视频在线| 欧美日韩五月天| 亚洲最大的成人av| 91视频.com| 国产精品人妖ts系列视频| 国产一区二区在线视频| 日韩视频一区二区三区| 三级一区在线视频先锋| 欧美日韩精品专区| 亚洲成人在线网站| 精品视频在线免费观看| 亚洲高清免费在线| 欧美主播一区二区三区美女| 亚洲精品视频一区| 一本久久综合亚洲鲁鲁五月天| 中文在线一区二区| 99re免费视频精品全部| 亚洲欧洲综合另类在线| 色综合久久精品| 一级中文字幕一区二区| 欧美性色黄大片手机版| 亚洲狠狠丁香婷婷综合久久久| 色狠狠桃花综合| 亚洲一区二区三区四区在线| 在线亚洲欧美专区二区| 亚洲高清在线精品| 欧美一区二区三区日韩| 美女爽到高潮91| 久久精品一区二区三区四区| 岛国精品在线播放| 亚洲欧美一区二区三区孕妇| 91成人国产精品| 天涯成人国产亚洲精品一区av| 欧美一级二级三级蜜桃| 国内外精品视频| 欧美极品aⅴ影院| 日本高清成人免费播放| 日本不卡免费在线视频| 欧美精品一区二区久久久| 国产成人精品亚洲777人妖| 国产精品久久久久久久浪潮网站 | 欧美日韩精品欧美日韩精品一| 亚洲综合小说图片| 91麻豆精品国产无毒不卡在线观看| 免费视频一区二区| 久久毛片高清国产| 色综合天天视频在线观看| 亚洲va欧美va天堂v国产综合| 日韩欧美国产电影| 风间由美性色一区二区三区| 亚洲韩国一区二区三区| 26uuu精品一区二区三区四区在线|