📄 cs8900.h
字号:
#define EEPROM_WRITE_EN 0x00F0#define EEPROM_WRITE_DIS 0x0000#define EEPROM_WRITE_CMD 0x0100#define EEPROM_READ_CMD 0x0200// Receive Header of each packet in receive area of memory for DMA-Mode#define RBUF_EVENT_LOW 0x0000 // Low byte of RxEvent#define RBUF_EVENT_HIGH 0x0001 // High byte of RxEvent#define RBUF_LEN_LOW 0x0002 // Length of received data - low byte#define RBUF_LEN_HI 0x0003 // Length of received data - high byte#define RBUF_HEAD_LEN 0x0004 // Length of this header// typedefs// constants// prototypes
#include "nic.h"
unsigned int cs8900BeginPacketRetreive(void);
void cs8900RetreivePacketData(u08* packet, unsigned int packetLength);
void cs8900EndPacketRetreive(void);
void cs8900Init(void);
void cs8900Write(unsigned char address, unsigned char data);
unsigned char cs8900Read(unsigned char address);
void cs8900Write16(unsigned char address, unsigned short data);
unsigned short cs8900Read16(unsigned char address);
void cs8900WriteReg(unsigned short address, unsigned short data);
unsigned short cs8900ReadReg(unsigned short address);
void cs8900CopyToFrame(unsigned char *source, unsigned short size);
void cs8900CopyFromFrame(unsigned char *dest, unsigned short size);
u08 cs8900LinkStatus(void);
void cs8900IORegDump(void);
void cs8900RegDump(void);
#endif
//@}
/****************
// CS8900 device register definitions
// Crystal ESIA product id.
#define CS8900_ESIA_ID (0x630e)
//IO Registers.
#define CS8900_IO_RX_TX_DATA_PORT0 (0x0000)
#define CS8900_IO_TX_TX_DATA_PORT1 (0x0002)
#define CS8900_IO_TxCMD (0x0004)
#define CS8900_IO_TxLength (0x0006)
#define CS8900_IO_ISQ (0x0008)
#define CS8900_IO_PACKET_PAGE_PTR (0x000a)
#define CS8900_IO_PP_DATA_PORT0 (0x000c)
#define CS8900_IO_PP_DATA_PORT1 (0x000e)
* Packet Page Registers.
* Bus Interface Registers.
#define CS8900_PP_PROD_ID (0x0000)
#define CS8900_PP_IO_BASE (0x0020)
#define CS8900_PP_INT (0x0022)
#define CS8900_PP_DMA_CHANNEL (0x0024)
#define CS8900_PP_DMA_SOF (0x0026)
#define CS8900_PP_DMA_FRM_CNT (0x0028)
#define CS8900_PP_DMA_RX_BCNT (0x002a)
#define CS8900_PP_MEM_BASE (0x002c)
#define CS8900_PP_BPROM_BASE (0x0030)
#define CS8900_PP_BPROM_AMASK (0x0034)
#define CS8900_PP_EEPROM_CMD (0x0040)
#define CS8900_PP_EEPROM_DATA (0x0042)
#define CS8900_PP_RX_FRAME_BCNT (0x0050)
* Configuration and Control Registers.
#define CS8900_PP_RxCFG (0x0102)
#define CS8900_PP_RxCTL (0x0104)
#define CS8900_PP_TxCFG (0x0106)
#define CS8900_PP_TxCMD_READ (0x0108)
#define CS8900_PP_BufCFG (0x010a)
#define CS8900_PP_LineCFG (0x0112)
#define CS8900_PP_SelfCTL (0x0114)
#define CS8900_PP_BusCTL (0x0116)
#define CS8900_PP_TestCTL (0x0118)
* Status and Event Registers.
#define CS8900_PP_ISQ (0x0120)
#define CS8900_PP_RxEvent (0x0124)
#define CS8900_PP_TxEvent (0x0128)
#define CS8900_PP_BufEvent (0x012c)
#define CS8900_PP_RxMISS (0x0130)
#define CS8900_PP_TxCol (0x0132)
#define CS8900_PP_LineST (0x0134)
#define CS8900_PP_SelfST (0x0136)
#define CS8900_PP_BusST (0x0138)
#define CS8900_PP_TDR (0x013c)
* Initiate Transmit Registers.
#define CS8900_PP_TxCMD (0x0144)
#define CS8900_PP_TxLength (0x0146)
* Address Filter Registers.
#define CS8900_PP_LAF (0x0150)
#define CS8900_PP_IA (0x0158)
* Frame Location.
#define CS8900_PP_RxStatus (0x0400)
#define CS8900_PP_RxLength (0x0402)
#define CS8900_PP_RxFrameLoc (0x0404)
#define CS8900_PP_TxFrameLoc (0x0a00)
* Bit Definitions of Registers.
* IO Packet Page Pointer.
#define CS8900_PPP_AUTO_INCREMENT (0x8000)
* Reg 3. Receiver Configuration.
#define CS8900_RX_CONFIG_SKIP_1 (1 << 6)
#define CS8900_RX_CONFIG_STREAM_ENABLE (1 << 7)
#define CS8900_RX_CONFIG_RX_OK (1 << 8)
#define CS8900_RX_CONFIG_RX_DMA (1 << 9)
#define CS8900_RX_CONFIG_RX_AUTO_DMA (1 << 10)
#define CS8900_RX_CONFIG_BUFFER_CRC (1 << 11)
#define CS8900_RX_CONFIG_CRC_ERROR (1 << 12)
#define CS8900_RX_CONFIG_RUNT (1 << 13)
#define CS8900_RX_CONFIG_EXTRA_DATA (1 << 14)
* Reg 4. Receiver Event.
#define CS8900_RX_EVENT_HASH_IA_MATCH (1 << 6)
#define CS8900_RX_EVENT_DRIBBLE_BITS (1 << 7)
#define CS8900_RX_EVENT_RX_OK (1 << 8)
#define CS8900_RX_EVENT_HASHED (1 << 9)
#define CS8900_RX_EVENT_IA (1 << 10)
#define CS8900_RX_EVENT_BROADCAST (1 << 11)
#define CS8900_RX_EVENT_CRC_ERROR (1 << 12)
#define CS8900_RX_EVENT_RUNT (1 << 13)
#define CS8900_RX_EVENT_EXTRA_DATA (1 << 14)
* Reg 5. Receiver Control.
#define CS8900_RX_CTRL_HASH_IA_MATCH (1 << 6)
#define CS8900_RX_CTRL_PROMISCUOUS (1 << 7)
#define CS8900_RX_CTRL_RX_OK (1 << 8)
#define CS8900_RX_CTRL_MULTICAST (1 << 9)
#define CS8900_RX_CTRL_INDIVIDUAL (1 << 10)
#define CS8900_RX_CTRL_BROADCAST (1 << 11)
#define CS8900_RX_CTRL_CRC_ERROR (1 << 12)
#define CS8900_RX_CTRL_RUNT (1 << 13)
#define CS8900_RX_CTRL_EXTRA_DATA (1 << 14)
* Reg 7. Transmit Configuration.
#define CS8900_TX_CONFIG_LOSS_OF_CARRIER (1 << 6)
#define CS8900_TX_CONFIG_SQ_ERROR (1 << 7)
#define CS8900_TX_CONFIG_TX_OK (1 << 8)
#define CS8900_TX_CONFIG_OUT_OF_WINDOW (1 << 9)
#define CS8900_TX_CONFIG_JABBER (1 << 10)
#define CS8900_TX_CONFIG_ANY_COLLISION (1 << 11)
#define CS8900_TX_CONFIG_16_COLLISION (1 << 15)
* Reg 8. Transmit Event.
#define CS8900_TX_EVENT_LOSS_OF_CARRIER (1 << 6)
#define CS8900_TX_EVENT_SQ_ERROR (1 << 7)
#define CS8900_TX_EVENT_TX_OK (1 << 8)
#define CS8900_TX_EVENT_OUT_OF_WINDOW (1 << 9)
#define CS8900_TX_EVENT_JABBER (1 << 10)
#define CS8900_TX_EVENT_16_COLLISIONS (1 << 15)
* Reg 9. Transmit Command Status.
#define CS8900_TX_CMD_STATUS_TX_START_5 (0 << 6)
#define CS8900_TX_CMD_STATUS_TX_START_381 (1 << 6)
#define CS8900_TX_CMD_STATUS_TX_START_1021 (2 << 6)
#define CS8900_TX_CMD_STATUS_TX_START_ENTIRE (3 << 6)
#define CS8900_TX_CMD_STATUS_FORCE (1 << 8)
#define CS8900_TX_CMD_STATUS_ONE_COLLISION (1 << 9)
#define CS8900_TX_CMD_STATUS_INHIBIT_CRC (1 << 12)
#define CS8900_TX_CMD_STATUS_TX_PAD_DISABLED (1 << 13)
* Reg B. Buffer Configuration.
#define CS8900_BUFFER_CONFIG_SW_INT (1 << 6)
#define CS8900_BUFFER_CONFIG_RX_DMA_DONE (1 << 7)
#define CS8900_BUFFER_CONFIG_RDY_FOR_TX (1 << 8)
#define CS8900_BUFFER_CONFIG_TX_UNDERRUN (1 << 9)
#define CS8900_BUFFER_CONFIG_RX_MISSED (1 << 10)
#define CS8900_BUFFER_CONFIG_RX_128_BYTES (1 << 11)
#define CS8900_BUFFER_CONFIG_TX_COL_OVF (1 << 12)
#define CS8900_BUFFER_CONFIG_RX_MISSED_OVF (1 << 13)
#define CS8900_BUFFER_CONFIG_RX_DEST_MATCH (1 << 15)
* Reg C. Buffer Event.
#define CS8900_BUFFER_EVENT_SW_INT (1 << 6)
#define CS8900_BUFFER_EVENT_RX_DMA_DONE (1 << 7)
#define CS8900_BUFFER_EVENT_RDY_FOR_TX (1 << 8)
#define CS8900_BUFFER_EVENT_TX_UNDERRUN (1 << 9)
#define CS8900_BUFFER_EVENT_RX_MISSED (1 << 10)
#define CS8900_BUFFER_EVENT_RX_128_BYTES (1 << 11)
#define CS8900_BUFFER_EVENT_RX_DEST_MATCH (1 << 15)
* Reg 13. Line Control.
#define CS8900_LINE_CTRL_RX_ON (1 << 6)
#define CS8900_LINE_CTRL_TX_ON (1 << 7)
#define CS8900_LINE_CTRL_AUI (1 << 8)
#define CS8900_LINE_CTRL_10BASET (0 << 9)
#define CS8900_LINE_CTRL_AUTO_AUI_10BASET (1 << 9)
#define CS8900_LINE_CTRL_MOD_BACKOFF (1 << 11)
#define CS8900_LINE_CTRL_POLARITY_DISABLED (1 << 12)
#define CS8900_LINE_CTRL_2_PART_DEF_DISABLED (1 << 13)
#define CS8900_LINE_CTRL_LO_RX_SQUELCH (1 << 14)
* Reg 14. Line Status.
#define CS8900_LINE_STATUS_LINK_OK (1 << 7)
#define CS8900_LINE_STATUS_AUI (1 << 8)
#define CS8900_LINE_STATUS_10_BASE_T (1 << 9)
#define CS8900_LINE_STATUS_POLARITY_OK (1 << 12)
#define CS8900_LINE_STATUS_CRS (1 << 14)
* Reg 15. Self Control.
#define CS8900_SELF_CTRL_RESET (1 << 6)
#define CS8900_SELF_CTRL_SW_SUSPEND (1 << 8)
#define CS8900_SELF_CTRL_HW_SLEEP (1 << 9)
#define CS8900_SELF_CTRL_HW_STANDBY (1 << 10)
#define CS8900_SELF_CTRL_HC0E (1 << 12)
#define CS8900_SELF_CTRL_HC1E (1 << 13)
#define CS8900_SELF_CTRL_HCB0 (1 << 14)
#define CS8900_SELF_CTRL_HCB1 (1 << 15)
* Reg 16. Self Status.
#define CS8900_SELF_STATUS_3_3_V (1 << 6)
#define CS8900_SELF_STATUS_INITD (1 << 7)
#define CS8900_SELF_STATUS_SIBUST (1 << 8)
#define CS8900_SELF_STATUS_EEPROM_PRESENT (1 << 9)
#define CS8900_SELF_STATUS_EEPROM_OK (1 << 10)
#define CS8900_SELF_STATUS_EL_PRESENT (1 << 11)
#define CS8900_SELF_STATUS_EE_SIZE (1 << 12)
* Reg 17. Bus Control.
#define CS8900_BUS_CTRL_RESET_RX_DMA (1 << 6)
#define CS8900_BUS_CTRL_USE_SA (1 << 9)
#define CS8900_BUS_CTRL_MEMORY_ENABLE (1 << 10)
#define CS8900_BUS_CTRL_DMA_BURST (1 << 11)
#define CS8900_BUS_CTRL_IOCHRDYE (1 << 12)
#define CS8900_BUS_CTRL_RX_DMA_SIZE (1 << 13)
#define CS8900_BUS_CTRL_ENABLE_INT (1 << 15)
* Reg 18. Bus Status.
#define CS8900_BUS_STATUS_TX_BID_ERROR (1 << 7)
#define CS8900_BUS_STATUS_RDY_FOR_TX_NOW (1 << 8)
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -