summaryrefslogtreecommitdiff
path: root/system/alpha/h/am79c960.h
diff options
context:
space:
mode:
Diffstat (limited to 'system/alpha/h/am79c960.h')
-rw-r--r--system/alpha/h/am79c960.h381
1 files changed, 0 insertions, 381 deletions
diff --git a/system/alpha/h/am79c960.h b/system/alpha/h/am79c960.h
deleted file mode 100644
index 727d99292..000000000
--- a/system/alpha/h/am79c960.h
+++ /dev/null
@@ -1,381 +0,0 @@
-#ifndef __AM79C960_H_LOADED
-#define __AM79C960_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: am79c960.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: am79c960.h,v $
- * Revision 1.1.1.1 1997/10/30 23:27:13 verghese
- * current 10/29/97
- *
- * Revision 1.8 1994/12/12 21:31:59 cruz
- * Fixed bug in TMD3 constants
- *
- * Revision 1.7 1994/08/05 20:13:47 fdh
- * Updated Copyright header and RCS $Id: identifier.
- *
- * Revision 1.6 1994/06/28 20:08:21 fdh
- * Modified filenames and build precedure to fit into a FAT filesystem.
- *
- * Revision 1.5 1994/06/24 15:26:49 rusling
- * Fixed initialization alignment problems.
- *
- * Revision 1.4 1994/06/20 14:18:59 fdh
- * Fixup header file preprocessor #include conditionals.
- *
- * Revision 1.3 1994/06/17 19:34:01 fdh
- * Clean-up...
- *
- * Revision 1.2 1994/06/03 20:11:11 fdh
- * Replaced shorts declared in bitfields to ints.
- *
- * Revision 1.1 1993/08/06 10:10:05 berent
- * Initial revision
- *
- *
- */
-
-
-
-/* The embedded Ethernet controller on the EB64 is an AMD Am79C960 device.
- *
- * This device integrates an Am7990 LANCE Ethernet controller with an ISA
- * bus interface plus all the serial interface logic bar some discrete
- * termination and isolation transformers for AUI (10base5) and twisted
- * pair (10baseT) connections.
- *
- * The AUI port on EB64 is connected to an Am7996 thinwire transceiver to
- * provide a 10base2 port (BNC) as well as the twisted pair (MMJ)
- * connectivity.
- *
- * The device is programmed in a similar but not identical fashion to the
- * LANCE. The following programming differences and features are noted:
- *
- * A RAP/RDP mechanism is used for register access like the LANCE, but with
- * a much larger register set:
- *
- * Initialisation block now part of on-chip register set with new
- * ...features added to the mode register. This can be set up in
- * ...memory and copied by the device using the csr0_INIT bit, or
- * ...programmed directly to the device using the extended CSR map.
- *
- * CSR3 completely changed - interrupt mask and enabling bits for
- * ...new features
- *
- * CSR3 can be accessed while the "LANCE" running
- *
- * A register added for controlling the ISA bus DMA profile eg. FIFO
- * ...watermarks for DMA loads and stores, TX transmission start
- * ...point wrt data in TX FIFO, DMA burstsizes.
- *
- * Registers to overrule ring sizes in initialisation blocks allowing
- * ...ring sizes from 1-64k entries. CSR76 for RX; CSR78 for TX
- *
- * Timer and ID registers
- *
- * Missed pkt and RX collision counters
- *
- * A similar RAP/IDP mechanism is used to program ISA DMA signal timing, ISA
- * bus configuration, bits, and the functionality for the three LED drives
- * provided.
- *
- * The Am79C960 *must* use a 16-bit DMA path, but can use an 8-bit path for
- * CSR (IO) access. It also supports access to a sixteen byte area for
- * keeping the MAC address in PROM. This is always byte-wide access, as is a
- * shared memory mode to a larger local address space, not used on EB64.
- *
- * EB64 accesses to the 79C960 are through the VL82C486 ISA controller. All
- * CSR accesses should be done as 16-bit words, with the VL82C486 taking care
- * of the packing/unpacking issue. Enet PROM accesses are done as byte
- * accesses. The EB64 memory controller will perform read_modify_write cycles
- * into main memory to correctly merge the bytes/words, and preserve longword
- * parity.
- *
- *
- * Please see the Am7990 and Am79C960 literature for definitive lists and
- * further detail.
- *
- * PLEASE NOTE: LANCE is used in many definitions for historical reasons.
- */
-
-
- /* Maximum number of AMD79C960's supported in the EB64 monitor */
-
-#define AM79C960_MAX_DEVICES 2
-
-
- /* Base addresses supported for 79C960 in ISA address space */
-
-#define EMBEDDED_79C960_BASE 0x360 /* IOAM pins = 0b11 */
-#define OPTION_79C960_BASE 0x300 /* IOAM pins = 0b00 */
-
- /* Assigned interrupt numbers for 8259 controller */
-
-#define EMBEDDED_79C960_INT 9
-#define OPTION_79C960_INT 12
-
- /* Assigned mask numbers for enabling appropriate DMA channel */
-
-#define EMBEDDED_79C960_DMA 1
-#define OPTION_79C960_DMA 2
-
-
- /* CSR access offsets for 79C960 */
-
-#define HW_ADDR_OFFSET 0 /* The hardware address is at the base address for the device */
-#define RDP_OFFSET 0x10
-#define RAP_OFFSET 0x12
-#define RESET_OFFSET 0x14
-#define IDP_OFFSET 0x16
-#define VSW_OFFSET 0x18
-
-#define LANCE_CSR0 0 /* Main csr */
-#define LANCE_IADRL 1 /* Init block low address bits */
-#define LANCE_IADRH 2 /* Init block high address bits */
-#define LANCE_CSR3 3 /* Mask and function bits */
-#define LANCE_CSR4 4 /* Additional mask and function bits, only exists on amd 79c960 */
-
- /* CSR bit definitions - CSR1 and 2 have no bit fields */
-
- /* CSR0 Bit definitions */
-
-#define csr0_INIT 0x0001 /* Initialize - can be set with STRT on 79C960*/
-#define csr0_STRT 0x0002 /* Start operation */
-#define csr0_STOP 0x0004 /* Stop LANCE */
-#define csr0_TDMD 0x0008 /* Transmit demand */
-#define csr0_TXON 0x0010 /* Transmitter ON */
-#define csr0_RXON 0x0020 /* Receiver ON */
-#define csr0_IENA 0x0040 /* Interrupt enable */
-#define csr0_INTR 0x0080 /* Interrupt received */
-#define csr0_IDON 0x0100 /* Initialization done */
-#define csr0_TINT 0x0200 /* Transmitter interrupt */
-#define csr0_RINT 0x0400 /* Receiver interrupt */
-#define csr0_MERR 0x0800 /* Memory error */
-#define csr0_MISS 0x1000 /* Missed packet */
-#define csr0_CERR 0x2000 /* Collision error */
-#define csr0_BABL 0x4000 /* Babbling on the wire */
-#define csr0_ERR 0x8000 /* Error logical OR */
-
-
- /* CSR3 Bit definitions - all undefined bits reserved */
-
-#define csr3_EMBA 0x0008 /* Enable Alternate Backoff Algorithm - 79C960 */
-#define csr3_DXMT2PD 0x0010 /* Disable 2-part TX deferral - 79C960 */
-#define csr3_IDONM 0x0100 /* Initialise Done interrupt mask */
-#define csr3_TINT 0x0200 /* TX interrupt mask */
-#define csr3_RINT 0x0400 /* RX interrupt mask */
-#define csr3_MERM 0x0800 /* Memory error interrupt mask */
-#define csr3_MISSM 0x1000 /* Missed pkt interrupt mask */
-#define csr3_BABLM 0x4000 /* Babble interrupt mask */
-#define csr3_MASKALL 0x5F00 /* Mask all CSR3 maskable interrupts */
-
- /* CSR4 Bit definitions - all undefined bits reserved */
- /* This register is unique to the 79C960 */
-
-#define csr4_JABM 0x0001 /* Jabber interrupt mask
-#define csr4_JAB 0x0002 /* set if T-MAU detects a jabber condition
-#define csr4_TXSTRTM 0x0004 /* TX start (of packet) interrupt mask */
-#define csr4_TXSTRT 0x0008 /* */
-#define csr4_RCVCCOM 0x0010 /* RX Collision Counter Overflow interrupt mask */
-#define csr4_RCVCCO 0x0020 /* RX Collision Counter Overflow bit */
-#define csr4_MPCOM 0x0100 /* Missed Pkt counter overflow interrupt mask */
-#define csr4_MPCO 0x0200 /* Missed Pkt counter overflow bit */
-#define csr4_ASTRPRCV 0x0400 /* Enable Automatic Pad Stripping on RX - IEEE802.3 */
-#define csr4_APADXMT 0x0800 /* Enable Automatic Padding on TX - IEEE802.3 */
-#define csr4_DPOLL 0x1000 /* Disable polling - TX rings */
-#define csr4_TIMER 0x2000 /* */
-#define csr4_DMAPLUS 0x4000 /* Disable CSR80 DMA burst counter */
-#define csr4_ENTST 0x8000 /* Enable Test mode */
-
-
-
- /* Receive Message Descriptor */
- /* RMD0, RMD2 and RMD3 have no bit fields */
-
- /* Bits 0 -> 7 of RMD1 part of buffer address */
-
-#define rmd1_ENP 0x0100 /* End of packet */
-#define rmd1_STP 0x0200 /* Start of packet */
-#define rmd1_BUFF 0x0400 /* Buffer error */
-#define rmd1_CRC 0x0800 /* CRC error */
-#define rmd1_OFLO 0x1000 /* Overflow error */
-#define rmd1_FRAM 0x2000 /* Framing error */
-#define rmd1_ERR 0x4000 /* Error logical OR */
-#define rmd1_OWN 0x8000 /* Who owns it */
-
-
-
- /* Transmit Message Descriptor */
- /* TMD0 and TMD2 have no bit fields */
-
- /* Bits 0 -> 7 of TMD1 part of buffer address */
-
-#define tmd1_ENP 0x0100 /* End of packet */
-#define tmd1_STP 0x0200 /* Start of packet */
-#define tmd1_DEF 0x0400 /* Had to defer */
-#define tmd1_ONE 0x0800 /* One eretry needed */
-#define tdm1_MORE 0x1000 /* More than one retry */
-#define tmd1_ADDFCS 0x2000 /* Am79C960 specific - add FCS on pkt basis */
-#define tmd1_ERR 0x4000 /* Error logical OR */
-#define tmd1_OWN 0x8000 /* Who owns it */
-
-
- /* Bits 0 -> 9 of TMD3 provide a TDR counter for finding cable faults */
-
-#define tmd3_RTRY 0x0400 /* Too many retries */
-#define tmd3_LCAR 0x0800 /* Loss of Carrier */
-#define tmd3_LCOL 0x1000 /* Late Collision on send */
-#define tmd3_RES 0x2000 /* RESERVED */
-#define tmd3_UFLO 0x4000 /* Underflow Error */
-#define tmd3_BUFF 0x8000 /* Buffer Error */
-
-
- /* For init block - operating modes */
-
-#define mode_DRX 0x0001 /* Disable receiver */
-#define mode_DTX 0x0002 /* Disable transmitter */
-#define mode_LOOP 0x0004 /* Loopback mode */
-#define mode_DTCR 0x0008 /* Disable transmit CRC */
-#define mode_COLL 0x0010 /* Force collision */
-#define mode_DRTY 0x0020 /* Disable retries */
-#define mode_INTL 0x0040 /* Internal loopback */
-#define mode_PORTSEL0 0x0080 /* 0 = AUI; 1 = T-MAU */
-#define mode_PORTSEL1 0x0100 /* MBZ */
-#define mode_LRT_TSEL 0x0200 /* Low RX threshold/TX mode select */
-#define mode_MENDECL 0x0400 /* MENDEC loopback mode */
-#define mode_DAPC 0x0800 /* T-MAU: disable automatic polarity correction */
-#define mode_DLNKTST 0x1000 /* Disable link status */
-#define mode_DRCVPA 0x2000 /* Disable RX physical address */
-#define mode_DRCVBC 0x4000 /* Disable RX broadcast */
-#define mode_PROM 0x8000 /* Promiscuous mode */
-
-
-
- /* Initialization block. */
-
-#define LANCE_INIT_BLOCK_SIZE 24
-#define LANCE_INIT_BLOCK_MODE_OFFSET 0
-#define LANCE_INIT_BLOCK_PADR_OFFSET 2
-#define LANCE_INIT_BLOCK_LADRF_OFFSET 8
-#define LANCE_INIT_BLOCK_RD_OFFSET 16
-#define LANCE_INIT_BLOCK_TD_OFFSET 20
-
-
-typedef struct {
- unsigned
- radr : 24, /* Ring address. */
- : 5,
- rlen : 3; /* Entries (0=1, 1=2, 2=4, 3=8...) */
-} INIT_BLOCK_DESC;
-
- /* Receive buffer descriptor. */
-
-typedef struct{
- unsigned int
- ladr : 24, /* Buffer address. */
- enp : 1, /* End of packet. */
- stp : 1, /* Start of packet. */
- buff : 1, /* Buffer error. */
- crc : 1, /* CRC error. */
- oflo : 1, /* Overflow error. */
- fram : 1, /* Framing error. */
- err : 1, /* Error summary: buff + crc + oflo + fram */
- own : 1; /* Buffer owner: host=0, lance=1. */
- uw bcnt; /* Buffer size. */
- uw mcnt; /* Message size. */
-} LANCE_RECV_BD;
-
- /* Transmit buffer descriptor. */
-
-typedef struct{
- unsigned int
- ladr : 24, /* Buffer address. */
- enp : 1, /* End of packet. */
- stp : 1, /* Start of packet. */
- def : 1, /* Deferred. */
- one : 1, /* One retry. */
- more : 1, /* More retries. */
- add_fcs : 1, /* Add FCS on packet basis - 79C960 specific feature */
- err : 1, /* Error summary: lcol + lcar + uflo + rtry */
- own : 1; /* Buffer owner: host=0, lance=1. */
- uw bcnt; /* Buffer size. */
- uw tmd3; /* TMD 3 */
-} LANCE_SEND_BD;
-
-#define LANCE_OWNS 1
-#define HOST_OWNS 0
-
- /* Lance counters. */
-
-typedef struct{
- time_t zeroed;
- int b_recv;
- int b_sent;
- int f_recv;
- int f_sent;
- int mc_b_recv;
- int mc_f_recv;
- int f_sent_def;
- int f_sent_sgl_col;
- int f_sent_mult_col;
- int send_fail_exs_col;
- int send_fail_cc;
- int send_fail_short;
- int send_fail_open;
- int send_fail_flen;
- int send_fail_defer;
- int recv_fail_fcs;
- int recv_fail_f_err;
- int recv_fail_flen;
- int data_overrun;
- int sbuf_unav;
- int ubuf_unav;
- int cc_fail;
-} LANCE_CTRS;
-
-typedef struct{
- int base_addr;
- int interrupt_line;
- int dma_mask;
-} AM79C960_CONFIG;
-
-#define AM79C960_FLUSH_WATCHDOG 5000 /* watchdog timeout - in ms - for TX flush routine */
-
-/* /ether/am79c960.c */
-extern int am79c960_device_register(int device_no);
-extern void am79c960_device_init_module(void );
-
-#endif /* __AM79C960_H_LOADED */