www.pudn.com > hello_led_0.rar > DM9000A.H


#ifndef   __DM9000A_H__ 
#define   __DM9000A_H__ 
 
#define IO_addr     0 
#define IO_data     1 
 
#define NCR         0x00  /* Network  Control Register REG. 00 */ 
#define NSR         0x01  /* Network  Status Register  REG. 01 */ 
#define TCR         0x02  /* Transmit Control Register REG. 02 */ 
#define RCR         0x05  /* Receive  Control Register REG. 05 */ 
#define ETXCSR      0x30  /* TX early Control Register REG. 30 */ 
#define MRCMDX      0xF0  /* RX FIFO I/O port command READ  for dummy read a byte from RX SRAM */ 
#define MRCMD       0xF2  /* RX FIFO I/O port command READ  from RX SRAM */ 
#define MWCMD       0xF8  /* TX FIFO I/O port command WRITE into TX FIFO */ 
#define ISR         0xFE  /* NIC Interrupt Status Register REG. FEH */ 
#define IMR         0xFF  /* NIC Interrupt Mask   Register REG. FFH */ 
 
#define NCR_set         0x00 
#define TCR_set         0x00 
#define TX_REQUEST      0x01  /* TCR REG. 02 TXREQ Bit [0] = 1 polling Transmit Request command */ 
#define TCR_long        0x40  /* packet disable TX Jabber Timer */ 
#define RCR_set         0x30  /* skip CRC_packet and skip LONG_packet */ 
#define RX_ENABLE       0x01  /* RCR REG. 05 RXEN Bit [0] = 1 to enable RX machine */ 
#define RCR_long        0x40  /* packet disable RX Watchdog Timer */ 
#define PASS_MULTICAST  0x08  /* RCR REG. 05 PASS_ALL_MULTICAST Bit [3] = 1: RCR_set value ORed 0x08 */ 
#define BPTR_set        0x3F  /* BPTR REG. 08 RX Back Pressure Threshold: High Water Overflow Threshold setting 3KB and Jam_Pattern_Time = 600 us */ 
#define FCTR_set        0x5A  /* FCTR REG. 09 High/ Low Water Overflow Threshold setting 5KB/ 10KB */ 
#define RTFCR_set       0x29  /* RTFCR REG. 0AH RX/TX Flow Control Register enable TXPEN + BKPM(TX_Half) + FLCE(RX) */ 
#define ETXCSR_set      0x83  /* Early Transmit Bit [7] Enable and Threshold 0~3: 12.5%, 25%, 50%, 75% */ 
#define INTR_set        0x80  /* IMR REG. FFH: PAR +PRM, or 0x83: PAR + PRM + PTM */ 
#define PAR_set         0x80  /* IMR REG. FFH: PAR only, RX/TX FIFO R/W Pointer Auto Return enable */ 
 
#define PHY_reset       0x8000  /* PHY reset: some registers back to default value */ 
#define PHY_txab        0x05e1  /* set PHY TX advertised ability: Full-capability + Flow-control (if necessary) */ 
#define PHY_mode        0x3100  /* set PHY media mode: Auto negotiation (AUTO sense) */ 
 
#define STD_DELAY       20      /* standard delay 20 us */ 
 
#define DMFE_SUCCESS    0 
#define DMFE_FAIL       1 
 
#define TRUE            1 
#define FALSE           0 
 
#define DM9000_PKT_READY  0x01  /* packets ready to receive */ 
#define PACKET_MIN_SIZE   0x40  /* Received packet min size */ 
#define MAX_PACKET_SIZE   1522  /* RX largest legal size packet with fcs & QoS */ 
#define DM9000_PKT_MAX    3072  /* TX 1 packet max size without 4-byte CRC */ 
//------------------------------------------------------------------------- 
unsigned char ether_addr[6]={ 0x01, 0x60, 0x6E, 0x11, 0x02, 0x0F  }; 
//------------------------------------------------------------------------- 
void          iow(unsigned int reg, unsigned int data); 
unsigned int  ior(unsigned int reg); 
void          phy_write(unsigned int reg, unsigned int value); 
/* DM9000_init I/O routine */ 
unsigned int  DM9000_init (void); 
/* Transmit One Packet TX I/O routine */ 
unsigned int  TransmitPacket(unsigned char *data_ptr,unsigned int tx_len); 
/* Receive One Packet I/O routine */ 
unsigned int  ReceivePacket (unsigned char *data_ptr,unsigned int *rx_len); 
//------------------------------------------------------------------------- 
 
#endif