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

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

?? interrup.c

?? Wince4.2 BSP for SH4 engineering development board
?? C
?? 第 1 頁 / 共 2 頁
字號:

//
//      Copyright (c) Renesas Technology Corp. 1999-2003 All Rights Reserved.
//
//      LAN91C111 network hardware driver
//
//----------------------------------------------------------------------------
//
//  FILE      : INTERRUP.C
//  CREATED   : 1998. 4.18 (for NE2000 driver)
//  MODIFIED  : 2003.08.06
//  AUTHOR    : Renesas Technology Corp.
//  HARDWARE  : RENESAS HS7751RSTC01H (S1-E, ITS-DS5)
//  TARGET OS : Microsoft(R) Windows(R) CE .NET 4.2
//  FUNCTION  : Functions related to interrupt services
//  HISTORY   : 
//              1999. 4.26
//              - Released as SMC91C94 LAN driver for PFM-DS6x by modifying
//               NE2000 driver in PB2.12 reference drivers.
//              (Detailed history for PFM-DS6x are omitted.)
//              2002. 4.26
//              - Modified to LAN91C111 driver for HS7751RSTC01H.
//              2002. 9. 5
//              - Header style is changed and file informations are added.

/*++
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.
Copyright (c) 1995-2000 Microsoft Corporation.  All rights reserved.

Module Name:

    interrup.c

Abstract:

    This is a part of the driver for the National Semiconductor Novell 2000
    Ethernet controller.  It contains the interrupt-handling routines.
    This driver conforms to the NDIS 3.0 interface.

--*/



#include "precomp.h"
#include "smc91c94.h"

extern void LAN91C111Init(void);
extern unsigned short READ_PHY(unsigned char address);
extern void WRITE_PHY(unsigned char address, unsigned short data);

int Linked =1;
int NoPartner =0;
int CurrentLinkStatus = 0;


extern  PBYTE   EtherNetBase;
#ifdef  DEBUG
extern  void    printregs(void);
#define PrintRegs   printregs()
#else
#define PrintRegs
#endif

//
// On debug builds tell the compiler to keep the symbols for
// internal functions, otw throw them out.
//
#if DBG
#define STATIC
#else
#define STATIC static
#endif

INDICATE_STATUS
CelanIndicatePacket(
    IN PCELAN_ADAPTER Adapter
    );

VOID
CelanDoNextSend(
    PCELAN_ADAPTER Adapter
    );

//
// This is used to pad short packets.
//
static UCHAR BlankBuffer[60] = "                                                            ";

static UCHAR PacketBuffer[2000];

VOID
CelanEnableInterrupt(
    IN NDIS_HANDLE MiniportAdapterContext
    )

/*++

Routine Description:

    This routine is used to turn on the interrupt mask.

Arguments:

    Context - The adapter for the CELAN to start.

Return Value:

    None.

--*/

{
    PCELAN_ADAPTER Adapter = (PCELAN_ADAPTER)(MiniportAdapterContext);

    DEBUGMSG(ZONE_INTR, (TEXT("+CELAN:EnableInterrupt\r\n")));

    CardUnblockInterrupts(Adapter);

    DEBUGMSG(ZONE_INTR, (TEXT("-CELAN:EnableInterrupt\r\n")));

}

VOID
CelanDisableInterrupt(
    IN NDIS_HANDLE MiniportAdapterContext
    )

/*++

Routine Description:

    This routine is used to turn off the interrupt mask.

Arguments:

    Context - The adapter for the CELAN to start.

Return Value:

    None.

--*/

{
    PCELAN_ADAPTER Adapter = (PCELAN_ADAPTER)(MiniportAdapterContext);

    DEBUGMSG(ZONE_INTR, (TEXT("+CELAN:DisableInterrupt\r\n")));

    CardBlockInterrupts(Adapter);

    DEBUGMSG(ZONE_INTR, (TEXT("-CELAN:DisableInterrupt\r\n")));

}

VOID
CelanIsr(
    OUT PBOOLEAN InterruptRecognized,
    OUT PBOOLEAN QueueDpc,
    IN PVOID Context
    )

/*++

Routine Description:

    This is the interrupt handler which is registered with the operating
    system. If several are pending (i.e. transmit complete and receive),
    handle them all.  Block new interrupts until all pending interrupts
    are handled.

Arguments:

    InterruptRecognized - Boolean value which returns TRUE if the
        ISR recognizes the interrupt as coming from this adapter.

    QueueDpc - TRUE if a DPC should be queued.

    Context - pointer to the adapter object

Return Value:

    None.
--*/

{
    PCELAN_ADAPTER Adapter = ((PCELAN_ADAPTER)Context);

    DEBUGMSG(ZONE_INTR, (TEXT("CELAN:Isr entered\r\n")));

    IF_LOG( CelanLog('i'); )

    //
    // Force the INT signal from the chip low. When all
    // interrupts are acknowledged interrupts will be unblocked,
    //
    CardBlockInterrupts(Adapter);

    *InterruptRecognized = TRUE;
    *QueueDpc = TRUE;
    DEBUGMSG(ZONE_INTR, (TEXT("CELAN:Isr done\r\n")));

    return;
}

VOID
CelanHandleInterrupt(
    IN NDIS_HANDLE MiniportAdapterContext
    )
/*++

Routine Description:

    This is the defered processing routine for interrupts.  It
    reads from the Interrupt Status Register any outstanding
    interrupts and handles them.

Arguments:

    MiniportAdapterContext - a handle to the adapter block.

Return Value:

    NONE.

--*/
{
    //
    // The adapter to process
    //
    PCELAN_ADAPTER Adapter = ((PCELAN_ADAPTER)MiniportAdapterContext);

    //
    // The most recent port value read.
    //
    UCHAR InterruptStatus;
    unsigned short PHYINTERRUPTS;
    unsigned short PHYSTATUS;

    WORD Bank;

    Bank = ReadWord(BANK_SELECT);
//  RETAILMSG(1, (TEXT("CELAN:CelanHandleInterrupt\r\n")));

    //
    // Get the interrupt bits and save them.
    //
    CardGetInterruptStatus(Adapter, &InterruptStatus);
//  DEBUGMSG(ZONE_INTR, (TEXT("CELAN:Interrupt status = %02x \r\n"),InterruptStatus));
    PHYINTERRUPTS = READ_PHY(18);

    if(InterruptStatus & MD_INT) {
        // Acknowledge the interrupt
        SelectBank(BANK2);
        WriteWord(INT_REG,ReadWord(INT_REG) & (0xff00 | MD_INT));

        PHYSTATUS = READ_PHY(5);
        if( PHYSTATUS & 0x0100) {
            RETAILMSG(1,(TEXT("100Base-TX Full Duplex capable.\r\n")));
        }
        else if( PHYSTATUS & 0x0080) {
            RETAILMSG(1,(TEXT("100Base-TX Half Duplex capable.\r\n")));
        }
        else if( PHYSTATUS & 0x0040) {
            RETAILMSG(1,(TEXT("10Base-T Full Duplex capable.\r\n")));
        }
        else if( PHYSTATUS & 0x0020) {
            RETAILMSG(1,(TEXT("10Base-T Half Duplex capable.\r\n")));
        }
    }

    if(InterruptStatus & OVRN_INT) {
        Adapter->MissedPackets++;

        DEBUGMSG(ZONE_ERROR, (TEXT("CELAN:RX over RUN\r\n")));

        // Disable Receive
        SelectBank(BANK0);
        WriteWord(RCR,(Adapter->NicReceiveConfig)&~RCR_ENABLE);


        // Acknowledge the interrupt
        SelectBank(BANK2);
        WriteWord(INT_REG,ReadWord(INT_REG) & (0xff00 | OVRN_INT));
    }

    while (InterruptStatus & TX_INT) {
        SelectBank(BANK2);

        // Write the TX Done Packet Number to Packet Num Reg
        WriteWord(PNR_ARR,ReadWord(FIFO_PORTS));

        // PrintRegs;
        // Read the first word of the packet
        WriteWord(POINTER,PTR_READ);
        if (ReadWord(DATA_1)&TS_SUCCESS) {
            DEBUGMSG(ZONE_XMIT, (TEXT("Trasimission succeeded. %04x\r\n"),ReadWord(DATA_1)));
        } else {
            DEBUGMSG(ZONE_ERROR, (TEXT("Trasimision not succeeded. %04x\r\n"),ReadWord(DATA_1)));
            Adapter->FramesXmitBad++;
        }
    

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
麻豆精品视频在线| 日本一区二区免费在线| 欧亚一区二区三区| 色婷婷精品大在线视频| 成人av资源在线观看| 不卡一区中文字幕| av电影一区二区| 91蝌蚪porny成人天涯| 色老头久久综合| 精品视频一区三区九区| 9191国产精品| 欧美成人三级电影在线| 337p粉嫩大胆噜噜噜噜噜91av| 日韩欧美综合在线| 欧美mv日韩mv亚洲| 国产欧美日韩在线看| 亚洲人成在线播放网站岛国| 一区二区成人在线观看| 天堂久久一区二区三区| 精品一区二区国语对白| 不卡一区中文字幕| 欧美视频三区在线播放| 日韩精品一区二区三区在线播放| 精品国产乱码久久久久久蜜臀 | 欧美成人一区二区| 国产欧美一区二区精品性色超碰| 中文字幕一区av| 亚洲成年人网站在线观看| 毛片不卡一区二区| 国产成人欧美日韩在线电影| 欧洲一区二区三区在线| 日韩午夜电影在线观看| 中文字幕中文字幕一区| 亚洲第一av色| 国产激情视频一区二区三区欧美 | 久久国产精品99久久久久久老狼| 国产中文一区二区三区| 色综合网站在线| 欧美成人综合网站| 亚洲情趣在线观看| 国产一区二区三区综合 | 五月婷婷色综合| 国产二区国产一区在线观看| 91老师片黄在线观看| 欧美r级在线观看| 亚洲与欧洲av电影| 国产成人精品免费| 欧美绝品在线观看成人午夜影视| 日本一区二区三区在线观看| 日本视频中文字幕一区二区三区| 成人的网站免费观看| 日韩欧美精品在线视频| 亚洲成人午夜电影| 色婷婷综合久久久| 国产精品天干天干在线综合| 美女久久久精品| 欧美午夜精品一区| 一区二区三区四区蜜桃| 国产成人精品午夜视频免费| 欧美videossexotv100| 亚洲123区在线观看| 91伊人久久大香线蕉| 国产农村妇女毛片精品久久麻豆 | 午夜精品在线看| 色哟哟日韩精品| 国产婷婷色一区二区三区四区| 日本中文字幕一区二区有限公司| 欧美天天综合网| 一区二区欧美国产| 在线观看精品一区| 一区二区在线观看不卡| 色婷婷精品大在线视频| 亚洲制服丝袜在线| 色婷婷精品大视频在线蜜桃视频| 一区二区中文视频| 97精品电影院| 亚洲影视资源网| 91黄视频在线观看| 亚洲超丰满肉感bbw| 欧美色图一区二区三区| 午夜私人影院久久久久| 欧美一卡2卡三卡4卡5免费| 爽爽淫人综合网网站| 911精品产国品一二三产区| 欧美96一区二区免费视频| 欧美一区二区三区日韩| 麻豆91在线播放| 精品国产一区二区三区久久影院| 国模无码大尺度一区二区三区| 国产欧美一区二区三区沐欲| 色综合久久久久综合99| 亚洲国产美女搞黄色| 日韩一区二区精品葵司在线| 韩国av一区二区三区四区 | 91在线观看视频| 亚洲国产精品久久人人爱蜜臀| 欧美嫩在线观看| 蜜桃在线一区二区三区| 中文字幕av不卡| 欧美专区日韩专区| 久久99国内精品| 中文字幕在线不卡一区| 欧美日韩卡一卡二| 国产精品99久久久久久有的能看 | 久久爱www久久做| 国产人妖乱国产精品人妖| 色综合天天综合色综合av | 国内精品不卡在线| 日韩久久一区二区| 欧美一区二区在线免费观看| 国产激情视频一区二区在线观看 | 欧美一区二区三区爱爱| 国产·精品毛片| 亚洲不卡在线观看| 欧美激情在线一区二区| 91精品国产乱| 在线精品视频一区二区| 国产一区999| 欧美aⅴ一区二区三区视频| 国产精品成人免费精品自在线观看 | 日韩欧美的一区| 99精品国产热久久91蜜凸| 男男视频亚洲欧美| 亚洲欧美激情视频在线观看一区二区三区| 69精品人人人人| av一区二区三区四区| 久久av老司机精品网站导航| 亚洲制服欧美中文字幕中文字幕| 国产色爱av资源综合区| 91精品麻豆日日躁夜夜躁| 色综合一个色综合| 国产成人在线视频播放| 久久99久久99| 日本欧美加勒比视频| 亚洲一区二区偷拍精品| 亚洲欧洲成人av每日更新| 国产无一区二区| www久久久久| 日韩女优av电影| 日韩一区二区三免费高清| 在线播放国产精品二区一二区四区| 97超碰欧美中文字幕| 国产99久久久国产精品潘金网站| 亚洲.国产.中文慕字在线| 亚洲欧美经典视频| 最新高清无码专区| 国产精品国产馆在线真实露脸| 国产亚洲一区二区三区在线观看| 欧美精品一区二区三区一线天视频| 欧美电影影音先锋| 91精品久久久久久蜜臀| 欧美一区二区精品久久911| 欧美久久久一区| 91精品国产色综合久久| 日韩精品专区在线影院重磅| 日韩一卡二卡三卡| 日韩天堂在线观看| 精品卡一卡二卡三卡四在线| 精品精品欲导航| 久久久777精品电影网影网 | 国产mv日韩mv欧美| k8久久久一区二区三区| 成人综合在线观看| av不卡免费电影| 欧美日韩成人综合在线一区二区| 欧美日韩免费电影| 精品国产凹凸成av人导航| 欧美精品一区二区三区四区| 国产日韩av一区二区| 亚洲精品久久嫩草网站秘色| 亚洲欧美在线另类| 亚洲bt欧美bt精品777| 久久99精品国产麻豆不卡| 北条麻妃国产九九精品视频| 欧美在线色视频| 精品国精品自拍自在线| 亚洲人成网站色在线观看| 日韩精品欧美精品| 成人午夜又粗又硬又大| 欧美怡红院视频| 久久毛片高清国产| 亚洲乱码日产精品bd| 三级一区在线视频先锋| 成人污污视频在线观看| 精品视频一区三区九区| 国产日韩精品久久久| 亚洲第一电影网| 国产精品亚洲а∨天堂免在线| 日本精品裸体写真集在线观看| 69堂国产成人免费视频| 国产日韩综合av| 日韩激情一区二区| 成人免费黄色大片| 欧美一区二区久久久| 日韩理论片网站| 国产精品1024久久| 91麻豆精品国产自产在线观看一区 | 床上的激情91.| 欧美精品在线观看播放| 自拍av一区二区三区|