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

📄 driver.h

📁 mcf5307实验源代码
💻 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 + -