⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 macros.h

📁 plx9054的WDM驱动程序
💻 H
字号:
/****************************************************************************
** COPYRIGHT (C) 1994-1997 INTEL CORPORATION                               **
** DEVELOPED FOR MICROSOFT BY INTEL CORP., HILLSBORO, OREGON               **
** HTTP://WWW.INTEL.COM/                                                   **
** THIS FILE IS PART OF THE INTEL ETHEREXPRESS PRO/100B(TM) AND            **
** ETHEREXPRESS PRO/100+(TM) NDIS 5.0 MINIPORT SAMPLE DRIVER               **
****************************************************************************/

/****************************************************************************
Module Name:
     e100_sup.h     (inlinef.h)

This driver runs on the following hardware:
     - 82558 based PCI 10/100Mb ethernet adapters
     (aka Intel EtherExpress(TM) PRO Adapters)

Environment:
     Kernel Mode - Or whatever is the equivalent on WinNT

Revision History
     - JCB 8/14/97 Example Driver Created
    - Dchen 11-01-99    Modified for the new sample driver
*****************************************************************************/

__inline BOOLEAN 
WaitScb(
    IN PFDO_DATA FdoData
    );


//-----------------------------------------------------------------------------
// Procedure:   D100IssueScbCommand
//
// Description: This general routine will issue a command to the D100.
//
// Arguments:
//      FdoData - ptr to FdoData object instance.
//      ScbCommand - The command that is to be issued
//      WaitForSCB - A boolean value indicating whether or not a wait for SCB
//                   must be done before the command is issued to the chip
//
// Returns:
//      TRUE if the command was issued to the chip successfully
//      FALSE if the command was not issued to the chip
//-----------------------------------------------------------------------------
__inline NTSTATUS 
D100IssueScbCommand(
    IN PFDO_DATA FdoData,
    IN UCHAR ScbCommandLow,
    IN BOOLEAN WaitForScb
    )
{
    if(WaitForScb == TRUE)
    {
        if(!WaitScb(FdoData))
        {
            return(STATUS_DEVICE_DATA_ERROR);
        }
    }

    FdoData->CSRAddress->ScbCommandLow = ScbCommandLow;

    return(STATUS_SUCCESS);
}

    
__inline NTSTATUS 
MP_GET_STATUS_FROM_FLAGS(
    IN PFDO_DATA FdoData
    )
{
    NTSTATUS Status = STATUS_UNSUCCESSFUL;

    if(MP_TEST_FLAG(FdoData, fMP_ADAPTER_RESET_IN_PROGRESS))
    {
        Status = STATUS_DEVICE_NOT_READY;      
    }
    else if(MP_TEST_FLAG(FdoData, fMP_ADAPTER_HARDWARE_ERROR))
    {
        Status = STATUS_DEVICE_OFF_LINE;
    }
    else if(MP_TEST_FLAG(FdoData, fMP_ADAPTER_NO_CABLE))
    {
        Status = STATUS_DEVICE_NOT_CONNECTED;
    }

    return Status;
}  

__inline VOID 
NICDisableInterrupt(
    IN PFDO_DATA FdoData
    )
{
   FdoData->CSRAddress->ScbCommandHigh = SCB_INT_MASK;
}

__inline VOID NICEnableInterrupt(
    IN PFDO_DATA FdoData
    )
{
    FdoData->CSRAddress->ScbCommandHigh = 0;
}

__inline 
BOOLEAN  
IsPoMgmtSupported(
   IN PFDO_DATA FdoData
   )
{

    if (FdoData->RevsionID  >= E100_82559_A_STEP  && 
         /*FdoData->RevsionID <= E100_82559_C_STEP &&*/ 
         FdoData->DeviceCaps.SystemWake != PowerSystemUnspecified && 
         FdoData->DeviceCaps.DeviceWake != PowerDeviceUnspecified )
    {
        return TRUE;
    }
    else
    {
        return FALSE;
    }
    
}

__inline
USHORT
NICReadPortUShort (
    IN  USHORT * x
    )
{
    return READ_PORT_USHORT (x);
}
__inline
VOID
NICWritePortUShort (
    IN  USHORT * x,
    IN  USHORT   y
    )
{
    WRITE_PORT_USHORT (x,y);
}

__inline
USHORT
NICReadRegisterUShort (
    IN  USHORT * x
    )
{
    return READ_REGISTER_USHORT (x);
}

__inline
VOID
NICWriteRegisterUShort (
    IN  USHORT * x,
    IN  USHORT   y
    )
{
    WRITE_REGISTER_USHORT (x,y);
}



// routines.c           

BOOLEAN 
MdiRead(
    IN PFDO_DATA Adapter,
    IN ULONG RegAddress,
    IN ULONG PhyAddress,
    IN BOOLEAN  Recoverable,
    IN OUT PUSHORT DataValue
    );

VOID 
MdiWrite(
    IN PFDO_DATA FdoData,
    IN ULONG RegAddress,
    IN ULONG PhyAddress,
    IN USHORT DataValue
    );

NTSTATUS 
D100IssueScbCommand(
    IN PFDO_DATA FdoData,
    IN UCHAR ScbCommandLow,
    IN BOOLEAN WaitForScb
    );

MEDIA_STATE 
GetMediaState(
    IN PFDO_DATA Adapter
    );

NTSTATUS 
D100SubmitCommandBlockAndWait(
    IN PFDO_DATA Adapter
    );

VOID 
NICIssueFullReset(
    PFDO_DATA Adapter
    );

VOID 
NICIssueSelectiveReset(
    PFDO_DATA Adapter
    );

VOID 
DumpStatsCounters(
    IN PFDO_DATA Adapter
    );



// physet.c

VOID 
ResetPhy(
    IN PFDO_DATA FdoData
    );

NTSTATUS 
PhyDetect(
    IN PFDO_DATA FdoData
    );

NTSTATUS 
ScanAndSetupPhy(
    IN PFDO_DATA FdoData
    );

VOID 
SelectPhy(
    IN PFDO_DATA FdoData,
    IN UINT SelectPhyAddress,
    IN BOOLEAN WaitAutoNeg
    );

NTSTATUS 
SetupPhy(
    IN PFDO_DATA FdoData
    );

VOID 
FindPhySpeedAndDpx(
    IN PFDO_DATA FdoData,
    IN UINT PhyId
    );



// eeprom.c
USHORT 
GetEEpromAddressSize(
    IN USHORT Size
    );

USHORT 
GetEEpromSize(
    IN PFDO_DATA FdoData,
    IN PUCHAR CSRBaseIoAddress
    );

USHORT 
ReadEEprom(
    IN PFDO_DATA FdoData,
    IN PUCHAR CSRBaseIoAddress,
    IN USHORT Reg,
    IN USHORT AddressSize
    );

VOID 
ShiftOutBits(
    IN PFDO_DATA FdoData,
    IN USHORT data,
    IN USHORT count,
    IN PUCHAR CSRBaseIoAddress
    );

USHORT 
ShiftInBits(
    IN PFDO_DATA FdoData,
    IN PUCHAR CSRBaseIoAddress
    );

VOID 
RaiseClock(
    IN PFDO_DATA FdoData,
    IN OUT USHORT *x,
    IN PUCHAR CSRBaseIoAddress
    );

VOID 
LowerClock(
    IN PFDO_DATA FdoData,
    IN OUT USHORT *x,
    IN PUCHAR CSRBaseIoAddress
    );

VOID 
EEpromCleanup(
    IN PFDO_DATA FdoData,
    IN PUCHAR CSRBaseIoAddress
    );

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -