📄 ax88796.h
字号:
#define EECLK 0x80
//******************************************************************
//* ASIX 88796 L GPI BITS DEFINITIONS
//******************************************************************
#define GPI2 0x40
#define GPI1 0x20
#define GPI0 0x10
#define I_SPD 0x04
#define I_DPX 0x02
#define I_LINK 0x01
//******************************************************************
//* ASIX 88796 L TCR BITS DEFINITIONS
//******************************************************************
#define FDU 0x80 // full duplex
#define PD 0x40 // pad disable
#define RLO 0x20 // retry of late collisions
#define TCR_LB1 0x04 // loopback 1
#define LB0 0x02 // loopback 0
#define CRC 0x01 // generate CRC
//******************************************************************
//* ASIX 88796 L INITIAL REGISTER VALUES
//******************************************************************
// RCR : INT trigger active high and Accept Broadcast enet packets
#define RCR_INIT (INTT | AB)
#define DCR_INIT 0x00 // was 0x58 for realtek RTL8019
// TCR : default transmit operation - CRC is generated
#define TCR_INIT 0x00
// IMR : interrupt enabled for receive and overrun events
#define IMR_INIT 0x11 // PRX and OVW interrupt enabled
// buffer boundaries - transmit has 6 256-byte pages
// receive has 26 256-byte pages
// entire available packet buffer space is allocated
#define TXSTART_INIT 0x40
#define RXSTART_INIT 0x46
#define RXSTOP_INIT 0x60
/*****************************************************************************
* RTL8019setupPorts(void);
*
* Created By: Louis Beaudoin
* Date: September 21, 2002
* Description: Sets up the ports used for communication with the RTL8019 NIC
* (data bus, address bus, read, write, and reset)
*****************************************************************************/
void ax88796SetupPorts(void);
/*****************************************************************************
* readRTL(RTL_ADDRESS)
* Args: unsigned char RTL_ADDRESS - register offset of RTL register
* Created By: Louis Beaudoin
* Date: September 21, 2002
* Description: Reads byte from RTL8019 register
*
* Notes - If using the External SRAM Interface, performs a read from
* address MEMORY_MAPPED_AX88796_OFFSET + (RTL_ADDRESS<<8)
* The address is sent in the non-multiplxed upper address port so
* no latch is required.
*
* If using general I/O ports, the data port is assumed to already be
* an input, and is left as an input port when done
*
*****************************************************************************/
u08 ax88796Read(u08 address);
/*****************************************************************************
* writeRTL( RTL_ADDRESS, RTL_DATA )
* Args: 1. unsigned char RTL_ADDRESS - register offset of RTL register
* 2. unsigned char RTL_DATA - data to write to register
* Created By: Louis Beaudoin
* Date: September 21, 2002
* Description: Writes byte to RTL8019 register.
*
* Notes - If using the External SRAM Interface, performs a write to
* address MEMORY_MAPPED_AX88796_OFFSET + (RTL_ADDRESS<<8)
* The address is sent in the non-multiplxed upper address port so
* no latch is required.
*
* If using general I/O ports, the data port is left in the input
* state with pullups enabled
*
*****************************************************************************/
void ax88796Write(u08 address, u08 data);
/*****************************************************************************
* initRTL8019(void);
*
* Created By: Louis Beaudoin
* Date: September 21, 2002
* Description: Sets up the RTL8019 NIC hardware interface, and initializes
* the buffers and configuration of the NIC
*****************************************************************************/
void ax88796Init(void);
/*****************************************************************************
* RTL8019beginPacketSend(unsigned int packetLength)
* Args: unsigned int - length of the Ethernet frame (see note)
* Created By: Louis Beaudoin
* Date: September 21, 2002
* Description: Sets up the NIC to send a packet
* Notes: The NIC will not send packets less than 60 bytes long (the min
* Ethernet frame length. The transmit length is automatically
* increased to 60 bytes if packetLength is < 60
*****************************************************************************/
void ax88796BeginPacketSend(unsigned int packetLength);
/*****************************************************************************
* RTL8019sendPacketData(unsigned char * localBuffer, unsigned int length)
* Args: 1. unsigned char * localBuffer - Pointer to the beginning of
* the buffer to load into the NIC
* 2. unsigned char length - number of bytes to copy to
* the NIC
* Created By: Louis Beaudoin
* Date: September 21, 2002
* Description: Loads length # of bytes from a local buffer to the transmit
* packet buffer
* Notes: RTL8019beginPacketSend() must be called before sending
* any data.
* Several calls to RTL8019retreivePacketData() may be made to
* copy packet data from different buffers
*****************************************************************************/
void ax88796SendPacketData(unsigned char * localBuffer, unsigned int length);
/*****************************************************************************
* RTL8019endPacketSend()
* Created By: Louis Beaudoin
* Date: September 21, 2002
* Description: Ends a packet send operation and instructs the NIC to transmit
* the frame over the network
*****************************************************************************/
void ax88796EndPacketSend(void);
/*****************************************************************************
* overrun(void);
*
* Created By: Louis Beaudoin
* Date: September 21, 2002
* Description: "Canned" receive buffer overrun function originally from
* a National Semiconductor appnote
* Notes: This function must be called before retreiving packets from
* the NIC if there is a buffer overrun
*****************************************************************************/
void ax88796Overrun(void);
/*****************************************************************************
* processRTL8019Interrupt(void);
*
* Created By: Louis Beaudoin
* Date: September 21, 2002
* Description: Reads the NIC's ISR register looking for a receive buffer
* overrun - which is then handled.
* Notes: The function does not need to be called in response to an
* interrupt. The function can be polled and the NIC's INT
* line not used. This function should be called before
* attempting to retreive a packet from the NIC
*****************************************************************************/
void ax88796ProcessInterrupt(void);
/*****************************************************************************
* unsigned char RTL8019ReceiveEmpty(void);
*
* Returns: non-zero (true) if buffer is empty, zero if data in buffer
* Created By: Louis Beaudoin
* Date: September 21, 2002
* Description: Compares the BNRY and CURR receive buffer pointers to see if
* there is a packet in the receive buffer
* ** Removed as of version 0.60.1 **
*****************************************************************************/
//unsigned char RTL8019ReceiveEmpty(void);
/*****************************************************************************
* unsigned int RTL8019beginPacketRetreive()
* Returns: unsigned int - length of the Ethernet frame (see note)
* Created By: Louis Beaudoin
* Date: September 21, 2002
* Description: Sets up the NIC to retreive a packet
* Notes: The size returned is the size of all the data in the Ethernet
* frame minus the Ethernet checksum. This may include unused
* trailer bytes appended if data is less than the minimum
* Ethernet frame length (60 bytes). A size of zero indicates
* there are no packets available.
* A call to RTL8019beginPacketRetreive() must be followed by a
* call to RTL8019endPacketRetreive() regardless if data is
* retreived, unless 0 is returned.
*****************************************************************************/
unsigned int ax88796BeginPacketRetreive(void);
/*****************************************************************************
* RTL8019retreivePacketData(unsigned char * localBuffer, unsigned int length)
* Args: 1. unsigned char * localBuffer - Pointer to the beginning of
* the buffer to store the ethernet frame.
* 2. unsigned char length - number of bytes to copy to
* localBuffer
* Created By: Louis Beaudoin
* Date: September 21, 2002
* Description: Loads length # of bytes from the receive packet buffer to
* a local buffer
* Notes: RTL8019beginPacketRetreive() must be called before retreiving
* any data.
* Several calls to RTL8019retreivePacketData() may be made to
* copy packet data to different buffers
*****************************************************************************/
void ax88796RetreivePacketData(unsigned char * localBuffer,
unsigned int length);
/*****************************************************************************
* RTL8019endPacketRetreive()
* Created By: Louis Beaudoin
* Date: September 21, 2002
* Description: Ends a packet retreive operation begun by calling
* RTL8019beginPacketRetreive(). The NIC buffer space used by
* the retreived packet is freed
* Notes: A packet may be removed from the buffer without being read
* by calling RTL8019endPacketRetreive() after
* RTL8019beginPacketRetreive().
*****************************************************************************/
void ax88796EndPacketRetreive(void);
//******************************************************************
//* WRITE MII REGISTERS
//******************************************************************
void ax88796WriteMii(unsigned char phyad,unsigned char regad,unsigned int mii_data);
//******************************************************************
//* READ MII REGISTERS
//******************************************************************
unsigned int ax88796ReadMii(unsigned char phyad,unsigned char regad);
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -