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

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

?? kitl.c

?? EP9315開發板的Wince6.0的BSP包文件
?? C
字號:
//**********************************************************************
//                                                                      
// Filename: kitl.c
//                                                                      
// Description: 
//
// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
// PARTICULAR PURPOSE.
//
// Use of this source code is subject to the terms of the Cirrus end-user
// license agreement (EULA) under which you licensed this SOFTWARE PRODUCT.
// If you did not accept the terms of the EULA, you are not authorized to 
// use this source code. For a copy of the EULA, please see the 
// EULA.RTF on your install media.
//
// Copyright(c) Cirrus Logic Corporation 2005, All Rights Reserved                       
//                                                                      
#include <windows.h>
#include <nkintr.h>
#include <kitl.h>
#include <halether.h>
#include <kitlprot.h>
//#include <platform.h>
#include <memorymap.h>
#include <mdppfs.h>
#include <drv_glob.h>
#include "ethdbg.h"
#include <devload.h>
#include <oal_kitl.h>
#include <cs8950sw.h>
#include <hwdefs.h>
#include <ceddk.h>
#include <oal_args.h>
#include <oal_ethdrv.h>
#include <oalintr.h>


#define pDriverGlobals  ((PDRIVER_GLOBALS) DRIVER_GLOBALS_VIRTUAL_MEMORY)

static CHAR  gDeviceId[OAL_KITL_ID_SIZE]="";

//Use the first word of CS8950_VIRTUAL_MEMORY to store if KITL is enabled.
static ULONG *pulCS8950KitlUsed = (ULONG *)CS8950_VIRTUAL_MEMORY;


OAL_KITL_ETH_DRIVER g_kitlEthCS8900A = { 
    (OAL_KITLETH_INIT) CS8950Init, //Type cast to avoid compile warning.
    NULL, 
	NULL, 
	(OAL_KITLETH_SEND_FRAME) CS8950SendFrame, //Type cast to avoid compile warning.
	CS8950GetFrame, 
    CS8950EnableInts, 
	CS8950DisableInts, 
    NULL, 
	NULL,  
	(OAL_KITLETH_CURRENT_PACKET_FILTER) CS8950EthCurrentPacketFilter, 
	(OAL_KITLETH_MULTICAST_LIST) CS8950EthMulticastList 
};

OAL_KITL_ETH_DRIVER g_kitlEthNE2000  = OAL_ETHDRV_NE2000;

OAL_KITL_DEVICE g_kitlDeviceEp93xx[] = {
    { 
        NULL, InterfaceTypeUndefined, 
		ETHERNET_BASE,
//			PHYSICAL_SYSTEM_ASIC_REG_BASE + 0x00010000,
		0, OAL_KITL_TYPE_ETH, 
        NULL
    }, 
	{
        NULL, 0, 0, 0, 0, NULL
    }
};



#ifdef IMGSHAREETH
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;
UCHAR    ucMultiAddr[32][6];      //  The new list..  
                                //  VMINI assumes 32 multicast list entry..
                                //                          
#endif

/* OEMKitlStartup
 *
 *  Initialization routine - called from KitlInit() to perform platform specific
 *  HW init.
 *
 *  Return Value:
 *    Return TRUE if init is successful, FALSE if error.
 */
BOOL OEMKitlStartup (void)
{
    BOOL rc = FALSE;
    OAL_KITL_ARGS  KITLArgs;

    BOOL        bTemp;

    NKDbgPrintfW(L"+OEMKitlStartup MAC \r\n");

	memcpy(gDeviceId,
           (DRIVER_GLOBALS_POINTER)->eth.strEdbgName, 
            EDBG_MAX_DEV_NAMELEN);

    memset(&KITLArgs, 0, sizeof(OAL_KITL_ARGS));

    // By default, enable: KITL, DHCP, and VMINI...
    KITLArgs.flags = (OAL_KITL_FLAGS_ENABLED | OAL_KITL_FLAGS_DHCP | OAL_KITL_FLAGS_VMINI);
    
    KITLArgs.devLoc.IfcType     = InterfaceTypeUndefined;
    KITLArgs.devLoc.BusNumber   = 0;

    switch(pDriverGlobals->eth.EdbgHardwareType)
    {
#ifdef EP93XX_PCCARD
    case EDBG_ADAPTER_NE2000:

		g_kitlDeviceEp93xx->pDriver=&g_kitlEthNE2000;
		g_kitlDeviceEp93xx->name=L"NE2000";
		KITLArgs.devLoc.PhysicalLoc = (PVOID)(PCMCIACARD_IO_PHYSICAL + 0x320);
		KITLArgs.devLoc.LogicalLoc  = (PVOID)KITLArgs.devLoc.PhysicalLoc;

/*
        pulEthernetBase       = (ULONG *)(PCMCIACARD_IO + 0x320);
*/
        EdbgOutputDebugString("INFO: EDBG using NE2000 controller.\r\n");
        break;
#endif
    //
    case EDBG_ADAPTER_CS8950:

		g_kitlDeviceEp93xx->pDriver=&g_kitlEthCS8900A;
		g_kitlDeviceEp93xx->name=L"CS8950";

		KITLArgs.devLoc.PhysicalLoc =  (PVOID)	ETHERNET_BASE;
			//(PVOID)(PHYSICAL_SYSTEM_ASIC_REG_BASE + 0x00010000);
		KITLArgs.devLoc.LogicalLoc  = (DWORD)KITLArgs.devLoc.PhysicalLoc;

		KITLArgs.devLoc.Pin=SYSINTR_ETHER;


        //
        // CS8950 DMA's to SDRAM.  Need to give the library a physical and virtual
        // address to uncached memory.
        //
		// Reserved the first 16 bytes for pulCS8950KitlUsed.
        bTemp = CS8950DMAInit
        (
            CS8950_PHYSICAL_MEMORY+16, 
            CS8950_VIRTUAL_MEMORY+16, 
            CS8950_MEMORY_SIZE-16
        );

		//CS8950 now is used for KITL so Ethernet NDIS can check 
		// the address CS8950_VIRTUAL_MEMORY to abort NDIS.
		//Write the pattern 0x5a5a5a5a to indicate CS8950 KITL is active.
		*pulCS8950KitlUsed = 0x5a5a5a5a;

        if(!bTemp)
        {
            EdbgOutputDebugString("ERROR: Failed to Initialize CS8950 DMA buffer.\r\n");
            return FALSE;
        }

        
        //
        // We need to do this since the board does not have a MAC address.
        // Lets use the same mac address as eboot.
        //
        CS8950WriteEEPROM(0, pDriverGlobals->eth.EdbgAddr.wMAC[0]);
        CS8950WriteEEPROM(1, pDriverGlobals->eth.EdbgAddr.wMAC[1]);
        CS8950WriteEEPROM(2, pDriverGlobals->eth.EdbgAddr.wMAC[2]);
        EdbgOutputDebugString("INFO: EDBG using Internal EP931x controller.\r\n");
        break;
    default:

        EdbgOutputDebugString
        (
            "Unsupported debug Ethernet parameters - adapter: %u\n",
             pDriverGlobals->eth.EdbgHardwareType
        );
        return (FALSE);
     }

    if (gDeviceId[0] == '\0')
    {
        // We don't yet have the Ethernet controller's MAC address (this is obtained
        // in the initialization function.  Store a base name for the device, and
        // signal that it should be extended with the MAC address later.
        //
        strncpy(gDeviceId, "EP93xx", sizeof("EP93xx") -1 );
        KITLArgs.flags |= OAL_KITL_FLAGS_EXTNAME;
    }

    rc = OALKitlInit(gDeviceId, &KITLArgs, g_kitlDeviceEp93xx);

    EdbgOutputDebugString("-OEMKitlStartup(rc = %d)\r\n", rc);
    return(rc);
}





DWORD OALGetTickCount(void)
{
	extern DWORD OEMGetTickCount(void);
return OEMGetTickCount( );
}






UINT16 READ_PORT_USHORT(UINT16 *pAddr)
{
    return(*(volatile unsigned short *)pAddr);
}


void WRITE_PORT_USHORT(UINT16 *pAddr, UINT16 Data)
{
	*(volatile UINT16 *)pAddr = Data;
}


UINT16 READ_PORT_USHORT16(UINT16 *pAddr)
{
    return(*(volatile unsigned short *)pAddr);
}

void WRITE_PORT_USHORT16(UINT16 *pAddr, UINT16 Data)
{
    *(volatile UINT16 *)pAddr = Data;
}


UCHAR
READ_PORT_UCHAR(
    PUCHAR  Port
    )
{
    return *(volatile UCHAR * const)Port;
}

VOID
WRITE_PORT_UCHAR(
    PUCHAR  Port,
    UCHAR   Value
    )
{
    *(volatile UCHAR * const)Port = Value;
}

