@ -19,29 +19,28 @@
# include "bcm570x_queue.h"
# include "bcm570x_bits.h"
/******************************************************************************/
/* Basic types. */
/******************************************************************************/
typedef char LM_CHAR , * PLM_CHAR ;
typedef unsigned int LM_UINT , * PLM_UINT ;
typedef unsigned char LM_UINT8 , * PLM_UINT8 ;
typedef unsigned short LM_UINT16 , * PLM_UINT16 ;
typedef unsigned int LM_UINT32 , * PLM_UINT32 ;
typedef unsigned int LM_COUNTER , * PLM_COUNTER ;
typedef void LM_VOID , * PLM_VOID ;
typedef char LM_BOOL , * PLM_BOOL ;
typedef char LM_CHAR , * PLM_CHAR ;
typedef unsigned int LM_UINT , * PLM_UINT ;
typedef unsigned char LM_UINT8 , * PLM_UINT8 ;
typedef unsigned short LM_UINT16 , * PLM_UINT16 ;
typedef unsigned int LM_UINT32 , * PLM_UINT32 ;
typedef unsigned int LM_COUNTER , * PLM_COUNTER ;
typedef void LM_VOID , * PLM_VOID ;
typedef char LM_BOOL , * PLM_BOOL ;
/* 64bit value. */
typedef struct {
# ifdef BIG_ENDIAN_HOST
LM_UINT32 High ;
LM_UINT32 Low ;
# else /* BIG_ENDIAN_HOST */
LM_UINT32 Low ;
LM_UINT32 High ;
# endif /* !BIG_ENDIAN_HOST */
LM_UINT32 High ;
LM_UINT32 Low ;
# else /* BIG_ENDIAN_HOST */
LM_UINT32 Low ;
LM_UINT32 High ;
# endif /* !BIG_ENDIAN_HOST */
} LM_UINT64 , * PLM_UINT64 ;
typedef LM_UINT64 LM_PHYSICAL_ADDRESS , * PLM_PHYSICAL_ADDRESS ;
@ -58,15 +57,13 @@ typedef LM_UINT64 LM_PHYSICAL_ADDRESS, *PLM_PHYSICAL_ADDRESS;
} \
}
# ifndef NULL
# define NULL ((void *) 0)
# endif /* NULL */
# endif /* NULL */
# ifndef OFFSETOF
# define OFFSETOF(_s, _m) (MM_UINT_PTR(&(((_s *) 0)->_m)))
# endif /* OFFSETOF */
# endif /* OFFSETOF */
/******************************************************************************/
/* Simple macros. */
@ -100,26 +97,24 @@ typedef LM_UINT64 LM_PHYSICAL_ADDRESS, *PLM_PHYSICAL_ADDRESS;
( ( unsigned char * ) ( _Dst ) ) [ 4 ] = ( ( unsigned char * ) ( _Src ) ) [ 4 ] ; \
( ( unsigned char * ) ( _Dst ) ) [ 5 ] = ( ( unsigned char * ) ( _Src ) ) [ 5 ] ;
/******************************************************************************/
/* Constants. */
/******************************************************************************/
# define ETHERNET_ADDRESS_SIZE 6
# define ETHERNET_PACKET_HEADER_SIZE 14
# define MIN_ETHERNET_PACKET_SIZE 64 /* with 4 byte crc. */
# define MAX_ETHERNET_PACKET_SIZE 1518 /* with 4 byte crc. */
# define MIN_ETHERNET_PACKET_SIZE 64 /* with 4 byte crc. */
# define MAX_ETHERNET_PACKET_SIZE 1518 /* with 4 byte crc. */
# define MIN_ETHERNET_PACKET_SIZE_NO_CRC 60
# define MAX_ETHERNET_PACKET_SIZE_NO_CRC 1514
# define MAX_ETHERNET_PACKET_BUFFER_SIZE 1536 /* A nice even number. */
# define MAX_ETHERNET_PACKET_BUFFER_SIZE 1536 /* A nice even number. */
# ifndef LM_MAX_MC_TABLE_SIZE
# define LM_MAX_MC_TABLE_SIZE 32
# endif /* LM_MAX_MC_TABLE_SIZE */
# endif /* LM_MAX_MC_TABLE_SIZE */
# define LM_MC_ENTRY_SIZE (ETHERNET_ADDRESS_SIZE+1)
# define LM_MC_INSTANCE_COUNT_INDEX (LM_MC_ENTRY_SIZE-1)
/* Receive filter masks. */
# define LM_ACCEPT_UNICAST 0x0001
# define LM_ACCEPT_MULTICAST 0x0002
@ -129,7 +124,6 @@ typedef LM_UINT64 LM_PHYSICAL_ADDRESS, *PLM_PHYSICAL_ADDRESS;
# define LM_PROMISCUOUS_MODE 0x10000
/******************************************************************************/
/* PCI registers. */
/******************************************************************************/
@ -169,20 +163,20 @@ typedef LM_UINT64 LM_PHYSICAL_ADDRESS, *PLM_PHYSICAL_ADDRESS;
/******************************************************************************/
typedef struct {
LM_UINT32 FragSize ;
LM_PHYSICAL_ADDRESS FragBuf ;
LM_UINT32 FragSize ;
LM_PHYSICAL_ADDRESS FragBuf ;
} LM_FRAG , * PLM_FRAG ;
typedef struct {
/* FragCount is initialized for the caller to the maximum array size, on */
/* return FragCount is the number of the actual fragments in the array. */
LM_UINT32 FragCount ;
/* FragCount is initialized for the caller to the maximum array size, on */
/* return FragCount is the number of the actual fragments in the array. */
LM_UINT32 FragCount ;
/* Total buffer size. */
LM_UINT32 TotalSize ;
/* Total buffer size. */
LM_UINT32 TotalSize ;
/* Fragment array buffer. */
LM_FRAG Fragments [ 1 ] ;
/* Fragment array buffer. */
LM_FRAG Fragments [ 1 ] ;
} LM_FRAG_LIST , * PLM_FRAG_LIST ;
# define DECLARE_FRAG_LIST_BUFFER_TYPE(_FRAG_LIST_TYPE_NAME, _MAX_FRAG_COUNT) \
@ -191,7 +185,6 @@ typedef struct {
LM_FRAG FragListBuffer [ _MAX_FRAG_COUNT - 1 ] ; \
} _FRAG_LIST_TYPE_NAME , * P # # _FRAG_LIST_TYPE_NAME
/******************************************************************************/
/* Status codes. */
/******************************************************************************/
@ -217,7 +210,6 @@ typedef struct {
typedef LM_UINT LM_STATUS , * PLM_STATUS ;
/******************************************************************************/
/* Requested media type. */
/******************************************************************************/
@ -240,7 +232,6 @@ typedef LM_UINT LM_STATUS, *PLM_STATUS;
typedef LM_UINT32 LM_REQUESTED_MEDIA_TYPE , * PLM_REQUESTED_MEDIA_TYPE ;
/******************************************************************************/
/* Media type. */
/******************************************************************************/
@ -254,7 +245,6 @@ typedef LM_UINT32 LM_REQUESTED_MEDIA_TYPE, *PLM_REQUESTED_MEDIA_TYPE;
typedef LM_UINT32 LM_MEDIA_TYPE , * PLM_MEDIA_TYPE ;
/******************************************************************************/
/* Line speed. */
/******************************************************************************/
@ -266,7 +256,6 @@ typedef LM_UINT32 LM_MEDIA_TYPE, *PLM_MEDIA_TYPE;
typedef LM_UINT32 LM_LINE_SPEED , * PLM_LINE_SPEED ;
/******************************************************************************/
/* Duplex mode. */
/******************************************************************************/
@ -277,7 +266,6 @@ typedef LM_UINT32 LM_LINE_SPEED, *PLM_LINE_SPEED;
typedef LM_UINT32 LM_DUPLEX_MODE , * PLM_DUPLEX_MODE ;
/******************************************************************************/
/* Power state. */
/******************************************************************************/
@ -289,7 +277,6 @@ typedef LM_UINT32 LM_DUPLEX_MODE, *PLM_DUPLEX_MODE;
typedef LM_UINT32 LM_POWER_STATE , * PLM_POWER_STATE ;
/******************************************************************************/
/* Task offloading. */
/******************************************************************************/
@ -305,7 +292,6 @@ typedef LM_UINT32 LM_POWER_STATE, *PLM_POWER_STATE;
typedef LM_UINT32 LM_TASK_OFFLOAD , * PLM_TASK_OFFLOAD ;
/******************************************************************************/
/* Flow control. */
/******************************************************************************/
@ -324,7 +310,6 @@ typedef LM_UINT32 LM_TASK_OFFLOAD, *PLM_TASK_OFFLOAD;
typedef LM_UINT32 LM_FLOW_CONTROL , * PLM_FLOW_CONTROL ;
/******************************************************************************/
/* Wake up mode. */
/******************************************************************************/
@ -336,7 +321,6 @@ typedef LM_UINT32 LM_FLOW_CONTROL, *PLM_FLOW_CONTROL;
typedef LM_UINT32 LM_WAKE_UP_MODE , * PLM_WAKE_UP_MODE ;
/******************************************************************************/
/* Counters. */
/******************************************************************************/
@ -362,7 +346,6 @@ typedef LM_UINT32 LM_WAKE_UP_MODE, *PLM_WAKE_UP_MODE;
typedef LM_UINT32 LM_COUNTER_TYPE , * PLM_COUNTER_TYPE ;
/******************************************************************************/
/* Forward definition. */
/******************************************************************************/
@ -370,82 +353,82 @@ typedef LM_UINT32 LM_COUNTER_TYPE, *PLM_COUNTER_TYPE;
typedef struct _LM_DEVICE_BLOCK * PLM_DEVICE_BLOCK ;
typedef struct _LM_PACKET * PLM_PACKET ;
/******************************************************************************/
/* Function prototypes. */
/******************************************************************************/
LM_STATUS LM_GetAdapterInfo ( PLM_DEVICE_BLOCK pDevice ) ;
LM_STATUS LM_InitializeAdapter ( PLM_DEVICE_BLOCK pDevice ) ;
LM_STATUS LM_ResetAdapter ( PLM_DEVICE_BLOCK pDevice ) ;
LM_STATUS LM_DisableInterrupt ( PLM_DEVICE_BLOCK pDevice ) ;
LM_STATUS LM_EnableInterrupt ( PLM_DEVICE_BLOCK pDevice ) ;
LM_STATUS LM_SendPacket ( PLM_DEVICE_BLOCK pDevice , PLM_PACKET pPacket ) ;
LM_STATUS LM_ServiceInterrupts ( PLM_DEVICE_BLOCK pDevice ) ;
LM_STATUS LM_QueueRxPackets ( PLM_DEVICE_BLOCK pDevice ) ;
LM_STATUS LM_SetReceiveMask ( PLM_DEVICE_BLOCK pDevice , LM_UINT32 Mask ) ;
LM_STATUS LM_Halt ( PLM_DEVICE_BLOCK pDevice ) ;
LM_STATUS LM_Abort ( PLM_DEVICE_BLOCK pDevice ) ;
LM_STATUS LM_MulticastAdd ( PLM_DEVICE_BLOCK pDevice , PLM_UINT8 pMcAddress ) ;
LM_STATUS LM_MulticastDel ( PLM_DEVICE_BLOCK pDevice , PLM_UINT8 pMcAddress ) ;
LM_STATUS LM_MulticastClear ( PLM_DEVICE_BLOCK pDevice ) ;
LM_STATUS LM_SetMacAddress ( PLM_DEVICE_BLOCK pDevice , PLM_UINT8 pMacAddress ) ;
LM_STATUS LM_LoopbackAddress ( PLM_DEVICE_BLOCK pDevice , PLM_UINT8 pAddress ) ;
LM_UINT32 LM_GetCrcCounter ( PLM_DEVICE_BLOCK pDevice ) ;
LM_WAKE_UP_MODE LM_PMCapabilities ( PLM_DEVICE_BLOCK pDevice ) ;
LM_STATUS LM_NwufAdd ( PLM_DEVICE_BLOCK pDevice , LM_UINT32 ByteMaskSize ,
LM_UINT8 * pByteMask , LM_UINT8 * pPattern ) ;
LM_STATUS LM_NwufRemove ( PLM_DEVICE_BLOCK pDevice , LM_UINT32 ByteMaskSize ,
LM_UINT8 * pByteMask , LM_UINT8 * pPattern ) ;
LM_STATUS LM_SetPowerState ( PLM_DEVICE_BLOCK pDevice , LM_POWER_STATE PowerLevel ) ;
LM_VOID LM_ReadPhy ( PLM_DEVICE_BLOCK pDevice , LM_UINT32 PhyReg ,
PLM_UINT32 pData32 ) ;
LM_VOID LM_WritePhy ( PLM_DEVICE_BLOCK pDevice , LM_UINT32 PhyReg ,
LM_UINT32 Data32 ) ;
LM_STATUS LM_ControlLoopBack ( PLM_DEVICE_BLOCK pDevice , LM_UINT32 Control ) ;
LM_STATUS LM_SetupPhy ( PLM_DEVICE_BLOCK pDevice ) ;
int LM_BlinkLED ( PLM_DEVICE_BLOCK pDevice , LM_UINT32 BlinkDuration ) ;
LM_STATUS LM_GetAdapterInfo ( PLM_DEVICE_BLOCK pDevice ) ;
LM_STATUS LM_InitializeAdapter ( PLM_DEVICE_BLOCK pDevice ) ;
LM_STATUS LM_ResetAdapter ( PLM_DEVICE_BLOCK pDevice ) ;
LM_STATUS LM_DisableInterrupt ( PLM_DEVICE_BLOCK pDevice ) ;
LM_STATUS LM_EnableInterrupt ( PLM_DEVICE_BLOCK pDevice ) ;
LM_STATUS LM_SendPacket ( PLM_DEVICE_BLOCK pDevice , PLM_PACKET pPacket ) ;
LM_STATUS LM_ServiceInterrupts ( PLM_DEVICE_BLOCK pDevice ) ;
LM_STATUS LM_QueueRxPackets ( PLM_DEVICE_BLOCK pDevice ) ;
LM_STATUS LM_SetReceiveMask ( PLM_DEVICE_BLOCK pDevice , LM_UINT32 Mask ) ;
LM_STATUS LM_Halt ( PLM_DEVICE_BLOCK pDevice ) ;
LM_STATUS LM_Abort ( PLM_DEVICE_BLOCK pDevice ) ;
LM_STATUS LM_MulticastAdd ( PLM_DEVICE_BLOCK pDevice , PLM_UINT8 pMcAddress ) ;
LM_STATUS LM_MulticastDel ( PLM_DEVICE_BLOCK pDevice , PLM_UINT8 pMcAddress ) ;
LM_STATUS LM_MulticastClear ( PLM_DEVICE_BLOCK pDevice ) ;
LM_STATUS LM_SetMacAddress ( PLM_DEVICE_BLOCK pDevice , PLM_UINT8 pMacAddress ) ;
LM_STATUS LM_LoopbackAddress ( PLM_DEVICE_BLOCK pDevice , PLM_UINT8 pAddress ) ;
LM_UINT32 LM_GetCrcCounter ( PLM_DEVICE_BLOCK pDevice ) ;
LM_WAKE_UP_MODE LM_PMCapabilities ( PLM_DEVICE_BLOCK pDevice ) ;
LM_STATUS LM_NwufAdd ( PLM_DEVICE_BLOCK pDevice , LM_UINT32 ByteMaskSize ,
LM_UINT8 * pByteMask , LM_UINT8 * pPattern ) ;
LM_STATUS LM_NwufRemove ( PLM_DEVICE_BLOCK pDevice , LM_UINT32 ByteMaskSize ,
LM_UINT8 * pByteMask , LM_UINT8 * pPattern ) ;
LM_STATUS LM_SetPowerState ( PLM_DEVICE_BLOCK pDevice ,
LM_POWER_STATE PowerLevel ) ;
LM_VOID LM_ReadPhy ( PLM_DEVICE_BLOCK pDevice , LM_UINT32 PhyReg ,
PLM_UINT32 pData32 ) ;
LM_VOID LM_WritePhy ( PLM_DEVICE_BLOCK pDevice , LM_UINT32 PhyReg ,
LM_UINT32 Data32 ) ;
LM_STATUS LM_ControlLoopBack ( PLM_DEVICE_BLOCK pDevice , LM_UINT32 Control ) ;
LM_STATUS LM_SetupPhy ( PLM_DEVICE_BLOCK pDevice ) ;
int LM_BlinkLED ( PLM_DEVICE_BLOCK pDevice , LM_UINT32 BlinkDuration ) ;
/******************************************************************************/
/* These are the OS specific functions called by LMAC. */
/******************************************************************************/
LM_STATUS MM_ReadConfig16 ( PLM_DEVICE_BLOCK pDevice , LM_UINT32 Offset ,
LM_UINT16 * pValue16 ) ;
LM_STATUS MM_WriteConfig16 ( PLM_DEVICE_BLOCK pDevice , LM_UINT32 Offset ,
LM_UINT16 Value16 ) ;
LM_STATUS MM_ReadConfig32 ( PLM_DEVICE_BLOCK pDevice , LM_UINT32 Offset ,
LM_UINT32 * pValue32 ) ;
LM_STATUS MM_WriteConfig32 ( PLM_DEVICE_BLOCK pDevice , LM_UINT32 Offset ,
LM_UINT32 Value32 ) ;
LM_STATUS MM_MapMemBase ( PLM_DEVICE_BLOCK pDevice ) ;
LM_STATUS MM_MapIoBase ( PLM_DEVICE_BLOCK pDevice ) ;
LM_STATUS MM_IndicateRxPackets ( PLM_DEVICE_BLOCK pDevice ) ;
LM_STATUS MM_IndicateTxPackets ( PLM_DEVICE_BLOCK pDevice ) ;
LM_STATUS MM_StartTxDma ( PLM_DEVICE_BLOCK pDevice , PLM_PACKET pPacket ) ;
LM_STATUS MM_CompleteTxDma ( PLM_DEVICE_BLOCK pDevice , PLM_PACKET pPacket ) ;
LM_STATUS MM_AllocateMemory ( PLM_DEVICE_BLOCK pDevice , LM_UINT32 BlockSize ,
PLM_VOID * pMemoryBlockVirt ) ;
LM_STATUS MM_AllocateSharedMemory ( PLM_DEVICE_BLOCK pDevice , LM_UINT32 BlockSize ,
PLM_VOID * pMemoryBlockVirt , PLM_PHYSICAL_ADDRESS pMemoryBlockPhy ,
LM_BOOL Cached ) ;
LM_STATUS MM_GetConfig ( PLM_DEVICE_BLOCK pDevice ) ;
LM_STATUS MM_IndicateStatus ( PLM_DEVICE_BLOCK pDevice , LM_STATUS Status ) ;
LM_STATUS MM_InitializeUmPackets ( PLM_DEVICE_BLOCK pDevice ) ;
LM_STATUS MM_FreeRxBuffer ( PLM_DEVICE_BLOCK pDevice , PLM_PACKET pPacket ) ;
LM_STATUS MM_CoalesceTxBuffer ( PLM_DEVICE_BLOCK pDevice , PLM_PACKET pPacket ) ;
LM_STATUS LM_MbufWorkAround ( PLM_DEVICE_BLOCK pDevice ) ;
LM_STATUS LM_SetLinkSpeed ( PLM_DEVICE_BLOCK pDevice ,
LM_REQUESTED_MEDIA_TYPE RequestedMediaType ) ;
LM_STATUS MM_ReadConfig16 ( PLM_DEVICE_BLOCK pDevice , LM_UINT32 Offset ,
LM_UINT16 * pValue16 ) ;
LM_STATUS MM_WriteConfig16 ( PLM_DEVICE_BLOCK pDevice , LM_UINT32 Offset ,
LM_UINT16 Value16 ) ;
LM_STATUS MM_ReadConfig32 ( PLM_DEVICE_BLOCK pDevice , LM_UINT32 Offset ,
LM_UINT32 * pValue32 ) ;
LM_STATUS MM_WriteConfig32 ( PLM_DEVICE_BLOCK pDevice , LM_UINT32 Offset ,
LM_UINT32 Value32 ) ;
LM_STATUS MM_MapMemBase ( PLM_DEVICE_BLOCK pDevice ) ;
LM_STATUS MM_MapIoBase ( PLM_DEVICE_BLOCK pDevice ) ;
LM_STATUS MM_IndicateRxPackets ( PLM_DEVICE_BLOCK pDevice ) ;
LM_STATUS MM_IndicateTxPackets ( PLM_DEVICE_BLOCK pDevice ) ;
LM_STATUS MM_StartTxDma ( PLM_DEVICE_BLOCK pDevice , PLM_PACKET pPacket ) ;
LM_STATUS MM_CompleteTxDma ( PLM_DEVICE_BLOCK pDevice , PLM_PACKET pPacket ) ;
LM_STATUS MM_AllocateMemory ( PLM_DEVICE_BLOCK pDevice , LM_UINT32 BlockSize ,
PLM_VOID * pMemoryBlockVirt ) ;
LM_STATUS MM_AllocateSharedMemory ( PLM_DEVICE_BLOCK pDevice ,
LM_UINT32 BlockSize ,
PLM_VOID * pMemoryBlockVirt ,
PLM_PHYSICAL_ADDRESS pMemoryBlockPhy ,
LM_BOOL Cached ) ;
LM_STATUS MM_GetConfig ( PLM_DEVICE_BLOCK pDevice ) ;
LM_STATUS MM_IndicateStatus ( PLM_DEVICE_BLOCK pDevice , LM_STATUS Status ) ;
LM_STATUS MM_InitializeUmPackets ( PLM_DEVICE_BLOCK pDevice ) ;
LM_STATUS MM_FreeRxBuffer ( PLM_DEVICE_BLOCK pDevice , PLM_PACKET pPacket ) ;
LM_STATUS MM_CoalesceTxBuffer ( PLM_DEVICE_BLOCK pDevice , PLM_PACKET pPacket ) ;
LM_STATUS LM_MbufWorkAround ( PLM_DEVICE_BLOCK pDevice ) ;
LM_STATUS LM_SetLinkSpeed ( PLM_DEVICE_BLOCK pDevice ,
LM_REQUESTED_MEDIA_TYPE RequestedMediaType ) ;
# if INCLUDE_5703_A0_FIX
LM_STATUS LM_Load5703DmaWFirmware ( PLM_DEVICE_BLOCK pDevice ) ;
LM_STATUS LM_Load5703DmaWFirmware ( PLM_DEVICE_BLOCK pDevice ) ;
# endif
# endif /* LM_H */
# endif /* LM_H */