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

📄 xllp_ethernet.h

📁 Windows CE 6.0 BSP for VOIP sample phone. Intel PXA270 platform.
💻 H
📖 第 1 页 / 共 3 页
字号:
*/
#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 + -