📄 cs8900.h
字号:
/******************************************************************************
*
* System On Chip(SOC)
*
* Copyright (c) 2002 Software Center, Samsung Electronics, Inc.
* All rights reserved.
*
* This software is the confidential and proprietary information of Samsung
* Electronics, Inc("Confidential Information"). You Shall not disclose such
* Confidential Information and shall use it only in accordance with the terms
* of the license agreement you entered into Samsung.
*
*-----------------------------------------------------------------------------
*
* S3C2410 BSP
*
* cs8900dbg.h : EBOOT CS8900 ETHDBG Driver Header
*
* @author zartoven@samsung.com (SOC, SWC, SAMSUNG Electronics)
*
* @date 2002/04/09
*
* Log:
* 2002/04/09 Start
*
******************************************************************************
*/
#ifndef __CS8900DBG_H__
#define __CS8900DBG_H__
/*
* Bus interface registers 总线接口寄存器组
*/
#define PKTPG_EISA_NUMBER 0x0000 //登记扩展工业标准结构号码1
#define PKTPG_PRDCT_ID_CODE 0x0002 //登记扩展工业标准结构号码2 产品ID 号
//该寄存器包含一个对每一个芯片唯一的32位ID号,系统通过读取这个寄存器来确定是那个厂商的产品
#define PKTPG_IO_BASE_ADDR 0x0020 //该寄存器的值描述了芯片在系统中的起始的 IO 地址
#define PKTPG_INTERRUPT_NUMBER 0x0022 //该寄存器用于确定芯片的中断设置,对于I/O模式来说该寄存器的值应为 0
#define PKTPG_DMA_CHANNEL_NUMBER 0x0024 //DMA通道寄存器
#define PKTPG_DMA_START_OF_FRAME 0x0026 //DMA关键帧偏移量寄存器
#define PKTPG_DMA_FRAME_COUNT 0x0028 //DMA帧计数域寄存器
#define PKTPG_RX_DMA_BYTE_COUNT 0x002a //DMA字节计数器
#define PKTPG_MEMORY_BASE_ADDR 0x002c //内存起始地址
#define PKTPG_BOOT_PROM_BASE_ADDR 0x0030 //可编程序的只读存储器起始地址
#define PKTPG_BOOT_PROM_ADDR_MASK 0x0034 //Boot PROM Address Mask
#define PKTPG_EEPROM_COMMAND 0x0040 //EEPROM Command
#define PKTPG_EEPROM_DATA 0x0042 //EEPROM Date
#define PKTPG_RX_FRAME_BYTE_COUNT 0x0050 //该寄存器描述了系统在当前帧中读了多少个字节,在读的过程中该寄存器的值是增长的.
/*
* Status and control registers 状态和控制寄存器组
*/
#define PKTPG_RX_CFG 0x0102 /*控制CS8900接收到特定数据报后会引发接收中断*/
#define PKTPG_RX_CTL 0x0104 /*控制CS8900接收特定的数据报,设置RXTCL的初值为0D05H,接收网络上的广播或者目标地址同本地物理地址相同的正确数据报*/
#define PKTPG_TX_CFG 0x0106 /*传输配置寄存器*/
#define PKTPG_TX_CMD_ST 0x0108 /*传输命令状态寄存器*/
#define PKTPG_BUF_CFG 0x010a /*缓冲区配置寄存器*/
#define PKTPG_LINE_CTL 0x0112 /*决定CS8900的基本配置和物理接口.在本系统中,设置初值为00D3H,选择物理接口为10BASE-T,并使能设备的发送和接收控制位*/
#define PKTPG_SELF_CTL 0x0114 /*自身控制寄存器,该寄存器控制 LED 灯的输出和使芯片工作在低功耗状态*/
#define PKTPG_BUS_CTL 0x0116 /*可控制芯片的I/O接口的一些操作.设置初值为8017H,打开CS8900的中断总控制位*/
#define PKTPG_TEST_CTL 0x0118 /*测试控制寄存器*/
#define PKTPG_ISQ 0x0120 /*网卡芯片中断状态寄存器,内部映射接收中断状态寄存器和发送中断状态寄存器的内容*/
#define PKTPG_RX_EVENT 0x0124 /*接收事件寄存器*/
#define PKTPG_TX_EVENT 0x0128 /*传输事件寄存器*/
#define PKTPG_BUF_EVENT 0x012c /*计数传输冲突的帧寄存器,该寄存器给出了发送和接收缓冲区的状态*/
#define PKTPG_RX_MISS 0x0130 /*计数接收时漏掉的帧寄存器*/
#define PKTPG_TX_COL 0x0132 /* 用于纪录当前帧发送时遇到的帧冲突次数 当被读取后 该寄存器被清 0*/
#define PKTPG_LINE_ST 0x0134 /*行状态寄存器,用于报告以太网物理接口的状态*/
#define PKTPG_SELF_ST 0x0136 /*自身状态寄存器,该寄存器报告 EEPROM 接口的状态和初始化过程*/
#define PKTPG_BUS_ST 0x0138 /*总线状态寄存器*/
#define PKTPG_AUI_TIME_DOMAIN_REF 0x013c /*AUI时域发射计寄存器*/
/*
* Initiate transmit registers 发送初始化寄存器组
*/
#define PKTPG_TX_CMD_REQ 0x0144 /*传送命令请求寄存器,该寄存器用于控制CS8900 如何发送下一帧*/
#define PKTPG_TX_LENGTH 0x0146 /*传送长度寄存器,该寄存器用于告诉 CS8900 该帧的长度*/
/*
* Address filter registers 地址过滤寄存器组
*/
#define PKTPG_LOGICAL_ADDR_FILTER 0x0150 /*逻辑地址过滤寄存器(哈希表),用于判断要发送的以太网帧的逻辑地址是否正确*/
#define PKTPG_INDIVISUAL_ADDR 0x0158 /*处始地址寄存器(IEEE地址),保存唯一的 IEEE 48-bit 地址*/
/*
* Frame locations 接收/发送帧地址
*/
#define PKTPG_RX_STATUS 0x0400 //RXStatus(receive statue)
#define PKTPG_RX_LENGTH 0x0402 //RXLength(receive lenght,in bytes)
#define PKTPG_RX_FRAME 0x0404 //Receive Frame Location
#define PKTPG_TX_FRAME 0x0a00 //Ttansmit Frame Location
/*
* Bit masks
*/
#define SELF_CTL_RESET 0x0040
#define SELF_CTL_LOW_BITS 0x0015
#define SELF_ST_INITD 0x0080
#define SELF_ST_SIBUSY 0x0100
#define BUS_ST_TX_BID_ERR 0x0080
#define BUS_ST_RDY_4_TX_NOW 0x0100
#define BUS_CTL_MEMORY_E 0x0400
#define BUS_CTL_ENABLE_IRQ 0x8000
#define BUS_CTL_IOCHRDYE 0x1000
#define BUS_CTL_LOW_BITS 0x0017
#define TX_CMD_START_5 0x0000
#define TX_CMD_START_381 0x0040
#define TX_CMD_START_1021 0x0080
#define TX_CMD_START_ALL 0x00c0
#define TX_CMD_FORCE 0x0100
#define TX_CMD_ONECOLL 0x0200
#define TX_CMD_NO_CRC 0x1000
#define TX_CMD_NO_PAD 0x2000
#define TX_CMD_LOW_BITS 0x0009
#define ISQ_REG_NUM 0x003f
#define ISQ_REG_CONTENT 0xffc0
#define RX_EVENT_RX_OK 0x0100
#define RX_EVENT_HASHED 0x0200
#define RX_EVENT_IND_ADDR 0x0400
#define RX_EVENT_BROADCAST 0x0800
#define RX_CTL_RX_OK_A 0x0100
#define RX_CTL_IND_ADDR_A 0x0400
#define RX_CTL_BROADCAST_A 0x0800
#define RX_CTL_LOW_BITS 0x0005
#define RX_CFG_SKIP 0x0040
#define RX_CFG_RX_OK_I_E 0x0100
#define RX_CFG_LOW_BITS 0x0003
#define BUF_EVENT_RDY_4_TX 0x0100
#define BUF_CFG_RDY_4_TX_I_E 0x0100
#define BUF_CFG_LOW_BITS 0x000b
#define TX_CFG_LOSS_OF_CRC_I_E 0x0040
#define TX_CFG_SQE_ERROR_I_E 0x0080
#define TX_CFG_TX_OK_I_E 0x0100
#define TX_CFG_OUT_OF_WINDOW_I_E 0x0200
#define TX_CFG_JABBER_I_E 0x0400
#define TX_CFG_ANYCOLL_I_E 0x0800
#define TX_CFG_16_COLL_I_E 0x8000
#define TX_CFG_ALL 0x8fc0
#define TX_CFG_LOW_BITS 0x0007
#define TX_EVENT_LOSS_OF_CRS 0x0040
#define TX_EVENT_SQE_ERROR 0x0080
#define TX_EVENT_TX_OK 0x0100
#define TX_EVENT_OUT_OF_WINDOW 0x0200
#define TX_EVENT_JABBER 0x0400
#define TX_EVENT_NUM_TX_COLL 0x7800
#define TX_EVENT_16_COLL 0x8000
/* One of the values of 0, 1, 2, 3 */
#define INTERRUPT_NUMBER 0x0000
#define LINE_CTL_10_BASE_T 0x0000
#define LINE_CTL_AUI_ONLY 0x0100
#define LINE_CTL_RX_ON 0x0040
#define LINE_CTL_TX_ON 0x0080
#define LINE_CTL_MOD_BACKOFF 0x0800
#define LINE_CTL_LOW_BITS 0x0013
#define LINE_ST_LINK_OK 0x0080
#define LINE_ST_AUI 0x0100
#define LINE_ST_10BT 0x0200
#define LINE_ST_POLARITY_OK 0x1000
#define LINE_ST_CRS 0x4000
#define TEST_CTL_FDX 0x4000
#define TEST_CTL_LOW_BITS 0x0019
/*
* Register numbers
*/
#define REG_NUM_RX_EVENT 0x0004
#define REG_NUM_TX_EVENT 0x0008
#define REG_NUM_BUF_EVENT 0x000c
#define REG_NUM_RX_MISS 0x0010
#define REG_NUM_TX_COL 0x0012
#define IO_ADDR_SFT 0
/*
* I/O mode register mapping
* I/O模式寄存器映射
*/
#define IO_RX_TX_DATA_0 (0x0000<<IO_ADDR_SFT) /*接收/传送数据(Port0)*/
#define IO_RX_TX_DATA_1 (0x0002<<IO_ADDR_SFT) /*接收/传送数据(Port1)*/
#define IO_TX_CMD (0x0004<<IO_ADDR_SFT) /*TXCMD(传送命令)*/
#define IO_TX_LENGTH (0x0006<<IO_ADDR_SFT) /*传送长度*/
#define IO_ISQ (0x0008<<IO_ADDR_SFT) /*中断状态队列*/
#define IO_PACKET_PAGE_POINTER (0x000a<<IO_ADDR_SFT) /*PackPage 指针*/
#define IO_PACKET_PAGE_DATA_0 (0x000c<<IO_ADDR_SFT) /*PackPage 数据(Port0)*/
#define IO_PACKET_PAGE_DATA_1 (0x000e<<IO_ADDR_SFT) /*PackPage 数据(Port1)*/
/* CS8900 signature read from PacketPage Pointer port at reset */
#define CS8900_SIGNATURE 0x3000
#define CS8900_SIGMSK 0x3000
#define CS8900_EISA_NUMBER 0x630e /* CS8900 EISA number */
#define CS8900_PRDCT_ID 0x0000 /* CS8900 product identification Code 产生CS8900 ID 号*/
#define CS8900_PRDCT_ID_MASK 0xe0ff
#endif /* __CS8900DBG_H__ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -