saa9730.h

来自「开放源码实时操作系统源码.」· C头文件 代码 · 共 365 行 · 第 1/2 页

H
365
字号
#ifndef CYGONCE_DEVS_ETH_MIPS_ATLAS_SAA9730_H
#define CYGONCE_DEVS_ETH_MIPS_ATLAS_SAA9730_H
/*==========================================================================
//
//      saa9730.h
//      Philips SAA9730 IO Chip Ethernet Interface
//
//
//==========================================================================
//####ECOSGPLCOPYRIGHTBEGIN####
// -------------------------------------------
// This file is part of eCos, the Embedded Configurable Operating System.
// Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
// Copyright (C) 2003 Nick Garnett <nickg@calivar.com>
//
// 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 the copyright
// holders.
// -------------------------------------------
//####ECOSGPLCOPYRIGHTEND####
//==========================================================================
//#####DESCRIPTIONBEGIN####
//
// Author(s):     msalter
// Contributors:  msalter, nickg
// Date:          2000-12-09
// Description:   Definitions for Philips SAA9730 Ethernet module.
//
//####DESCRIPTIONEND####
*/

// QS6612 PHY definitions 

#define PHY_CONTROL                     0
#define PHY_STATUS                      1
#define PHY_REG31                       31

#define PHY_CONTROL_RESET               (1 << 15)
#define PHY_CONTROL_AUTO_NEG            (1 << 12)
#define PHY_CONTROL_RESTART_AUTO_NEG    (1 <<  9)

#define PHY_STATUS_LINK_UP              (1 << 2)

#define PHY_REG31_OPMODE_SHIFT           2
#define PHY_REG31_OPMODE_MSK             (7 << PHY_REG31_OPMODE_SHIFT)

#define OPMODE_AUTONEGOTIATE             0
#define OPMODE_10BASET_HALFDUPLEX        1
#define OPMODE_100BASEX_HALFDUPLEX       2
#define OPMODE_REPEATER_MODE             3
#define OPMODE_UNDEFINED                 4
#define OPMODE_10BASET_FULLDUPLEX        5
#define OPMODE_100BASEX_FULLDUPLEX       6
#define OPMODE_ISOLATE                   7

#define QS6612_PHY_ADDRESS              0
#define PHY_ADDRESS                     QS6612_PHY_ADDRESS

// Number of 6-byte entries in the CAM
#define SAA9730_CAM_ENTRIES                       10

// TX and RX packet size fixed at 2k bytes by hw
#define SAA9730_PACKET_SIZE   2048

// Number of TX buffers = number of RX buffers = 2,
// which is fixed according to HW requirements
#define SAA9730_BUFFERS                           2

// Number of RX packets per RX buffer
#define SAA9730_RXPKTS_PER_BUFFER                2

// Number of TX packets per TX buffer
#define SAA9730_TXPKTS_PER_BUFFER                1

// Minimum packet size
#define SAA9730_MIN_PACKET_SIZE                   60

// owner ship bit
#define SAA9730_BLOCK_OWNED_BY_SYSTEM             0
#define SAA9730_BLOCK_OWNED_BY_HARDWARE           1

// Default Rcv interrupt count
#define SAA9730_DEFAULT_RCV_INTERRUPT_CNT         4

// Default maxium transmit retry
#define SAA9730_DEFAULT_MAX_TXM_RETRY	      16

// Default time out value
#define SAA9730_DEFAULT_TIME_OUT_CNT              200

// MAX map registers
#define SAA9730__MAX_MAP_REGISTERS		      64

// Defines used by Interrupt code
#define  SAA9730_DMA_PACKET_SIZE                  2048
#define  SAA9730_VALID_PACKET                     0xC0000000
#define  SAA9730_FRAME_TYPELEN_OFFSET             12
#define  SAA9730_ETH_MIN_FRAME_SIZE               60
#define  SAA9730_DEST_ADDR_SIZE                   6
#define  SAA9730_SRC_ADDR_SIZE                    6
#define  SAA9730_TYPE_LEN_SIZE                    2

// MAC receive error
#define  SAA9730_MAC_GOOD_RX                      (0x00004000) << 11
#define  SAA9730_MAC_RCV_ALIGN_ERROR              (0x00000100) << 11
#define  SAA9730_MAC_RCV_CRC_ERROR                (0x00000200) << 11
#define  SAA9730_MAC_RCV_OVERFLOW                 (0x00000400) << 11

// This number is arbitrary and can be increased if needed
#define SAA9730_MAX_MULTICAST_ADDRESSES           20 

// SAA9730 Event Manager Registers
#define SAA9730_EVM_ISR         *((volatile unsigned *)(__base + 0x02000))
#define SAA9730_EVM_IER         *((volatile unsigned *)(__base + 0x02004))
#define SAA9730_EVM_IMR         *((volatile unsigned *)(__base + 0x02008))

#define SAA9730_EVM_IER_SW      *((volatile unsigned *)(__base + 0x0202c))

#define SAA9730_EVM_LAN_INT     (1<<16)         // LAN interrupt bit
#define SAA9730_EVM_MASTER      (1<<0)          // Master interrupt bit

//  SAA9730 LAN Registers
#define SAA9730_TXBUFA          *((volatile unsigned *)(__base + 0x20400)) // TX buffer A

#define SAA9730_TXBUFB          *((volatile unsigned *)(__base + 0x20404)) // TX buffer B

#define SAA9730_RXBUFA          *((volatile unsigned *)(__base + 0x20408)) // RX buffer A

#define SAA9730_RXBUFB          *((volatile unsigned *)(__base + 0x2040C)) // RX buffer B

#define SAA9730_PKTCNT          *((volatile unsigned *)(__base + 0x20410)) // Packet count

#define SAA9730_OK2USE          *((volatile unsigned *)(__base + 0x20414)) // OK-to-use
#  define SAA9730_OK2USE_TXA  8 	   
#  define SAA9730_OK2USE_TXB  4 	   
#  define SAA9730_OK2USE_RXA  2 	   
#  define SAA9730_OK2USE_RXB  1 	   

#define SAA9730_DMACTL          *((volatile unsigned *)(__base + 0x20418)) // DMA control
#  define SAA9730_DMACTL_BLKINT           (1 << 31)
#  define SAA9730_DMACTL_MAXXFER_ANY      (0 << 18)
#  define SAA9730_DMACTL_MAXXFER_8        (1 << 18)
#  define SAA9730_DMACTL_MAXXFER_32       (2 << 18)
#  define SAA9730_DMACTL_MAXXFER_64       (3 << 18)
#  define SAA9730_DMACTL_ENDIAN_LITTLE    (0 << 16)
#  define SAA9730_DMACTL_ENDIAN_2143      (1 << 16)
#  define SAA9730_DMACTL_ENDIAN_4321      (2 << 16)
#  define SAA9730_DMACTL_RXINTCNT_SHIFT   8
#  define SAA9730_DMACTL_RXINTCNT_MSK     (0xff << SAA9730_DMACTL_RXINTCNT_SHIFT)
#  define SAA9730_DMACTL_ENTX             (1 << 7)
#  define SAA9730_DMACTL_ENRX             (1 << 6)
#  define SAA9730_DMACTL_RXFULL           (1 << 5)
#  define SAA9730_DMACTL_RXTOINT          (1 << 4)
#  define SAA9730_DMACTL_RXINT            (1 << 3)
#  define SAA9730_DMACTL_TXINT            (1 << 2)
#  define SAA9730_DMACTL_MACTXINT         (1 << 1)
#  define SAA9730_DMACTL_MACRXINT         (1 << 0)

#define SAA9730_TIMOUT          *((volatile unsigned *)(__base + 0x2041C)) // Time out

#define SAA9730_DMASTA          *((volatile unsigned *)(__base + 0x20420)) // DMA status

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?