VOID
WRITE_REGISTER_USHORT(
    PUSHORT Register,
    USHORT  Value
    )
{
    *(volatile USHORT * const)Register = Value;
}


VOID
WRITE_REGISTER_ULONG(
    PULONG  Register,
    ULONG   Value
    )
{
    *(volatile ULONG * const)Register = Value;
}

USHORT
READ_REGISTER_USHORT(
    PUSHORT Register
    )
{
    return (*(volatile USHORT * const)Register);
}


ULONG
READ_REGISTER_ULONG(
    PULONG  Register
    )
{
    return (*(volatile ULONG * const)Register);
}




// 
DWORD GetSystemTimeInMsec(void) 
{          
    DWORD dwValue;

    dwValue = *TIM_DEBUGVALUELOW;
    dwValue >>= 10;                 


    // div by 1024 to get msec from usec (should really use
    // 1000 instead of 1024, but it is close enough
    dwValue|= (*TIM_DEBUGVALUEHIGH & DEBUGVALUEHIGH_MASK)<<22;
    return dwValue;
}

//****************************************************************************
// GetSystemTimeInUSec
//****************************************************************************
// 
ULONGLONG GetSystemTimeInUSec(void) 
{          
    volatile LARGE_INTEGER liValue;
    
    //
    // Must read the low value first.
    //
    liValue.LowPart = (ULONG)*TIM_DEBUGVALUELOW;
    liValue.HighPart = (ULONG)(*TIM_DEBUGVALUEHIGH & DEBUGVALUEHIGH_MASK);

    return liValue.QuadPart;
}





//****************************************************************************
// DelayInMsec
//****************************************************************************
// Delay a certain number of milliseconds.
// 
//
//
void DelayInMsec(DWORD msec)
{
    DWORD passed, startTime;

    startTime=GetSystemTimeInMsec();
    passed=0;
    
    //
    // Get stuck in this loop until 
    //
    while ( passed < msec) 
    {
       passed = GetSystemTimeInMsec()-startTime;
    }
}

//****************************************************************************
// DelayInuSec
//****************************************************************************
// Delay a certain number of microseconds.
// 
//
//
void DelayInuSec(DWORD uS)
{
    DWORD passed, startTime;

    startTime= *TIM_DEBUGVALUELOW;
    passed=0;
    
    //
    // Get stuck in this loop until 
    //
    while ( passed < uS) 
    {
       passed = (*TIM_DEBUGVALUELOW - startTime);
    }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本精品裸体写真集在线观看| 日韩电影一区二区三区| 亚洲综合一二区| 精品亚洲欧美一区| 欧美日韩中文字幕一区| 国产精品网站一区| 日韩av在线免费观看不卡| 成人免费黄色大片| 久久久久99精品一区| 天天综合网天天综合色| 色激情天天射综合网| 国产亚洲欧洲一区高清在线观看| 五月天一区二区| 日本道精品一区二区三区| 日本一区二区三区四区| 精品亚洲porn| 91精品国产欧美一区二区 | 91免费版在线看| 国产午夜精品久久久久久免费视 | 亚洲欧美中日韩| 成人综合在线视频| 久久久蜜桃精品| 激情综合网最新| 欧美成人a∨高清免费观看| 日韩电影免费在线看| 日本韩国精品在线| 亚洲精品视频一区二区| 不卡高清视频专区| 国产欧美日韩在线看| 成人一区二区视频| 国产精品久久久久久久久免费桃花| 国产一区二区在线影院| 精品99久久久久久| 国产一区二区不卡在线| 欧美精品一区二区三区视频| 精品一区二区免费| 国产色综合久久| 不卡欧美aaaaa| 亚洲色大成网站www久久九九| 91免费观看视频| 亚洲国产精品嫩草影院| 在线不卡免费av| 极品少妇xxxx偷拍精品少妇| 久久精品视频在线免费观看| 成人av在线看| 一区二区三区欧美日| 欧美日韩一二区| 蜜桃视频在线观看一区二区| 久久精品一区二区三区不卡| 成人av影视在线观看| 亚洲激情图片qvod| 日韩一区二区在线看| 国产精品夜夜嗨| 日韩伦理免费电影| 91精品国产欧美日韩| 国产成人亚洲综合a∨婷婷 | 欧美大片一区二区| 成人h动漫精品一区二区| 一片黄亚洲嫩模| 欧美不卡在线视频| av中文字幕一区| 亚洲r级在线视频| 欧美一区二区网站| www.av亚洲| 日韩极品在线观看| 日本一区二区三区在线不卡| 欧美性三三影院| 国产一区二区毛片| 亚洲综合色噜噜狠狠| 日韩精品一区二区三区中文不卡 | 成人欧美一区二区三区白人| 欧美精品乱人伦久久久久久| 国产v综合v亚洲欧| 日韩二区三区四区| 一区二区三区丝袜| 久久精品亚洲麻豆av一区二区| 欧美图区在线视频| 成人免费毛片嘿嘿连载视频| 麻豆成人免费电影| 一区二区日韩av| 欧美国产成人精品| 欧美一区二区免费视频| 91精品福利视频| 国产精品自拍网站| 免费观看一级欧美片| 亚洲女爱视频在线| 国产精品三级久久久久三级| 日韩午夜激情电影| 欧美日韩精品系列| 91国产免费看| 91网站在线播放| 不卡欧美aaaaa| 国产成人亚洲综合a∨婷婷图片 | 日韩视频中午一区| 欧美色涩在线第一页| av成人免费在线| 成人国产精品免费观看动漫| 激情五月婷婷综合网| 热久久久久久久| 日韩福利电影在线| 日韩成人av影视| 午夜精品福利一区二区蜜股av| 亚洲激情综合网| 亚洲精品高清视频在线观看| 亚洲天堂久久久久久久| 国产精品九色蝌蚪自拍| 国产精品色哟哟| 欧美国产成人精品| 国产精品久久久久久久久图文区| 精品福利在线导航| 欧美一卡二卡在线| 日韩一区二区三| 日韩亚洲电影在线| 精品国产一区二区三区四区四 | 欧美在线观看视频在线| 91蝌蚪porny成人天涯| 99久久精品国产一区二区三区 | 国内精品嫩模私拍在线| 国产在线一区观看| 国产成人免费在线观看| 日韩视频123| 久久人人97超碰com| 国产欧美日韩在线视频| 亚洲日本在线视频观看| 亚洲精品国产第一综合99久久| 亚洲女女做受ⅹxx高潮| 午夜电影网亚洲视频| 日本sm残虐另类| 国产一区二区三区在线看麻豆| 国产麻豆精品在线观看| 成人黄色软件下载| 色婷婷av久久久久久久| 精品婷婷伊人一区三区三| 日韩一区二区精品葵司在线| 欧美成人精品二区三区99精品| 久久综合色婷婷| 国产精品福利一区二区| 亚洲福利视频一区| 裸体在线国模精品偷拍| 成人综合婷婷国产精品久久蜜臀| av一区二区不卡| 欧美日精品一区视频| 日韩一区二区三| 国产精品视频麻豆| 亚洲图片欧美色图| 国产乱人伦偷精品视频免下载| 成人av综合在线| 欧美福利电影网| 亚洲国产精品成人久久综合一区| 一区二区三区精品| 韩国一区二区在线观看| 91麻豆视频网站| 精品国产伦一区二区三区观看体验 | 精品久久人人做人人爰| 中文字幕在线观看一区| 日av在线不卡| 91丨porny丨蝌蚪视频| 日韩你懂的在线观看| 综合久久综合久久| 激情五月婷婷综合| 欧美日韩精品欧美日韩精品| 欧美激情综合在线| 丝袜国产日韩另类美女| 从欧美一区二区三区| 欧美成人三级电影在线| 亚洲精品国产无套在线观| 国产盗摄视频一区二区三区| 6080日韩午夜伦伦午夜伦| 国产精品情趣视频| 激情久久五月天| 欧美群妇大交群的观看方式| 亚洲欧美一区二区视频| 韩国av一区二区| 欧美一区二区三区的| 亚洲成人av中文| 日本精品免费观看高清观看| 国产精品亲子伦对白| 精品制服美女久久| 欧美精品久久天天躁| 亚洲一区欧美一区| 在线亚洲一区二区| 国产精品欧美久久久久一区二区 | 亚洲国产中文字幕| 91麻豆国产香蕉久久精品| 中文字幕不卡的av| 国产伦精一区二区三区| 日韩欧美激情四射| 热久久一区二区| 欧美刺激脚交jootjob| 秋霞国产午夜精品免费视频| 欧美撒尿777hd撒尿| 亚洲午夜电影在线| 欧美中文字幕一二三区视频| 日韩一区欧美一区| 91啪九色porn原创视频在线观看| 国产精品国产精品国产专区不蜜 | 亚洲男帅同性gay1069| 97精品久久久午夜一区二区三区| 国产精品视频免费| 99久久国产免费看|