📄 xllp_ethernet.h
字号:
*/
#define XLLP_LAN91C111_REG_BASE_DEFAULT 0x300
/*
*******************************************************************************
* Error codes.
*******************************************************************************
*/
#if defined(POST_BUILD) || defined(WinCE_BUILD)
#define ERR_L_LAN91C111 0x5u
#define ERR_T_TIMEOUT 0x003 // Timeout
#define ERR_T_NODEVICE 0x004 // A device is not present or cannot be initialized
#define ERR_T_BADRANGE 0x008 // bad range - some number or computation is out of range
#define ERR_T_NORECEIVE 0x009 // Some receiver cannot receive data
#define ERR_T_NOTRANSMIT 0x00A // some transmitter cannot transmit data
#define ERR_T_ILLALIGN 0x00B // Illegal alignment
#define ERR_T_UNEXPECTED 0x00E // Unexpected result returned from device
#define ERR_T_CRC 0x01C // CRC error.
#endif
/*
*******************************************************************************
* Sub-location error codes.
*******************************************************************************
*/
#define ERR_S_INV_DEV 0x01
#define ERR_S_BAD_MAC 0x02
#define ERR_S_EEPROM 0x03
#define ERR_S_RESET 0x04
#define ERR_S_ALLOC 0x05
#define ERR_S_DEALLOC 0x06
#define ERR_S_TRANSMIT 0x07
#define ERR_S_RECEIVE 0x08
#define ERR_S_RELEASE 0x09
#define ERR_S_FILL_RAM 0x0A
#define ERR_TS_TXTEST 0x80 // Error codes in EthernetTransmitTest()
#define ERR_TS_LOOPTEST 0x81 // Error codes in PostLANControllerLoopBack()
#define ERR_TS_MACADDR 0x82 // Error codes in PostLANControllerLoopBack()
/*
*******************************************************************************
* Timeout Definitions
*******************************************************************************
*/
#define XLLP_LAN91C111_TO_EEPROM 2 // Timeout for access the EEPROM
#define XLLP_LAN91C111_TO_ALLOC 2 // Timeout for buffer allocations
#define XLLP_LAN91C111_TO_TRANSMIT 2 // Timeout for transmit
/*
*******************************************************************************
* Manifest Constants
*******************************************************************************
*/
#define XLLP_LAN91C111_MAX_PAGES 4 // Maximum number of 2K pages.
#define XLLP_LAN91C111_MIR_DEFAULT 0x0404
#define XLLP_LAN91C111_MIR_RELEASE 0x0004
#define XLLP_LAN91C111_FIFO_DEFAULT 0x8080
#define XLLP_LAN91C111_POINTER_WR 0x4000
#define XLLP_LAN91C111_POINTER_RD 0x6000
/*
************************************************************************************
* DATA TYPES
************************************************************************************
*/
typedef enum XllpEthernetLoopbackTypeE
{
XLLP_ETHERNET_EPH_LOOPBACK = 1,
XLLP_ETHERNET_PHY_HALF_LOOPBACK,
XLLP_ETHERNET_PHY_FULL_LOOPBACK,
XLLP_ETHERNET_PHY_EXT_LOOPBACK
} XllpEthernetLoopbackTypeT;
typedef enum XllpEthernetLoopbackEnableE
{
XLLP_ETHERNET_LOOPBACK_DISABLE,
XLLP_ETHERNET_LOOPBACK_ENABLE
} XllpEthernetLoopbackEnableT;
typedef struct XllpEthernetHeaderS
{
XLLP_UINT16_T destMAC[3];
XLLP_UINT16_T srcMAC[3];
XLLP_UINT16_T frameType;
} XllpEthernetHeaderT;
/*
*******************************************************************************
* Network definitions.
*******************************************************************************
*/
#define XLLP_ETHERNET_TYPE_IP 0x0800
#define XLLP_ETHERNET_TYPE_ARP 0x0806
#define XLLP_ETHERNET_TYPE_ARP_MSB 0x08
#define XLLP_ETHERNET_TYPE_ARP_LSB 0x06
#define XLLP_ETHERNET_MIN_LENGTH 60
#define XLLP_ETHERNET_MAX_LENGTH 2048
#define XLLP_ETHERNET_CRC_LEN 4
#if !defined(WinCE_BUILD)
#define ntohl(x) htonl(x)
#define ntohs(x) htons(x)
__inline XLLP_UINT16_T htons(XLLP_UINT16_T _val)
{
return (_val << 8) | (_val >> 8);
}
__inline XLLP_UINT32_T htonl(XLLP_UINT32_T _val)
{
return (_val << 24) | ((_val&0xff00) << 8) |
((_val&0xff0000) >> 8) | (_val >> 24);
}
#endif
/*
*******************************************************************************
* External Functions
*******************************************************************************
*/
#if defined(POST_BUILD) || defined(WinCE_BUILD)
#define DM_CW_LAN91C111_0 8
#define DM_CW_LAN91C111_1 9
#endif
#if defined(POST_BUILD)
// Debug printf definitions
#define LOGERROR LogError
// Debug routines in POST
void DM_ControlWordsDebugPrintPutBit(XLLP_UINT32_T, XLLP_UINT32_T);
void DM_CwDbgPrintf(XLLP_UINT32_T debugFlag, char *, ...);
// Error log function defined in POST
extern XLLP_UINT32_T LogError(P_XLLP_UINT32_T logerror, XLLP_UINT32_T where,
XLLP_UINT32_T subwhere, XLLP_UINT32_T type,
XLLP_UINT32_T param1, XLLP_UINT32_T param2,
XLLP_UINT32_T param3);
#elif defined(WinCE_BUILD)
//void DM_CwDbgPrintf(XLLP_UINT_T contrlWord, P_XLLP_INT8_T fmt, ...);
// Debug printf definitions defined under WinCE
#define printf KITLOutputDebugString
#define DM_ControlWordsDebugPrintPutBit
// Error log function defined as NULL
#define LOGERROR(_logerr,_where,_sub_where,_type,_param1,_param2,_param3)
// Debug printr for WinCE
__inline void DM_CwDbgPrintf(XLLP_UINT32_T contrlWord, P_XLLP_INT8_T fmt, ...)
{
/*
XLLP_INT8_T pstring[100];
va_list ap;
void *p1, *p2, *p3, *p4, *p5, *p6, *p7, *p8, *p9, *p10, *p11, *p12;
va_start(ap, fmt);
p1 = va_arg(ap, void *);
p2 = va_arg(ap, void *);
p3 = va_arg(ap, void *);
p4 = va_arg(ap, void *);
p5 = va_arg(ap, void *);
p6 = va_arg(ap, void *);
p7 = va_arg(ap, void *);
p8 = va_arg(ap, void *);
p9 = va_arg(ap, void *);
p10 = va_arg(ap, void *);
p11 = va_arg(ap, void *);
p12 = va_arg(ap, void *);
va_end(ap);
sprintf(pstring, fmt, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11, p12);
KITLOutputDebugString(pstring);
*/
}
#endif
/*
************************************************************************************
* FUNCTION PROTOTYPES
************************************************************************************
*/
XLLP_UINT16_T XllpEthernetReadPhyRegister(XLLP_UINT8_T phyaddr, XLLP_UINT8_T phyreg);
void XllpEthernetWritePhyRegister(XLLP_UINT8_T phyaddr,
XLLP_UINT8_T phyreg,
XLLP_UINT16_T phydata);
void XllpEthernetVerifyRAMBuffer (XLLP_UINT32_T bufferSize);
void XllpEthernetDisplayTxStatus(void);
XLLP_UINT32_T XllpEthernetGetEEPROMMACAddress(P_XLLP_UINT16_T macAddressP);
XLLP_UINT32_T XllpEthernetStoreEEPROMMACAddress(P_XLLP_UINT16_T macAddressP);
void XllpEthernetGetMACAddress(P_XLLP_UINT16_T macAddressP);
void XllpEthernetStoreMACAddress(P_XLLP_UINT16_T macAddressP);
void XllpEthernetSetLoopBack(XllpEthernetLoopbackTypeT type, XllpEthernetLoopbackEnableT enable);
void XllpEthernetDumpFrame(P_XLLP_UINT8_T frame, XLLP_UINT16_T length);
XLLP_UINT32_T XllpEthernetTransmitPacket(P_XLLP_UINT16_T buffer, XLLP_UINT32_T length);
XLLP_UINT32_T XllpEthernetReceiveStatus(P_XLLP_UINT16_T rxIntStatusP);
XLLP_UINT32_T XllpEthernetReceivePacket(P_XLLP_UINT32_T buffer, P_XLLP_INT32_T rxCount);
void XllpEthernetSetMulticastList (P_XLLP_UINT8_T multicastAddrP, XLLP_UINT32_T addrCntr);
void XllpEthernetDumpRegisters(void);
XLLP_UINT32_T XllpEthernetHWSetup(P_XLLP_UINT16_T macAddressP,
XLLP_BOOL_T autoRelease,
XLLP_BOOL_T autoNegotiate,
XllpEthernetLoopbackEnableT enable);
void XllpEthernetHWShutdown(void);
void XllpEthernetSWInit(void* ioRegsP);
void XllpEthernetGetRxIntFlag (P_XLLP_UINT16_T rxIntStatus);
void XllpEthernetTraceEnable(P_XLLP_INT8_T flag);
void XllpEthernetErrorEnable(P_XLLP_INT8_T flag);
void XllpEthernetEnableRxInterrupt(void);
void XllpEthernetDisableRxInterrupt(void);
#if defined(WinCE_BUILD)
XLLP_UINT32_T XllpEternetDeallocateTxPacket(void);
extern void XllpEthernetSelectRegisterBank (XLLP_UINT32_T bank);
extern XLLP_UINT8_T XllpEthernetReadByte(XLLP_UINT32_T offset);
void XllpEthernetWriteByte(XLLP_UINT8_T value, XLLP_UINT32_T offset);
#endif
#endif /* _xllp_ethernet_h */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -