📄 driver.h
字号:
#ifndef DRIVER_H
#define DRIVER_H
//#define MACBASEADD 0x44000200 //Daniel
#define MACBASEADD 0x30400200 //sunsir
#define IMR_ADDR 0x10000044 //中断屏蔽寄存器
//#define MACBASEADD 0x30800000
// define the register address of page 0.
#define CRADD ( MACBASEADD + 0x00) // offset 0.
#define PSTARTADD ( MACBASEADD + 0x01 ) // offset 1.
#define PSTOPADD ( MACBASEADD + 0x02 ) // offset 2.
#define BNRYADD ( MACBASEADD + 0x03 ) // offset 3.
#define TSRADD ( MACBASEADD + 0x04 ) // offset 4. read
#define TPSRADD TSRADD // offset 4. write
#define NCRADD ( MACBASEADD + 0x05 ) // offset 5. read
#define TBCR0ADD NCRADD // offset 5. write
#define CPR1ADD ( MACBASEADD + 0x06 ) // offset 6. read
#define TBCR1ADD CPR1ADD // offset 6. write
#define ISRADD ( MACBASEADD + 0x07 ) // offset 7.
#define CRDA0ADD ( MACBASEADD + 0x08 ) // offset 8. read
#define RSAR0ADD CRDA0ADD // offset 8. write
#define CRDA1ADD ( MACBASEADD + 0x09 ) // offset 9. read
#define RSAR1ADD CRDA1ADD // offset 9. write
#define RBCR0ADD ( MACBASEADD + 0x0a ) // offset a. write
#define RBCR1ADD ( MACBASEADD + 0x0b ) // offset b. write
#define RSRADD ( MACBASEADD + 0x0c ) // offset c. read
#define RCRADD RSRADD // offset c. write
#define CNTR0ADD ( MACBASEADD + 0x0d ) // offset d. read
#define TCRADD CNTR0ADD // offset d. write
#define CNTR1ADD ( MACBASEADD + 0x0e ) // offset e. read
#define DCRADD CNTR1ADD // offset e. write
#define CNTR2ADD ( MACBASEADD + 0x0f ) // offset f. read
#define IMRADD CNTR2ADD // offset f. write
#define DATAPORTADD ( MACBASEADD + 0x10 ) // offset 10,11.
#define DATAPORT1ADD ( MACBASEADD + 0x10 ) // offset 10.
#define DATAPORT2ADD ( MACBASEADD + 0x11 ) // offset 11.
#define IFGS1ADD ( MACBASEADD + 0x12 ) // offset 12.
#define IFGS2ADD ( MACBASEADD + 0x13 ) // offset 13.
#define MIIEEPROMADD ( MACBASEADD + 0x14 ) // offset 14.
#define TESTADD ( MACBASEADD + 0x15 ) // offset 15.
#define IFGADD ( MACBASEADD + 0x16 ) // offset 16.
#define GPIADD ( MACBASEADD + 0x17 ) // offset 17. read
#define GPOCADD GPIADD // offset 17. write
// define the register address of page 1.
#define PARA0ADD ( MACBASEADD + 0x01 ) // offset 1. read
#define PAR0ADD PARA0ADD // offset 1. write
#define PARA1ADD ( MACBASEADD + 0x02 ) // offset 2. read
#define PAR1ADD PARA1ADD // offset 2. write
#define PARA2ADD ( MACBASEADD + 0x03 ) // offset 3. read
#define PAR2ADD PARA2ADD // offset 3. write
#define PARA3ADD ( MACBASEADD + 0x04 ) // offset 4. read
#define PAR3ADD PARA3ADD // offset 4. write
#define PARA4ADD ( MACBASEADD + 0x05 ) // offset 5. read
#define PAR4ADD PARA4ADD // offset 5. write
#define PARA5ADD ( MACBASEADD + 0x06 ) // offset 6. read
#define PAR5ADD PARA6ADD // offset 6. write
#define CPRADD ( MACBASEADD + 0x07 ) // offset 7.
#define MAR0ADD ( MACBASEADD + 0x08 ) // offset 8.
#define MAR1ADD ( MACBASEADD + 0x09 ) // offset 9.
#define MAR2ADD ( MACBASEADD + 0x0a ) // offset a.
#define MAR3ADD ( MACBASEADD + 0x0b ) // offset b.
#define MAR4ADD ( MACBASEADD + 0x0c ) // offset c.
#define MAR5ADD ( MACBASEADD + 0x0d ) // offset d.
#define MAR6ADD ( MACBASEADD + 0x0e ) // offset e.
#define MAR7ADD ( MACBASEADD + 0x0f ) // offset f.
//define the register address of printer
#define PDPRADD ( MACBASEADD + 0x18 ) //SPP Data Port Register
#define PSPRADD ( MACBASEADD + 0x19 ) //SPP Status Port Register
#define PCPRADD ( MACBASEADD + 0x1A ) //SPP Command Port Register
// Some features used by MII access.
#define MII_MDO_BIT_POSITION 3
#define MII_MDO_MASK 8
#define MII_WRITE 0
#define MII_READ 2
#define MII_CLK 1
#define PHY_ADDR_ALIGN 23
#define REG_ADDR_ALIGN 18
#define PRE ((long)(0xFFFFFFFF))
#define MII_READ_FRAME ((long)(0x60000000))
#define MII_WRITE_FRAME ((long)(0x50020000))
#define MII_MDI_BIT_POSITION 2
#define MII_MDI_MASK 4
#define MII_READ_DATA_MASK MII_MDI_MASK
#define MII_WRITE_TS 2
// maximun lenth for a raw packet.
#define TRANSMIT_BUF_SIZE 1514 // MTU + 2 * address length + data length
#define RECEIVE_BUF_SIZE 1518 // MTU + 2 * address length + data length + CRC
#define TRANSMIT_BUF_MIN_SIZE 60
#define NET_TMO_MIIRST 100 // 100 ms to wait for MII reset.
#define NET_TMO_DMA 10 // 10 ms to wait for DMA.
#define NET_TMO_TMIT 100 // 100 ms to wait for transmit to be finished.
#define NET_TMO_LOOPWT 2000 // 2m to wait for loop response.
#define NET_NO_ERROR 0
#define NET_ERROR_MIIRST -1
#define NET_ERROR_PHYREAD -2
#define NET_ERROR_NE2REG -3
#define NET_ERROR_DMATMO -4
#define NET_ERROR_DMAERR -5
#define NET_ERROR_LOOPRSP -6
#define NET_ERROR_LOOPERR -7
#define NET_ERROR_MIIRD -8
#define NET_ERROR_PAKLEN -9
#define NET_ERROR_NOPAKIN -10
#define NET_ERROR_TRANSBLOCK -11
#define NET_PTL_TCPIP 1
#define NET_PTL_VIEWBEDCARE 2
#define NET_PTL_VIEWBEDNOTCARE 3
#define NET_PTL_UPGRADE 4
#define NET_PTL_NOONE 5
//define datatype
typedef unsigned char UCHAR;
typedef short INT16;
typedef unsigned short UINT16;
typedef long INT32;
typedef unsigned long UINT32;
typedef struct
{
unsigned long PacketReallyReceived; // packet really received.
unsigned long PacketReallyReceivedTcpip; // TCP/IP packet really received.
unsigned long PacketReallyReceivedVBCare; // VB packet really received.
unsigned long PacketReallyReceivedVBNotCare; // VB packet discarded.
unsigned long PacketReceived; // packet received (actually, interrupts.).
unsigned long PacketReceivedWithError; // received with error, but don't know
// why, maybe following reasons.
unsigned long PacketReceivedIntact; // packet received intact.
unsigned long PacketReceviedCRCErr; // packet received with CRC error.
unsigned long PacketReceviedFAEErr; // packet received with FA error.
unsigned long PacketReceivedFIFOErr; // packet received with FIFO error.
unsigned long PacketReceivedMissErr; // packet received with miss error.
unsigned long PacketReceivedBMpTimes; // multi-broadcast packets.
unsigned long PacketReceivedDisabled; // receive disabled.
}STSTABOUTRCV;
typedef struct
{
unsigned long TransmitTimes;
unsigned long TransmitTimesWithError;
unsigned long TransmitOWCErr; // out of window collision.
unsigned long TransmitABTErr; // transmit abort because of collision.
unsigned long TransmitColTimes; // when this is increase, at least
// one collision is found
unsigned long TransmitPTXTimes; // times of transmiting without error.
}STSTABOUTTMT;
// statistics
typedef struct
{
STSTABOUTRCV Rcv;
STSTABOUTTMT Tmt;
unsigned long CouterOverflowTimes; // tally counter full times.
unsigned long RemoteDMACompleteTimes; // remote DMA finish times.
unsigned long ShortBufferTimes; // how many time that encounter buffer shortage.
unsigned long ResetTimes; // how many time that the chip is reset.
unsigned long IPBufShortTimes; // TCP/IP could not provide buffers.
// UINT32 VBBufShortTimes; // VB buffer could not be provided.
}STSTMAC;
/* global variables extern refs */
extern struct config Scon; /* current configuration */
extern struct pqueue_hdr buffer_list;
extern struct pqueue_hdr buffer_freelist;
extern struct pqueue_hdr odh_list;
extern struct transq_hdr trans_list;
extern struct transq_hdr trans_freelist;
#endif /* DRIVER_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -