diff options
Diffstat (limited to 'system/alpha/h/DEC21040.h')
-rw-r--r-- | system/alpha/h/DEC21040.h | 409 |
1 files changed, 0 insertions, 409 deletions
diff --git a/system/alpha/h/DEC21040.h b/system/alpha/h/DEC21040.h deleted file mode 100644 index 993964ac2..000000000 --- a/system/alpha/h/DEC21040.h +++ /dev/null @@ -1,409 +0,0 @@ -#ifndef __DECCHIP21040_H_LOADED -#define __DECCHIP21040_H_LOADED -/***************************************************************************** - - Copyright © 1993, 1994 Digital Equipment Corporation, - Maynard, Massachusetts. - - All Rights Reserved - -Permission to use, copy, modify, and distribute this software and its -documentation for any purpose and without fee is hereby granted, provided -that the copyright notice and this permission notice appear in all copies -of software and supporting documentation, and that the name of Digital not -be used in advertising or publicity pertaining to distribution of the software -without specific, written prior permission. Digital grants this permission -provided that you prominently mark, as not part of the original, any -modifications made to this software or documentation. - -Digital Equipment Corporation disclaims all warranties and/or guarantees -with regard to this software, including all implied warranties of fitness for -a particular purpose and merchantability, and makes no representations -regarding the use of, or the results of the use of, the software and -documentation in terms of correctness, accuracy, reliability, currentness or -otherwise; and you rely on the software, documentation and results solely at -your own risk. - -******************************************************************************/ - -/* - * $Id: DEC21040.h,v 1.1.1.1 1997/10/30 23:27:13 verghese Exp $ - */ - -/* - * MODULE DESCRIPTION: - * - * Parameters and logicals for AM79C960 drivers in EB64 monitor - * - * HISTORY: - * - * $Log: - * - */ - -#ifdef NEEDPCI - -#include "pci.h" - -/* The embedded Ethernet controller on the EB66 and EB64+ is a - * DECchip 21040 PCI device. - * - * Please see the PCI and DECchip 21040 literature for definitive lists - * and further detail. - * - */ - - -/***************************************************************************** - * General * - *****************************************************************************/ - -/* - * Maximum number of DECchip 21040s supported in the EB66 and - * 64+ monitors. This is assuming 1 embedded device and 2 PCI - * slots. Of course this changes if a bridge card is used. - */ - -#define DECCHIP21040_MAX_DEVICES 3 - -/***************************************************************************** - * ROM ID * - *****************************************************************************/ -/* - * As the ROM ID is only used by the DECchip 21040, then this information - * can go here. Note that this information is the same for both EB66 - * and EB64P. - * - * To read this device you must first write which page you want - * into the PAGE_REGISTER. The bit settings look like: - * - * SxxA AAAA - * - * Where S = 0 = BBRAM, S = 1 = Ethernet ID ROM. - * - * A AAAA select the high order address lines of the BBRAM - * and are ignored for the Ethernet ID ROM. - */ -#define PAGE_REGISTER 0xc00 -#define SELECT_ROMID 0x80 -#define ROMID_BASE 0x800 - -/***************************************************************************** - * CSRs, these exist in PCI I/O space * - *****************************************************************************/ -/* - * CSR offsets. - */ - -#define CSR0 0x0000 /* Bus Mode Register */ -#define CSR1 0x0008 /* Transmit Poll Demand */ -#define CSR2 0x0010 /* Receive Poll Demand */ -#define CSR3 0x0018 /* Rx Ring Base Address */ -#define CSR4 0x0020 /* Tx Ring Base Address */ -#define CSR5 0x0028 /* Status Register */ -#define CSR6 0x0030 /* Serial command register */ -#define CSR7 0x0038 /* Interrupt Mask register */ -#define CSR8 0x0040 /* Missed Frame counter */ -#define CSR9 0x0048 /* ENET ROM register */ -#define CSR10 0x0050 /* Data Diagnostic register */ -#define CSR11 0x0058 /* Full duplex register */ -#define CSR12 0x0060 /* SIA Status register */ -#define CSR13 0x0068 /* SIA connectivity register */ -#define CSR14 0x0070 /* SIA Tx Rx Register */ -#define CSR15 0x0078 /* SIA General register */ - -#define TDES1_ADD 0x0088 -#define RDES1_ADD 0x00B8 -#define PCI_DIAG 0x0178 - -/* - * CSR bit definitions (see the DECchip 21040 manual for details). - */ -#define CSR0_CAL 0x0000C000 /* 15:14 Cache alignment */ -#define CSR0_PBL 0x00003F00 /* 13:18 Programmable burst length */ -#define CSR0_BLE 0x00000080 /* Big/Little endian */ -#define CSR0_DSL 0x0000007C /* Descriptor Skip Length */ -#define CSR0_BAR 0x00000020 /* Bus Arbitration */ -#define CSR0_SWR 0x00000001 /* Software Reset */ - -#define CSR1_TPD 0x00000001 /* Transmit Poll Demand */ - -#define CSR2_RPD 0x00000001 /* Receive Poll Demand */ - -#define CSR3_RXB 0xFFFFFFFC /* Rx ring base address */ - -#define CSR4_TXB 0xFFFFFFFC /* Tx ring base address */ - -#define CSR5_EB 0x03800000 /* 25:23 Error Bits */ -#define CSR5_TS 0x00700000 /* 22:20 Transmission Process State */ -#define CSR5_RS 0x000E0000 /* 19:17 Receive Process State */ -#define CSR5_NIS 0x00010000 /* Normal interrupt Summary */ -#define CSR5_AIS 0x00008000 /* Abnormal interrupt Summary */ -#define CSR5_SE 0x00002000 /* System Error */ -#define CSR5_LNF 0x00001000 /* link fail */ -#define CSR5_FD 0x00000800 /* Full duplex short frame received */ -#define CSR5_AT 0x00000400 /* AUI/TP switch */ -#define CSR5_RWT 0x00000200 /* Receive watchdog time-out */ -#define CSR5_RPS 0x00000100 /* Receive process stopped */ -#define CSR5_RU 0x00000080 /* Receive buffer unavailable */ -#define CSR5_RI 0x00000040 /* Receive Interrupt */ -#define CSR5_UNF 0x00000020 /* Transmit underflow */ -#define CSR5_TJT 0x00000008 /* Transmit jabber timeout */ -#define CSR5_TU 0x00000004 /* Transmit buffer unavailable */ -#define CSR5_TPS 0x00000002 /* Transmit process stopped */ -#define CSR5_TI 0x00000001 /* Transmit interrupt */ - -#define CSR5_TS_SUSPENDED 0x00600000 /* 110: Transmit process suspended */ -#define CSR5_RS_SUSPENDED 0x00080000 /* 100: Receive process suspended */ - -#define CSR6_TR 0x0000C000 /* 15:14 Threshold control bits */ -#define CSR6_ST 0x00002000 /* Start/stop transmission */ -#define CSR6_FC 0x00001000 /* Force collision mode */ -#define CSR6_OM 0x00000C00 /* 11:10 Operating Mode */ -#define CSR6_FD 0x00000200 /* Full duplex operating mode */ -#define CSR6_FKD 0x00000100 /* Flaky oscillator disable */ -#define CSR6_PM 0x00000080 /* Pass All Multicast */ -#define CSR6_PR 0x00000040 /* Promiscuous mode */ -#define CSR6_SB 0x00000020 /* Start/Stop Backoff counter */ -#define CSR6_IF 0x00000010 /* Inverse filtering */ -#define CSR6_PB 0x00000008 /* Pass Bad frames */ -#define CSR6_SR 0x00000002 /* Start/Stop Receive */ -#define CSR6_HP 0x00000001 /* Hash/Perfect receive filtering mode - */ - -#define CSR7_NIM 0x00010000 /* Normal interrupt summary mask */ -#define CSR7_AIM 0x00008000 /* Abnormal interrupt summary mask */ -#define CSR7_SEM 0x00002000 /* System Error Mask */ -#define CSR7_LFM 0x00001000 /* Link fail mask */ -#define CSR7_FDM 0x00000800 /* Full Duplex mask */ -#define CSR7_ATM 0x00000400 /* AUI/TP switch mask */ -#define CSR7_RWM 0x00000200 /* Receive watchdog timeout mask */ -#define CSR7_RSM 0x00000100 /* Receive stopped mask */ -#define CSR7_RUM 0x00000080 /* Receive buffer unavailable mask */ -#define CSR7_RIM 0x00000040 /* Receive interrupt mask */ -#define CSR7_UNM 0x00000020 /* Underflow interrupt mask */ -#define CSR7_TJM 0x00000008 /* transmit jabber timeout mask */ -#define CSR7_TUM 0x00000004 /* transmit buffer unavailable mask */ -#define CSR7_TSM 0x00000002 /* transmission stopped mask */ -#define CSR7_TIM 0x00000001 /* transmit interrupt mask */ - -#define CSR8_MFO 0x00010000 /* Missed frame overflow */ -#define CSR8_MFC 0x0000FFFF /* Missed frame counter */ - -#define CSR9_DT 0x000000FF /* 7:0 Data */ -#define CSR9_DN 0x80000000 /* 31 Data not valid, 0 = valid */ - -#define CSR11_FD 0x0000FFFF /* 15:0 Full duplex auto configuration - * value */ -#define CSR12_PAUI 0x00000001 -#define CSR12_NCR 0x00000002 -#define CSR12_LKF 0x00000004 - -/* - * CSR13 - SIA programming. - */ -#define CSR13_SRL 0x00000001 /* SIA Reset r/w */ -#define CSR13_PS 0x00000002 /* Pin AUI/TP Selection r/w */ -#define CSR13_CAC 0x00000004 /* CSR Auto Configuration */ -#define CSR13_AUI 0x00000008 /* 10 Base T or AUI */ -#define CSR13_EDP 0x00000010 /* SIA PLL external input enable */ -#define CSR13_ENI 0x00000020 /* Encoder Input Mux */ -#define CSR13_SIM 0x00000040 /* Serial Interface Input Mux */ - -/***************************************************************************** - * Macros * - *****************************************************************************/ -#define _21040WriteCSR(device,csr,value) \ - (outportl((device)->PCI_IO_Base + (csr), (value))) - -#define _21040ReadCSR(device,csr) \ - (inportl((device)->PCI_IO_Base + (csr))) - -#define _21040ValidBuffer(buffer,size) \ - ( \ - (((unsigned long)(buffer) & 0x3) == 0) \ - && \ - ((unsigned long)(buffer) <= 0xFFFFFFFF) \ - && \ - (PCIValidAddress((unsigned char *) (buffer))) \ - && \ - (PCIValidAddress((unsigned char *) (buffer) + (size))) \ - ) - -/***************************************************************************** - * PCI Constants * - *****************************************************************************/ -/* - * The configuration registers for DECchip 21040 exist in PCI configuration - * space. The definitions for the standard fields are in pci.h, these - * definitions are 21040 specific. - */ -#define CFID 0x0000 /* Configuration ID */ -#define CFCS 0x0004 /* Configuration command/status */ -#define CFRV 0x0008 /* Configuration revision */ -#define CFLT 0x000C /* Configuration latency timer */ -#define CBIO 0x0010 /* Configuration base IO address */ - -#define CBIO_MIO 0x00000001 /* Memory I/O. 1 = I/O. */ -#define CSR_SIZE 0x400 /* you can work this out by writing - all F's to CBIO */ - -/***************************************************************************** - * Setup Frame, if needed * - *****************************************************************************/ -#define SETUP_FRAME_NEEDED 1 /* Do we need a setup frame? */ -#define SETUP_FRAME_SIZE 192 -#define SETUP_PHYSICAL_ADDRESS_OFFSET 156 -#define SETUP_HASH_FILTER_SIZE 128 -/***************************************************************************** - * Data Structures * - *****************************************************************************/ -/* - * TX descriptor. Must be longword aligned in memory. - */ -typedef struct { - union { - unsigned int tdes0; - struct { - unsigned int DE : 1; /* deferred */ - unsigned int UF : 1; /* underflow error */ - unsigned int LF : 1; /* link fail */ - unsigned int CC : 4; /* 6:3 Collision count */ - unsigned int HF : 1; /* Heartbeat fail */ - unsigned int EC : 1; /* excessive collisions */ - unsigned int LC : 1; /* late collisions */ - unsigned int NC : 1; /* no carrier */ - unsigned int LO : 1; /* loss of carrier */ - unsigned int unused_1 : 2; /* 13:12 */ - unsigned int TO : 1; /* transmit jabber timeout */ - unsigned int ES : 1; /* error summary */ - unsigned int unused_12 : 15; - /* 30:16 */ - unsigned int OWN : 1; /* Own bit, 1 = 21040 */ - } s_tdes0; - } u_tdes0; - union { - unsigned int tdes1; - struct { - unsigned int TBS1 : 11; /* 10:0 transmit buffer size 1 */ - unsigned int TBS2 : 11; /* 21:11 transmit buffer size 2 */ - unsigned int HP : 1; /* Hash/Perfect filtering */ - unsigned int DPD : 1; /* disable padding */ - unsigned int TCH : 1; /* Second address chained */ - unsigned int TER : 1; /* transmit end of ring */ - unsigned int AC : 1; /* add CRC disable */ - unsigned int SET : 1; /* setup packet */ - unsigned int IV : 1; /* inverse filtering */ - unsigned int FS : 1; /* First segment */ - unsigned int LS : 1; /* last segment */ - unsigned int IC : 1; /* interrupt on completion */ - - } s_tdes1; - } u_tdes1; - unsigned int tdes2; - unsigned int tdes3; -} DECCHIP_21040_TX_BD; - -/* - * Receive descriptor. Must be longword aligned in memory. - */ -typedef struct { - union { - unsigned int rdes0; - struct { - unsigned int OF : 1; /* overflow */ - unsigned int CE : 1; /* CRC error */ - unsigned int DB : 1; /* dribbling bit */ - unsigned int unused_1 : 1; /* 3 */ - unsigned int RJ : 1; /* Receive watchdog */ - unsigned int FT : 1; /* frame type */ - unsigned int CS : 1; /* collision seen */ - unsigned int TL : 1; /* frame too long */ - unsigned int LS : 1; /* last descriptor */ - unsigned int FS : 1; /* First descriptor */ - unsigned int MF : 1; /* Multicast frame */ - unsigned int RF : 1; /* runt frame */ - unsigned int DT : 2; /* 13:12 Data type */ - unsigned int LE : 1; /* length error */ - unsigned int ES : 1; /* error summary */ - unsigned int FL : 15; /* Frame Length */ - unsigned int OWN : 1; /* Own bit 1 = 21040 */ - } s_rdes0; - } u_rdes0; - union { - unsigned int rdes1; - struct { - unsigned int RBS1 : 11; /* 10:0 Buffer Size 1 */ - unsigned int RBS2 : 11; /* 21:11 Buffer Size 2 */ - unsigned int unused_1 : 2; /* 23:22 */ - unsigned int RCH : 1; /* Second address chained */ - unsigned int RER : 1; /* Receive end of ring */ - unsigned int unused_2 : 6; /* 31:26 */ - } s_rdes1; - } u_rdes1; - unsigned int rdes2; - unsigned int rdes3; -} DECCHIP_21040_RX_BD; - -/* - * Each device has a block of counters associated with it. - */ -typedef struct counters { -/* - * Transmit counters. - */ - unsigned int tx_restarted; - unsigned int p_tx; - unsigned int b_tx; - unsigned int tx_err_UF; - unsigned int tx_err_EC; - unsigned int tx_err_LC; - unsigned int tx_err_NC; - unsigned int tx_err_LO; - unsigned int tx_err_TO; - unsigned int tx_err_LF; -/* - * Receive couters. - */ - unsigned int rx_restarted; - unsigned int p_rx; - unsigned int mf_rx; - unsigned int b_rx; - unsigned int rx_err_OF; - unsigned int rx_err_CE; - unsigned int rx_err_CS; - unsigned int rx_err_TL; - unsigned int rx_err_LE; - unsigned int rx_err_RF; -} counters_t; - -/* - * Describe what a particular DECchip 21040 looks like. - */ -typedef struct DECchip_21040_device { - unsigned int device; /* DBM device number */ - unsigned int index; /* Index into static structures */ - PCIDevice_t *pci; /* The PCI device */ - unsigned long PCI_IO_Base; /* Swizzled IO base address */ - unsigned int rx_index; /* Next RX buffer */ - unsigned int tx_index; /* Next TX buffer */ - struct counters *counters; /* block of counter information */ - mac_addr hw_address; /* This device's h/w address */ - char *setup_frame; /* setup frame */ - struct { - unsigned int exists : 1; /* Does this device exist? */ - unsigned int allocated : 1; /* Is this device in use? */ - unsigned int initialised : 1; /* Has the device been initialised? */ - unsigned int loopback : 1; /* loopback mode selected */ - unsigned int setup_frame : 1; /* setup frame needed? */ - unsigned int hw_valid : 1; /* Is the hardware address valid? */ - } flags; -} DECchip_21040_device_t; - -/* /ether/DEC21040.c */ -extern DECchip_21040_device_t * DECchip_21040_device_find(int device_no); -extern int DECchip_21040_device_register(int device_no); -extern void DECchip_21040_device_init_module(void ); - -#endif /* NEEDPCI */ -#endif /* __DECCHIP21040_H_LOADED */ |