Loading...
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 | /************************************************************************/ /* */ /* es4h.h: Hardware definition of the ES/4h Ethernet Switch, from */ /* both the host and the 3051's point of view. */ /* NOTE: this name is a misnomer now that there is a PCI */ /* board. Everything that says "es4h" should really be */ /* "se4". But we'll keep the old name for now. */ /* */ /* $Id: es4h.h,v 1.10 1996/08/22 17:16:53 rick Exp $ */ /* */ /************************************************************************/ /************************************************************************/ /* */ /* EISA I/O Registers. These are located at 0x1000 * slot-number */ /* plus the indicated address. I.E. 0x4000-0x4009 for slot 4. */ /* */ /************************************************************************/ #define ES4H_MANUFmsb 0x00 /* Read-only */ #define ES4H_MANUFlsb 0x01 /* Read-only */ # define ES4H_MANUF_CODE 0x1049 /* = "DBI" */ #define ES4H_PRODUCT 0x02 /* Read-only */ # define ES4H_PRODUCT_CODE 0x0A # define EPC_PRODUCT_CODE 0x03 #define ES4H_REVISION 0x03 /* Read-only */ # define ES4H_REVISION_CODE 0x01 #define ES4H_EC 0x04 /* EISA Control */ # define ES4H_EC_RESET 0x04 /* WO, EISA reset */ # define ES4H_EC_ENABLE 0x01 /* RW, EISA enable - set to */ /* 1 before memory enable */ #define ES4H_PC 0x05 /* Processor Control */ # define ES4H_PC_RESET 0x04 /* RW, 3051 reset */ # define ES4H_PC_INT 0x08 /* WO, assert 3051 intr. 3 */ #define ES4H_MW 0x06 /* Memory Window select and enable */ # define ES4H_MW_ENABLE 0x80 /* WO, enable memory */ # define ES4H_MW_SELECT_MASK 0x1f /* WO, 32k window selected */ #define ES4H_IS 0x07 /* Interrupt, addr select */ # define ES4H_IS_INTMASK 0x07 /* WO, interrupt select */ # define ES4H_IS_INTOFF 0x00 /* No IRQ */ # define ES4H_IS_INT3 0x03 /* IRQ 3 */ # define ES4H_IS_INT5 0x02 /* IRQ 5 */ # define ES4H_IS_INT7 0x01 /* IRQ 7 */ # define ES4H_IS_INT10 0x04 /* IRQ 10 */ # define ES4H_IS_INT11 0x05 /* IRQ 11 */ # define ES4H_IS_INT12 0x06 /* IRQ 12 */ # define ES4H_IS_INT15 0x07 /* IRQ 15 */ # define ES4H_IS_INTACK 0x10 /* WO, interrupt ack */ # define ES4H_IS_INTPEND 0x10 /* RO, interrupt pending */ # define ES4H_IS_LINEAR 0x40 /* WO, no memory windowing */ # define ES4H_IS_AS15 0x80 /* RW, address select bit 15 */ #define ES4H_AS_23_16 0x08 /* Address select bits 23-16 */ #define ES4H_AS_31_24 0x09 /* Address select bits 31-24 */ #define ES4H_IO_MAX 0x09 /* Size of I/O space */ /* * PCI */ #define SE6_RESET PLX_USEROUT /************************************************************************/ /* */ /* 3051 Memory Map */ /* */ /* Note: 3051 has 4K I-cache, 2K D-cache. 1 cycle is 50 nsec. */ /* */ /************************************************************************/ #define SE4_NPORTS 4 /* # of ethernet ports */ #define SE6_NPORTS 6 /* # of ethernet ports */ #define SE_NPORTS 6 /* Max # of ethernet ports */ #define ES4H_RAM_BASE 0x83000000 /* Base address of RAM */ #define ES4H_RAM_SIZE 0x00200000 /* Size of RAM (2MB) */ #define ES4H_RAM_INTBASE 0x83800000 /* Base of int-on-write RAM */ /* a.k.a. PKT RAM */ /* Ethernet controllers */ /* See: i82596.h */ #define ES4H_ETHER0_PORT 0xA2000000 #define ES4H_ETHER0_CMD 0xA2000100 #define ES4H_ETHER1_PORT 0xA2000200 #define ES4H_ETHER1_CMD 0xA2000300 #define ES4H_ETHER2_PORT 0xA2000400 #define ES4H_ETHER2_CMD 0xA2000500 #define ES4H_ETHER3_PORT 0xA2000600 #define ES4H_ETHER3_CMD 0xA2000700 #define ES4H_ETHER4_PORT 0xA2000800 /* RS SE-6 only */ #define ES4H_ETHER4_CMD 0xA2000900 /* RS SE-6 only */ #define ES4H_ETHER5_PORT 0xA2000A00 /* RS SE-6 only */ #define ES4H_ETHER5_CMD 0xA2000B00 /* RS SE-6 only */ #define ES4H_I8254 0xA2040000 /* 82C54 timers */ /* See: i8254.h */ #define SE4_I8254_HZ (23000000/4) /* EISA clock input freq. */ #define SE4_IDT_HZ (46000000) /* EISA CPU freq. */ #define SE6_I8254_HZ (20000000/4) /* PCI clock input freq. */ #define SE6_IDT_HZ (50000000) /* PCI CPU freq. */ #define ES4H_I8254_HZ (23000000/4) /* EISA clock input freq. */ #define ES4H_GPP 0xA2050000 /* General purpose port */ /* * SE-4 (EISA) GPP bits */ # define ES4H_GPP_C0_100 0x0001 /* WO, Chan 0: 100 ohm TP */ # define ES4H_GPP_C0_SQE 0x0002 /* WO, Chan 0: normal squelch */ # define ES4H_GPP_C1_100 0x0004 /* WO, Chan 1: 100 ohm TP */ # define ES4H_GPP_C1_SQE 0x0008 /* WO, Chan 1: normal squelch */ # define ES4H_GPP_C2_100 0x0010 /* WO, Chan 2: 100 ohm TP */ # define ES4H_GPP_C2_SQE 0x0020 /* WO, Chan 2: normal squelch */ # define ES4H_GPP_C3_100 0x0040 /* WO, Chan 3: 100 ohm TP */ # define ES4H_GPP_C3_SQE 0x0080 /* WO, Chan 3: normal squelch */ # define ES4H_GPP_SQE 0x00AA /* WO, All: normal squelch */ # define ES4H_GPP_100 0x0055 /* WO, All: 100 ohm TP */ # define ES4H_GPP_HOSTINT 0x0100 /* RO, cause intr. to host */ /* Hold high > 250 nsec */ # define SE4_GPP_EED 0x0200 /* RW, EEPROM data bit */ # define SE4_GPP_EECS 0x0400 /* RW, EEPROM chip select */ # define SE4_GPP_EECK 0x0800 /* RW, EEPROM clock */ /* * SE-6 (PCI) GPP bits */ # define SE6_GPP_EED 0x0001 /* RW, EEPROM data bit */ # define SE6_GPP_EECS 0x0002 /* RW, EEPROM chip select */ # define SE6_GPP_EECK 0x0004 /* RW, EEPROM clock */ # define SE6_GPP_LINK 0x00fc /* R, Link status LEDs */ #define ES4H_INTVEC 0xA2060000 /* RO: Interrupt Vector */ # define ES4H_IV_DMA0 0x01 /* Chan 0 DMA interrupt */ # define ES4H_IV_PKT0 0x02 /* Chan 0 PKT interrupt */ # define ES4H_IV_DMA1 0x04 /* Chan 1 DMA interrupt */ # define ES4H_IV_PKT1 0x08 /* Chan 1 PKT interrupt */ # define ES4H_IV_DMA2 0x10 /* Chan 2 DMA interrupt */ # define ES4H_IV_PKT2 0x20 /* Chan 2 PKT interrupt */ # define ES4H_IV_DMA3 0x40 /* Chan 3 DMA interrupt */ # define ES4H_IV_PKT3 0x80 /* Chan 3 PKT interrupt */ #define ES4H_INTACK 0xA2060000 /* WO: Interrupt Ack */ # define ES4H_INTACK_8254 0x01 /* Real Time Clock (int 0) */ # define ES4H_INTACK_HOST 0x02 /* Host (int 1) */ # define ES4H_INTACK_PKT0 0x04 /* Chan 0 Pkt (int 2) */ # define ES4H_INTACK_PKT1 0x08 /* Chan 1 Pkt (int 3) */ # define ES4H_INTACK_PKT2 0x10 /* Chan 2 Pkt (int 4) */ # define ES4H_INTACK_PKT3 0x20 /* Chan 3 Pkt (int 5) */ #define SE6_PLX 0xA2070000 /* PLX 9060, SE-6 (PCI) only */ /* see plx9060.h */ #define SE6_PCI_VENDOR_ID 0x114F /* Digi PCI vendor ID */ #define SE6_PCI_DEVICE_ID 0x0003 /* RS SE-6 device ID */ #define SE6_PCI_ID ((SE6_PCI_DEVICE_ID<<16) | SE6_PCI_VENDOR_ID) /* * IDT Interrupts */ #define ES4H_INT_8254 IDT_INT0 #define ES4H_INT_HOST IDT_INT1 #define ES4H_INT_ETHER0 IDT_INT2 #define ES4H_INT_ETHER1 IDT_INT3 #define ES4H_INT_ETHER2 IDT_INT4 #define ES4H_INT_ETHER3 IDT_INT5 /* * Because there are differences between the SE-4 and the SE-6, * we assume that the following globals will be set up at init * time in main.c to containt the appropriate constants from above */ extern ushort Gpp; /* Softcopy of GPP register */ extern ushort EEck; /* Clock bit */ extern ushort EEcs; /* CS bit */ extern ushort EEd; /* Data bit */ extern ulong I8254_Hz; /* i8254 input frequency */ extern ulong IDT_Hz; /* IDT CPU frequency */ extern int Nports; /* Number of ethernet controllers */ extern int Nchan; /* Nports+1 */ |