amd_lance.h
来自「eCos操作系统源码」· C头文件 代码 · 共 533 行 · 第 1/2 页
H
533 行
#ifndef CYGONCE_DEVS_ETH_AMD_LANCE_H#define CYGONCE_DEVS_ETH_AMD_LANCE_H//==========================================================================//// amd_lance.h//// AMD Lance Ethernet chip////==========================================================================//####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####//####BSDCOPYRIGHTBEGIN####//// -------------------------------------------//// Portions of this software may have been derived from OpenBSD or other sources,// and are covered by the appropriate copyright disclaimers included herein.//// -------------------------------------------////####BSDCOPYRIGHTEND####//==========================================================================//#####DESCRIPTIONBEGIN####//// Author(s): jskov, iz// Contributors: jskov, hmt, iz// Date: 2002-07-17// Purpose: Hardware description of AMD Lance series.// Description: ////####DESCRIPTIONEND####////==========================================================================#include <cyg/hal/hal_io.h>//------------------------------------------------------------------------// Get macros from platform header#define __WANT_CONFIG#include CYGDAT_DEVS_ETH_AMD_LANCEPCI_INL#undef __WANT_CONFIG//------------------------------------------------------------------------// Set to perms of:// 0 disables all debug output// 1 for process debug output// 2 for added data IO output: get_reg, put_reg// 4 for packet allocation/free output// 8 for only startup status, so we can tell we're installed OK#define DEBUG 0x0#if DEBUG & 1#define DEBUG_FUNCTION() do { os_printf("%s\n", __FUNCTION__); } while (0)#else#define DEBUG_FUNCTION() do {} while(0)#endif// ------------------------------------------------------------------------// Macros for keeping track of statistics#if defined(ETH_DRV_GET_IF_STATS) || defined (ETH_DRV_GET_IF_STATS_UD)# define KEEP_STATISTICS#endif#ifdef KEEP_STATISTICS# define INCR_STAT( _x_ ) (cpd->stats. _x_ ++)#else# define INCR_STAT( _x_ ) CYG_EMPTY_STATEMENT#endif//------------------------------------------------------------------------// Cache translation#ifndef CYGARC_UNCACHED_ADDRESS# define CYGARC_UNCACHED_ADDRESS(x) (x)#endif//------------------------------------------------------------------------// Address translation#ifndef HAL_PCI_CPU_TO_BUS# error "HAL PCI support must define translation macros"#endif// ------------------------------------------------------------------------// Macros for accessing structure elements#define _SU8( _base_, _offset_) \ *((cyg_uint8 *)((CYG_ADDRWORD)_base_+(_offset_)))#define _SU16( _base_, _offset_) \ *((cyg_uint16 *)((CYG_ADDRWORD)_base_+(_offset_)))#define _SU32( _base_, _offset_) \ *((cyg_uint32 *)((CYG_ADDRWORD)_base_+(_offset_)))#define _SI8( _base_, _offset_) \ *((cyg_int8 *)((CYG_ADDRWORD)_base_+(_offset_)))#define _SI16( _base_, _offset_) \ *((cyg_int16 *)((CYG_ADDRWORD)_base_+(_offset_)))#define _SI32( _base_, _offset_) \ *((cyg_int32 *)((CYG_ADDRWORD)_base_+(_offset_)))// ------------------------------------------------------------------------// Macros for accessing controller registers#ifndef HAL_PCI_IO_READ_UINT8# define HAL_PCI_IO_READ_UINT8(addr, datum) HAL_READ_UINT8(addr, datum)# define HAL_PCI_IO_WRITE_UINT8(addr, datum) HAL_WRITE_UINT8(addr, datum)# define HAL_PCI_IO_READ_UINT16(addr, datum) HAL_READ_UINT16(addr, datum)# define HAL_PCI_IO_WRITE_UINT16(addr, datum) HAL_WRITE_UINT16(addr, datum)# define HAL_PCI_IO_READ_UINT32(addr, datum) HAL_READ_UINT32(addr, datum)# define HAL_PCI_IO_WRITE_UINT32(addr, datum) HAL_WRITE_UINT32(addr, datum)#endif// ------------------------------------------------------------------------// IO map registers#define LANCE_IO_EEPROM 0x00#define LANCE_IO_ID 0x0e#define LANCE_IO_RDP 0x10#define LANCE_IO_RAP 0x12#define LANCE_IO_RESET 0x14#define LANCE_IO_BDP 0x16// The ID of the 79C790 is 0x5757 - that may be different in other// (older) cards.#define LANCE_IO_ID_KEY 0x5757// ------------------------------------------------------------------------// Controller registers come in three sets: CSR, BCR and ANR. Use// high-bits do differentiate, make the put/get functions do the right// thing depending the state of these bits.#define LANCE_RAP_MASK 0x007f//#define LANCE_CSR_FLAG 0x0000 // implied#define LANCE_BCR_FLAG 0x0080#define LANCE_ANR_FLAG 0x0100// CSR registers#define LANCE_CSR_CSCR 0#define LANCE_CSR_IBA0 1#define LANCE_CSR_IBA1 2#define LANCE_CSR_IM 3#define LANCE_CSR_TFC 4#define LANCE_CSR_ECI 5#define LANCE_CSR_LAR0 8#define LANCE_CSR_LAR1 9#define LANCE_CSR_LAR2 10#define LANCE_CSR_LAR3 11#define LANCE_CSR_PAR0 12#define LANCE_CSR_PAR1 13#define LANCE_CSR_PAR2 14#define LANCE_CSR_MODE 15#define LANCE_CSR_BARRL 24#define LANCE_CSR_BARRU 25#define LANCE_CSR_BATRL 30#define LANCE_CSR_BATRU 31#define LANCE_CSR_RRC 72#define LANCE_CSR_TRC 74#define LANCE_CSR_RRLEN 76#define LANCE_CSR_TRLEN 78#define LANCE_CSR_ID_LO 88#define LANCE_CSR_ID_HI 89#define LANCE_CSR_CSCR_ERR 0x8000#define LANCE_CSR_CSCR_RES 0x4000#define LANCE_CSR_CSCR_CERR 0x2000#define LANCE_CSR_CSCR_MISS 0x1000#define LANCE_CSR_CSCR_MERR 0x0800#define LANCE_CSR_CSCR_RINT 0x0400#define LANCE_CSR_CSCR_TINT 0x0200#define LANCE_CSR_CSCR_IDON 0x0100#define LANCE_CSR_CSCR_INTR 0x0080#define LANCE_CSR_CSCR_IENA 0x0040#define LANCE_CSR_CSCR_RXON 0x0020#define LANCE_CSR_CSCR_TXON 0x0010#define LANCE_CSR_CSCR_TDMD 0x0008#define LANCE_CSR_CSCR_STOP 0x0004#define LANCE_CSR_CSCR_STRT 0x0002#define LANCE_CSR_CSCR_INIT 0x0001#define LANCE_CSR_CSCR_EV_MASK 0x007f#define LANCE_CSR_IM_MISSM 0x1000#define LANCE_CSR_IM_MERRM 0x0800#define LANCE_CSR_IM_RINTM 0x0400#define LANCE_CSR_IM_TINTM 0x0200#define LANCE_CSR_IM_IDONM 0x0100#define LANCE_CSR_IM_DXSUFLO 0x0040#define LANCE_CSR_IM_LAPPEN 0x0020#define LANCE_CSR_IM_DXMT2PD 0x0010#define LANCE_CSR_IM_EMBA 0x0008#define LANCE_CSR_IM_BSWP 0x0004#define LANCE_CSR_TFC_TXDPOLL 0x1000#define LANCE_CSR_TFC_APAD_XMT 0x0800#define LANCE_CSR_TFC_ASTRP_RCV 0x0400#define LANCE_CSR_TFC_MFCO 0x0200#define LANCE_CSR_TFC_MFCOM 0x0100#define LANCE_CSR_TFC_UINTCMD 0x0080#define LANCE_CSR_TFC_UINT 0x0040#define LANCE_CSR_TFC_RCVCCO 0x0020#define LANCE_CSR_TFC_RCVCCOM 0x0010#define LANCE_CSR_TFC_TXSTRT 0x0008#define LANCE_CSR_TFC_TXSTRTM 0x0004#define LANCE_CSR_ECI_TOKINTD 0x8000#define LANCE_CSR_ECI_LTINTEN 0x4000#define LANCE_CSR_ECI_SINT 0x0800#define LANCE_CSR_ECI_SINTE 0x0400#define LANCE_CSR_ECI_EXDINT 0x0080#define LANCE_CSR_ECI_EXDINTE 0x0040#define LANCE_CSR_ECI_MPPLBA 0x0020#define LANCE_CSR_ECI_MPINT 0x0010#define LANCE_CSR_ECI_MPINTE 0x0008#define LANCE_CSR_ECI_MPEN 0x0004#define LANCE_CSR_ECI_MPMODE 0x0002#define LANCE_CSR_ECI_SPND 0x0001#define LANCE_CSR_MODE_PROM 0x8000#define LANCE_CSR_MODE_DRCVBC 0x4000#define LANCE_CSR_MODE_DRCVPA 0x2000#define LANCE_CSR_MODE_PORTSEL 0x0180#define LANCE_CSR_MODE_INTL 0x0040#define LANCE_CSR_MODE_DRTY 0x0020#define LANCE_CSR_MODE_FCOLL 0x0010#define LANCE_CSR_MODE_DXMTFCS 0x0008#define LANCE_CSR_MODE_LOOP 0x0004#define LANCE_CSR_MODE_DTX 0x0002#define LANCE_CSR_MODE_DRX 0x0001// BCR registers#define LANCE_BCR_SWSTYLE (20 |LANCE_BCR_FLAG)#define LANCE_BCR_MIIADDR (33 |LANCE_BCR_FLAG)#define LANCE_BCR_MIIDATA (34 |LANCE_BCR_FLAG)#define LANCE_BCR_MIIADDR_PHYAD 0x03e0//----------------------------------------------------------------------------// Receive buffer Descriptor#if 1
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?