📄 at91rm9200_ether.h
字号:
//==========================================================================//// at91rm9200_ether.h////////==========================================================================//####ECOSGPLCOPYRIGHTBEGIN####// -------------------------------------------// This file is part of eCos, the Embedded Configurable Operating System.// Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.//// eCos is free software; you can redistribute it and/or modify it under// the terms of the GNU General Public License as published by the Free// Software Foundation; either version 2 or (at your option) any later version.//// eCos is distributed in the hope that it will be useful, but WITHOUT ANY// WARRANTY; without even the implied warranty of MERCHANTABILITY or// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License// for more details.//// You should have received a copy of the GNU General Public License along// with eCos; if not, write to the Free Software Foundation, Inc.,// 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.//// As a special exception, if other files instantiate templates or use macros// or inline functions from this file, or you compile this file and link it// with other works to produce a work based on this file, this file does not// by itself cause the resulting work to be covered by the GNU General Public// License. However the source code for this file must still be made available// in accordance with section (3) of the GNU General Public License.//// This exception does not invalidate any other reasons why a work based on// this file might be covered by the GNU General Public License.//// Alternative licenses for eCos may be arranged by contacting Red Hat, Inc.// at http://sources.redhat.com/ecos/ecos-license/// -------------------------------------------//####ECOSGPLCOPYRIGHTEND####//==========================================================================//#####DESCRIPTIONBEGIN####//// Author(s): Jiun-Shian H. <asky@syncom.com.tw>// Contributors: Jiun-Shian H. <asky@syncom.com.tw>// Date: 2005-08-10// Purpose:// Description:////####DESCRIPTIONEND####////========================================================================*/#ifndef AT91RM9200_ETHER_H#define AT91RM9200_ETHER_H/*--------------------------------------------------------------------------*/#if 0// Tx Frame Descriptor's control bits -- Refer the KS32C5000 Manual Page 7-15#define FRM_OWNERSHIP_BDMA 0x80000000 // 0:CPU, 1:BDMA#define FRM_OWNERSHIP_CPU 0x7fffffff // 0:CPU, 1:BDMA#define TXFDCON_PADDING_MODE 0x00#define TXFDCON_NO_PADDING_MODE 0x01#define TXFDCON_NO_CRC_MODE 0x02#define TXFDCON_CRC_MODE 0x00#define TXFDCON_MAC_TX_INT_EN 0x04#define TXFDCON_LITTLE_ENDIAN 0x08#define TXFDCON_BIG_ENDIAN 0x00#define TXFDCON_SRC_ADDR_DEC 0x00#define TXFDCON_SRC_ADDR_INC 0x10#define TXFDCON_WIDGET_ALIGN00 0x00 // No Invalid bytes#define TXFDCON_WIDGET_ALIGN01 0x01 // 1 Invalid byte#define TXFDCON_WIDGET_ALIGN10 0x10 // 2 Invalid bytes#define TXFDCON_WIDGET_ALIGN11 0x11 // 3 Invalid bytes// Tx Frame descriptor's Status#define TXFDSTAT_EX_COLL 0x0010 // Excessive Collision#define TXFDSTAT_DEFFER 0x0020 // Transmit deffered#define TXFDSTAT_PAUSED 0x0040 // Paused : holding data transmission DMA to MAC#define TXFDSTAT_INT_TX 0x0080 // Interrupt on Transmit#define TXFDSTAT_UNDER 0x0100 // Underrun */#define TXFDSTAT_DEFER 0x0200 // Mac defers for Max_DEFERRAL:=0.32768ms // for 100Mbits/s, := 3.2768ms for 10Mbits/s#define TXFDSTAT_NCARR 0x0400 // No Carrier sense is detected during the // entire transmission of a packet from SFD // to CRC#define TXFDSTAT_SQ_ERR 0x0800 // fake collision signal didn't come from // PHY for 1.6us.#define TXFDSTAT_LATE_COLL 0x1000 // Late collision#define TXFDSTAT_PAR 0x2000 // Transmit Parity Error#define TXFDSTAT_COMP 0x4000 // MAC transmit or discards one packet#define TXFDSTAT_HALTED 0x8000 // Transmission was halted by clearing MACTXCON_TX_EN..// Rx Frame descriptor's Status#define RXFDSTAT_OV_MAX 0x0008 // Over Maximum Size#define RXFDSTAT_CTL_RECD 0x0020 // set if packet received is a // MAC control frame.#define RXFDSTAT_INT_RX 0x0040 // Interrupt on Receive#define RXFDSTAT_10STAT 0x0080 // set if packet was received via the // 10bits interface reset if packet // was received via MII#define RXFDSTAT_ALIGN_ERR 0x0100 // Alignment Error#define RXFDSTAT_CRC_ERR 0x0200 // CRC error#define RXFDSTAT_OVERFLOW 0x0400 // MAC receive FIFO was full when it // needed to store a received byte#define RXFDSTAT_LONG_ERR 0x0800 // received a frame longer than 1518bytes#define RXFDSTAT_PAR 0x2000 // MAC receive FIFO has detected a parity error#define RXFDSTAT_GOOD 0x4000 // successfully received a packet with no errors#define RXFDSTAT_HALTED 0x8000 // Transmission was halted by clearing MACTXCON_TX_EN...// BDMARXCON : 0x9004// Buffered DMA Receiver Control Register#define BDMARXCON_BRST 0x00001F // BDMA Rx Burst Size * BDMARXCON_BRST#define BDMARXCON_STP_SKP 0x00020 // BDMA Rx Stop/Skip Frame or Interrupt(=1)#define BDMARXCON_MA_INC 0x00040 // BDMA Rx Memory Address Inc/Dec#define BDMARXCON_DIE 0x00080 // BDMA Rx Every Received Frame Interrupt Enable#define BDMARXCON_NLIE 0x00100 // BDMA Rx NULL List Interrupt Enable#define BDMARXCON_NOIE 0x00200 // BDMA Rx Not Owner Interrupt Enable#define BDMARXCON_MSOIE 0x00400 // BDMA Rx Maximum Size over Interrupr Enable#define BDMARXCON_LITTLE 0x00800 // BDMA Rx Big/Little Endian#define BDMARXCON_BIG 0x00000 // BDMA Rx Big/Little Endian#define BDMARXCON_WA00 0x00000 // BDMA Rx Word Alignment- no invalid byte#define BDMARXCON_WA01 0x01000 // BDMA Rx Word Alignment- one invalid byte#define BDMARXCON_WA10 0x02000 // BDMA Rx Word Alignment- two invalid byte#define BDMARXCON_WA11 0x03000 // BDMA Rx Word Alignment- three invalid byte#define BDMARXCON_EN 0x04000 // BDMA Rx Enable#define BDMARXCON_RESET 0x08000 // BDMA Rx Reset#define BDMARXCON_RX_EMPT 0x10000 // BDMA Rx Buffer empty interrupt#define BDMARXCON_EARLY 0x20000 // BDMA Rx Early notify Interrupt// BDMATXCON : 0x9000// Buffered DMA Trasmit Control Register#define BDMATXCON_BRST 0x000F // BDMA Tx Burst Size = 16#define BDMATXCON_STP_SKP 0x0020 // BDMA Tx Stop/Skip Frame or Interrupt in case // of not Owner the current frame#define BDMATXCON_CPIE 0x0080 // BDMA Tx Complete to send control // packet Enable#define BDMATXCON_NOIE 0x0200 // BDMA Tx Buffer Not Owner#define BDMATXCON_TX_EMPTY 0x0400 // BDMA Tx Buffer Empty Interrupt#define BDMATXCON_TX_NOIE 0x0200 // BDMA Tx not owner (queue empty)#define BDMATXCON_TX_NULL 0x0100 // BDMA dscr pointer null// BDMA Tx buffer can be moved to the MAC Tx IO// when the new frame comes in.#define BDMATXCON_MSL000 0x00000 // No wait to fill the BDMA#define BDMATXCON_MSL001 0x00800 // wait to fill 1/8 of the BDMA#define BDMATXCON_MSL010 0x01000 // wait to fill 2/8 of the BDMA#define BDMATXCON_MSL011 0x01800 // wait to fill 3/8 of the BDMA#define BDMATXCON_MSL100 0x02000 // wait to fill 4/8 of the BDMA#define BDMATXCON_MSL101 0x02800 // wait to fill 5/8 of the BDMA#define BDMATXCON_MSL110 0x03000 // wait to fill 6/8 of the BDMA#define BDMATXCON_MSL111 0x03800 // wait to fill 7/8 of the BDMA#define BDMATXCON_EN 0x04000 // BDMA Tx Enable#define BDMATXCON_RESET 0x08000 // BDMA Rx Reset// BDMASTAT : 0x9014// Buffered DMA Status Register#define BDMASTAT_RX_RDF 0x00001 // BDMA Rx Done Every Received Frame#define BDMASTAT_RX_NL 0x00002 // BDMA Rx NULL List#define BDMASTAT_RX_NO 0x00004 // BDMA Rx Not Owner#define BDMASTAT_RX_MSO 0x00008 // BDMA Rx Maximum Size Over#define BDMASTAT_RX_EMPTY 0x00010 // BDMA Rx Buffer Empty#define BDMASTAT_RX_SEARLY 0x00020 // Early Notify#define BDMASTAT_RX_FRF 0x00080 // One more frame data in BDMA receive buffer#define BDMASTAT_TX_CCP 0x10000 // BDMA Tx Complete to send Control Packet#define BDMASTAT_TX_NL 0x20000 // BDMA Tx Null List#define BDMASTAT_TX_NO 0x40000 // BDMA Tx Not Owner#define BDMASTAT_TX_EMPTY 0x100000// BDMA Tx Buffer Empty// MACON : 0xa000// MAC Control Register#define MACON_HALT_REG 0x0001 // stop transmission and reception // after completion of ant current packets#define MACON_HALT_IMM 0x0002 // Stop transmission and reception immediately#define MACON_SW_RESET 0x0004 // reset all Ethernet controller state machines // and FIFOs#define MACON_FULL_DUP 0x0008 // allow transmission to begin while reception // is occurring#define MACON_MAC_LOOP 0x0010 // MAC loopback#define MACON_CONN_M00 0x0000 // Automatic-default#define MACON_CONN_M01 0x0020 // Force 10Mbits endec#define MACON_CONN_M10 0x0040 // Force MII (rate determined by MII clock#define MACON_LOOP10 0x0080 // Loop 10Mbps#define MACON_MISS_ROLL 0x0400 // Missed error counter rolled over#define MACON_EN_MISS_ROLL 0x2000 // Interrupt when missed error counter rolls // over#define MACON_LINK10 0x8000 // Link status 10Mbps// CAMCON : 0xa004// CAM control register#define CAMCON_STATION_ACC 0x0001 // Accept any packet with a unicast station // address#define CAMCON_GROUP_ACC 0x0002 // Accept any packet with multicast-group // station address#define CAMCON_BROAD_ACC 0x0004 // Accept any packet with a broadcast station // address#define CAMCON_NEG_CAM 0x0008 // 0: Accept packets CAM recognizes, // reject others // 1: reject packets CAM recognizes, // accept others#define CAMCON_COMP_EN 0x0010 // Compare Enable mode// MACTXCON : 0xa008// Transmit Control Register#define MACTXCON_TX_EN 0x0001 // transmit Enable#define MACTXCON_TX_HALT 0x0002 // Transmit Halt Request#define MACTXCON_NO_PAD 0x0004 // suppress Padding#define MACTXCON_NO_CRC 0x0008 // Suppress CRC#define MACTXCON_FBACK 0x0010 // Fast Back-off#define MACTXCON_NO_DEF 0x0020 // Disable the defer counter#define MACTXCON_SD_PAUSE 0x0040 // Send Pause#define MACTXCON_MII10_EN 0x0080 // MII 10Mbps mode enable#define MACTXCON_EN_UNDER 0x0100 // Enable Underrun#define MACTXCON_EN_DEFER 0x0200 // Enable Deferral#define MACTXCON_EN_NCARR 0x0400 // Enable No Carrier#define MACTXCON_EN_EXCOLL 0x0800 // interrupt if 16 collision occur // in the same packet#define MACTXCON_EN_LATE_COLL 0x1000 // interrupt if collision occurs after // 512 bit times(64 bytes times)#define MACTXCON_ENTX_PAR 0x2000 // interrupt if the MAC transmit FIFO // has a parity error#define MACTXCON_EN_COMP 0x4000 // interrupt when the MAC transmits or // discards one packet// MACTXSTAT : 0xa00c// Transmit Status Register#define MACTXSTAT_EX_COLL 0x0010 // Excessive collision#define MACTXSTAT_DEFFERED 0x0020 // set if 16 collisions occur for same packet#define MACTXSTAT_PAUSED 0x0040 // packet waited because of pause during // transmission#define MACTXSTAT_INT_TX 0x0080 // set if transmission of packet causes an // interrupt condiftion#define MACTXSTAT_UNDER 0x0100 // MAC transmit FIFO becomes empty during // transmission#define MACTXSTAT_DEFER 0x0200 // MAC defers for MAC deferral#define MACTXSTAT_NCARR 0x0400 // No carrier sense detected during the // transmission of a packet#define MACTXSTAT_SIG_QUAL 0x0800 // Signal Quality Error#define MACTXSTAT_LATE_COLL 0x1000 // a collision occures after 512 bit times#define MACTXSTAT_PAR 0x2000 // MAC transmit FIFO has detected a parity error#define MACTXSTAT_COMP 0x4000 // MAC transmit or discards one packet#define MACTXSTAT_HALTED 0x8000 // Transmission was halted by clearing // MACTXCON_TX_EN or Halt immedite// MACRXCON : 0xa010// Receive Control Register#define MACRXCON_RX_EN 0x0001#define MACRXCON_HALT 0x0002#define MACRXCON_LONG_EN 0x0004#define MACRXCON_SHORT_EN 0x0008#define MACRXCON_STRIP_CRC 0x0010#define MACRXCON_PASS_CTL 0x0020#define MACRXCON_IGNORE_CRC 0x0040#define MACRXCON_EN_ALIGN 0x0100#define MACRXCON_EN_CRC_ERR 0x0200#define MACRXCON_EN_OVER 0x0400#define MACRXCON_EN_LONG_ERR 0x0800#define MACRXCON_EN_RX_PAR 0x2000#define MACRXCON_EN_GOOD 0x4000// MACRXSTAT : 0xa014// Receive Status Register#define MACRXSTAT_CTL_RECD 0x0020#define MACRXSTAT_INT_RX 0x0040#define MACRXSTAT_10STAT 0x0080#define MACRXSTAT_ALLIGN_ERR 0x0100#define MACRXSTAT_CRC_ERR 0x0200#define MACRXSTAT_OVERFLOW 0x0400#define MACRXSTAT_LONG_ERR 0x0800#define MACRXSTAT_PAR 0x2000#define MACRXSTAT_GOOD 0x4000#define MACRXSTAT_HALTED 0x8000/*--------------------------------------------------------------------------*/#endif /* 0/1 *//* ........................................................................ *//* Davicom 9161 PHY */#define MII_DM9161_ID ((unsigned int)0x0181b880)/* Davicom specific registers */#define MII_DSCR_REG 16#define MII_DSCSR_REG 17#define MII_DSINTR_REG 21/* Intel LXT971A PHY */#define MII_LXT971A_ID ((unsigned int)0x001378E0)/* Intel specific registers */#define MII_ISINTE_REG 18#define MII_ISINTS_REG 19#define MII_LEDCTRL_REG 20/* Realtek RTL8201 PHY */#define MII_RTL8201_ID ((unsigned int)0x00008200)/* Broadcom BCM5221 PHY */#define MII_BCM5221_ID ((unsigned int)0x004061e0)/* Broadcom specific registers */#define MII_BCMINTR_REG 26/* National Semiconductor DP83847 */#define MII_DP83847_ID ((unsigned int)0x20005c30)/* Generic MII registers. */#define MII_BMCR 0x00 /* Basic mode control register */#define MII_BMSR 0x01 /* Basic mode status register */#define MII_PHYSID1 0x02 /* PHYS ID 1 */#define MII_PHYSID2 0x03 /* PHYS ID 2 */#define MII_ADVERTISE 0x04 /* Advertisement control reg */#define MII_LPA 0x05 /* Link partner ability reg */#define MII_EXPANSION 0x06 /* Expansion register */#define MII_CTRL1000 0x09 /* 1000BASE-T control */#define MII_STAT1000 0x0a /* 1000BASE-T status */#define MII_DCOUNTER 0x12 /* Disconnect counter */#define MII_FCSCOUNTER 0x13 /* False carrier counter */#define MII_NWAYTEST 0x14 /* N-way auto-neg test reg */#define MII_RERRCOUNTER 0x15 /* Receive error counter */#define MII_SREVISION 0x16 /* Silicon revision */#define MII_RESV1 0x17 /* Reserved... */#define MII_LBRERROR 0x18 /* Lpback, rx, bypass error */#define MII_PHYADDR 0x19 /* PHY address */#define MII_RESV2 0x1a /* Reserved... */#define MII_TPISTATUS 0x1b /* TPI status for 10mbps */#define MII_NCONFIG 0x1c /* Network interface config *//* ........................................................................ */#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -