Annotation of Gnu-Mach/i386/i386at/if_wd8003.h, revision 1.1

1.1     ! root        1: /* 
        !             2:  * Mach Operating System
        !             3:  * Copyright (c) 1991,1990,1989 Carnegie Mellon University
        !             4:  * All Rights Reserved.
        !             5:  * 
        !             6:  * Permission to use, copy, modify and distribute this software and its
        !             7:  * documentation is hereby granted, provided that both the copyright
        !             8:  * notice and this permission notice appear in all copies of the
        !             9:  * software, derivative works or modified versions, and any portions
        !            10:  * thereof, and that both notices appear in supporting documentation.
        !            11:  * 
        !            12:  * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS"
        !            13:  * CONDITION.  CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
        !            14:  * ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
        !            15:  * 
        !            16:  * Carnegie Mellon requests users of this software to return to
        !            17:  * 
        !            18:  *  Software Distribution Coordinator  or  [email protected]
        !            19:  *  School of Computer Science
        !            20:  *  Carnegie Mellon University
        !            21:  *  Pittsburgh PA 15213-3890
        !            22:  * 
        !            23:  * any improvements or extensions that they make and grant Carnegie Mellon
        !            24:  * the rights to redistribute these changes.
        !            25:  */
        !            26: /*
        !            27:  * Western Digital Mach Ethernet driver
        !            28:  * Copyright (c) 1990 OSF Research Institute 
        !            29:  */
        !            30: /*
        !            31:   Copyright 1990 by Open Software Foundation,
        !            32: Cambridge, MA.
        !            33: 
        !            34:                All Rights Reserved
        !            35: 
        !            36:   Permission to use, copy, modify, and distribute this software and
        !            37: its documentation for any purpose and without fee is hereby granted,
        !            38: provided that the above copyright notice appears in all copies and
        !            39: that both the copyright notice and this permission notice appear in
        !            40: supporting documentation, and that the name of OSF or Open Software
        !            41: Foundation not be used in advertising or publicity pertaining to
        !            42: distribution of the software without specific, written prior
        !            43: permission.
        !            44: 
        !            45:   OSF DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE
        !            46: INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS,
        !            47: IN NO EVENT SHALL OSF BE LIABLE FOR ANY SPECIAL, INDIRECT, OR
        !            48: CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
        !            49: LOSS OF USE, DATA OR PROFITS, WHETHER IN ACTION OF CONTRACT,
        !            50: NEGLIGENCE, OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
        !            51: WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
        !            52: */
        !            53: 
        !            54: /***********************************************************/
        !            55: /*  Defines for the 583 chip.                              */
        !            56: /***********************************************************/
        !            57: 
        !            58: /*--- 8390 Registers ---*/
        !            59: #define OFF_8390       0x10    /* offset of the 8390 chip */
        !            60: 
        !            61: /* Register offsets */
        !            62: 
        !            63: #define IFWD_REG_0     0x00
        !            64: #define IFWD_REG_1     0x01
        !            65: #define IFWD_REG_2     0x02
        !            66: #define IFWD_REG_3     0x03
        !            67: #define IFWD_REG_4     0x04
        !            68: #define IFWD_REG_5     0x05
        !            69: #define IFWD_REG_6     0x06
        !            70: #define IFWD_REG_7     0x07
        !            71: 
        !            72: /* Register offset definitions for all boards */
        !            73: 
        !            74: #define IFWD_LAR_0     0x08
        !            75: #define IFWD_LAR_1     0x09
        !            76: #define IFWD_LAR_2     0x0a
        !            77: #define IFWD_LAR_3     0x0b
        !            78: #define IFWD_LAR_4     0x0c
        !            79: #define IFWD_LAR_5     0x0d
        !            80: #define IFWD_BOARD_ID  0x0e
        !            81: #define IFWD_CHKSUM    0x0f
        !            82: 
        !            83: /* revision number mask for BOARD_ID */
        !            84: #define IFWD_BOARD_REV_MASK    0x1e
        !            85: 
        !            86: /* REG 1 */
        !            87: #define IFWD_MEMSIZE   0x08
        !            88: #define IFWD_16BIT     0x01
        !            89: 
        !            90: /* REG 5 */
        !            91: #define IFWD_REG5_MEM_MASK     0x3f /* B23-B19 of address of the memory */
        !            92: #define IFWD_LA19              0x01 /* B19 of address of the memory */
        !            93: #define IFWD_MEM16ENB          0x80 /* Enable 16 bit memory access from bus */
        !            94: #define IFWD_LAN16ENB          0x40 /* Enable 16 bit memory access from chip*/
        !            95: #define IFWD_INIT_LAAR         IFWD_LA19
        !            96: #define IFWD_SOFTINT            0x20 /* Enable interrupt from pc */
        !            97: 
        !            98: /* Defs for board rev numbers > 1 */
        !            99: #define IFWD_MEDIA_TYPE                0x01
        !           100: #define IFWD_SOFT_CONFIG       0x20
        !           101: #define IFWD_RAM_SIZE          0x40
        !           102: #define IFWD_BUS_TYPE          0x80
        !           103: 
        !           104: /* Register offsets for reading the EEPROM in the 584 chip */
        !           105: #define IFWD_EEPROM_0          0x08
        !           106: #define IFWD_EEPROM_1          0x09
        !           107: #define IFWD_EEPROM_2          0x0A
        !           108: #define IFWD_EEPROM_3          0x0B
        !           109: #define IFWD_EEPROM_4          0x0C
        !           110: #define IFWD_EEPROM_5          0x0D
        !           111: #define IFWD_EEPROM_6          0x0E
        !           112: #define IFWD_EEPROM_7          0x0F
        !           113: 
        !           114: /**** defs for manipulating the 584 ****/
        !           115: #define IFWD_OTHER_BIT                 0x02
        !           116: #define IFWD_ICR_MASK                  0x0C
        !           117: #define IFWD_EAR_MASK                  0x0F
        !           118: #define IFWD_ENGR_PAGE                 0xA0
        !           119: /* #define IFWD_RLA                    0x10  defined in ICR defs */
        !           120: #define IFWD_EA6                       0x80
        !           121: #define IFWD_RECALL_DONE_MASK          0x10
        !           122: #define IFWD_EEPROM_MEDIA_MASK         0x07
        !           123: #define IFWD_STARLAN_TYPE              0x00
        !           124: #define IFWD_ETHERNET_TYPE             0x01
        !           125: #define IFWD_TP_TYPE                   0x02
        !           126: #define IFWD_EW_TYPE                   0x03
        !           127: #define IFWD_EEPROM_IRQ_MASK           0x18
        !           128: #define IFWD_PRIMARY_IRQ               0x00
        !           129: #define IFWD_ALTERNATE_IRQ_1           0x08
        !           130: #define IFWD_ALTERNATE_IRQ_2           0x10
        !           131: #define IFWD_ALTERNATE_IRQ_3           0x18
        !           132: #define IFWD_EEPROM_RAM_SIZE_MASK      0xE0
        !           133: #define IFWD_EEPROM_RAM_SIZE_RES1      0x00
        !           134: #define IFWD_EEPROM_RAM_SIZE_RES2      0x20
        !           135: #define IFWD_EEPROM_RAM_SIZE_8K                0x40
        !           136: #define IFWD_EEPROM_RAM_SIZE_16K       0x60
        !           137: #define IFWD_EEPROM_RAM_SIZE_32K       0x80
        !           138: #define IFWD_EEPROM_RAM_SIZE_64K       0xA0
        !           139: #define IFWD_EEPROM_RAM_SIZE_RES3      0xC0
        !           140: #define IFWD_EEPROM_RAM_SIZE_RES4      0xE0
        !           141: #define IFWD_EEPROM_BUS_TYPE_MASK      0x07
        !           142: #define IFWD_EEPROM_BUS_TYPE_AT                0x00
        !           143: #define IFWD_EEPROM_BUS_TYPE_MCA       0x01
        !           144: #define IFWD_EEPROM_BUS_TYPE_EISA      0x02
        !           145: #define IFWD_EEPROM_BUS_SIZE_MASK      0x18
        !           146: #define IFWD_EEPROM_BUS_SIZE_8BIT      0x00
        !           147: #define IFWD_EEPROM_BUS_SIZE_16BIT     0x08
        !           148: #define IFWD_EEPROM_BUS_SIZE_32BIT     0x10
        !           149: #define IFWD_EEPROM_BUS_SIZE_64BIT     0x18
        !           150: 
        !           151: /*****************************************************************************
        !           152:  *                                                                           *
        !           153:  *   Definitions for board ID.                                               *
        !           154:  *                                                                           *
        !           155:  *   note: board ID should be ANDed with the STATIC_ID_MASK                  *
        !           156:  *         before comparing to a specific board ID                           *
        !           157:  *        The high order 16 bits correspond to the Extra Bits which do not  *
        !           158:  *         change the boards ID.                                             *
        !           159:  *                                                                           *
        !           160:  *   Note: not all are implemented.  Rest are here for future enhancements...*
        !           161:  *                                                                           *
        !           162:  *****************************************************************************/
        !           163: 
        !           164: #define IFWD_STARLAN_MEDIA     0x00000001      /* StarLAN */
        !           165: #define IFWD_ETHERNET_MEDIA    0x00000002      /* Ethernet */
        !           166: #define IFWD_TWISTED_PAIR_MEDIA        0x00000003      /* Twisted Pair */
        !           167: #define IFWD_EW_MEDIA          0x00000004      /* Ethernet and Twisted Pair */
        !           168: #define IFWD_MICROCHANNEL      0x00000008      /* MicroChannel Adapter */
        !           169: #define IFWD_INTERFACE_CHIP    0x00000010      /* Soft Config Adapter */
        !           170: /* #define IFWD_UNUSED         0x00000020 */   /* used to be INTELLIGENT */
        !           171: #define IFWD_BOARD_16BIT       0x00000040      /* 16 bit capability */
        !           172: #define IFWD_RAM_SIZE_UNKNOWN  0x00000000      /* 000 => Unknown RAM Size */
        !           173: #define IFWD_RAM_SIZE_RES_1    0x00010000      /* 001 => Reserved */
        !           174: #define IFWD_RAM_SIZE_8K       0x00020000      /* 010 => 8k RAM */
        !           175: #define IFWD_RAM_SIZE_16K      0x00030000      /* 011 => 16k RAM */
        !           176: #define IFWD_RAM_SIZE_32K      0x00040000      /* 100 => 32k RAM */
        !           177: #define IFWD_RAM_SIZE_64K      0x00050000      /* 101 => 64k RAM */
        !           178: #define IFWD_RAM_SIZE_RES_6    0x00060000      /* 110 => Reserved */
        !           179: #define IFWD_RAM_SIZE_RES_7    0x00070000      /* 111 => Reserved */
        !           180: #define IFWD_SLOT_16BIT                0x00080000      /* 16 bit board - 16 bit slot*/
        !           181: #define IFWD_NIC_690_BIT       0x00100000      /* NIC is 690 */
        !           182: #define IFWD_ALTERNATE_IRQ_BIT 0x00200000      /* Alternate IRQ is used */
        !           183: #define IFWD_INTERFACE_584_CHIP        0x00400000      /* Interface chip is a 584 */
        !           184: 
        !           185: #define IFWD_MEDIA_MASK                0x00000007      /* Isolates Media Type */
        !           186: #define IFWD_RAM_SIZE_MASK     0x00070000      /* Isolates RAM Size */
        !           187: #define IFWD_STATIC_ID_MASK    0x0000FFFF      /* Isolates Board ID */
        !           188: 
        !           189: /* Word definitions for board types */
        !           190: #define WD8003E                IFWD_ETHERNET_MEDIA
        !           191: #define WD8003EBT      WD8003E         /* functionally identical to WD8003E */
        !           192: #define WD8003S                IFWD_STARLAN_MEDIA
        !           193: #define WD8003SH       WD8003S         /* functionally identical to WD8003S */
        !           194: #define WD8003WT       IFWD_TWISTED_PAIR_MEDIA
        !           195: #define WD8003W                (IFWD_TWISTED_PAIR_MEDIA | IFWD_INTERFACE_CHIP)
        !           196: #define WD8003EB       (IFWD_ETHERNET_MEDIA | IFWD_INTERFACE_CHIP)
        !           197: #define WD8003EP       WD8003EB    /* with IFWD_INTERFACE_584_CHIP bit set */a
        !           198: #define WD8003EW       (IFWD_EW_MEDIA | IFWD_INTERFACE_CHIP)
        !           199: #define WD8003ETA      (IFWD_ETHERNET_MEDIA | IFWD_MICROCHANNEL)
        !           200: #define WD8003STA      (IFWD_STARLAN_MEDIA | IFWD_MICROCHANNEL)
        !           201: #define WD8003EA       (IFWD_ETHERNET_MEDIA | IFWD_MICROCHANNEL | \
        !           202:                         IFWD_INTERFACE_CHIP)
        !           203: #define WD8003SHA      (IFWD_STARLAN_MEDIA | IFWD_MICROCHANNEL | \
        !           204:                         IFWD_INTERFACE_CHIP)
        !           205: #define WD8003WA       (IFWD_TWISTED_PAIR_MEDIA | IFWD_MICROCHANNEL | \
        !           206:                         IFWD_INTERFACE_CHIP)
        !           207: #define WD8013EBT      (IFWD_ETHERNET_MEDIA | IFWD_BOARD_16BIT)
        !           208: #define WD8013EB       (IFWD_ETHERNET_MEDIA | IFWD_BOARD_16BIT | \
        !           209:                         IFWD_INTERFACE_CHIP)
        !           210: #define WD8013EP       WD8013EB    /* with IFWD_INTERFACE_584_CHIP bit set */
        !           211: #define WD8013W                (IFWD_TWISTED_PAIR_MEDIA | IFWD_BOARD_16BIT | \
        !           212:                         IFWD_INTERFACE_CHIP)
        !           213: #define WD8013EW       (IFWD_EW_MEDIA | IFWD_BOARD_16BIT | \
        !           214:                         IFWD_INTERFACE_CHIP)
        !           215: 
        !           216: 
        !           217: /**** Western digital node bytes ****/
        !           218: #define        WD_NODE_ADDR_0  0x00
        !           219: #define        WD_NODE_ADDR_1  0x00
        !           220: #define        WD_NODE_ADDR_2  0xC0
        !           221: 
        !           222: /*--- 83c583 registers ---*/
        !           223: #define IFWD_MSR       0x00            /* memory select register */
        !           224:                                        /* In 584 Board's command register */
        !           225: #define IFWD_ICR       0x01            /* interface configuration register */
        !           226:                                         /* In 584 8013 bus size register */
        !           227: #define IFWD_IAR       0x02            /* io address register */
        !           228: #define IFWD_BIO       0x03            /* bios ROM address register */
        !           229: #define IFWD_IRR       0x04            /* interrupt request register */
        !           230: #define IFWD_GP1       0x05            /* general purpose register 1 */
        !           231: #define IFWD_IOD       0x06            /* io data latch */
        !           232: #define IFWD_GP2       0x07            /* general purpose register 2 */
        !           233: #define IFWD_LAR       0x08            /* LAN address register */
        !           234: #define IFWD_LAR2      0x09            /*                      */
        !           235: #define IFWD_LAR3      0x0A            /*                      */
        !           236: #define IFWD_LAR4      0x0B            /*                      */
        !           237: #define IFWD_LAR5      0x0C            /*                      */
        !           238: #define IFWD_LAR6      0x0D            /*                      */
        !           239: #define IFWD_LAR7      0x0E            /*                      */
        !           240: #define IFWD_LAR8      0x0F            /* LAN address register */
        !           241: 
        !           242: /********************* Register Bit Definitions **************************/
        !           243: /* MSR definitions */
        !           244: #define IFWD_RST       0x80            /* 1 => reset */
        !           245: #define IFWD_MENB      0x40            /* 1 => memory enable */
        !           246: #define IFWD_SA18      0x20            /* Memory enable bits   */
        !           247: #define        IFWD_SA17       0x10            /*      telling where shared    */
        !           248: #define        IFWD_SA16       0x08            /*      mem is to start.        */
        !           249: #define IFWD_SA15      0x04            /*      Assume SA19 = 1         */
        !           250: #define IFWD_SA14      0x02            /*                              */
        !           251: #define        IFWD_SA13       0x01            /*                              */
        !           252: 
        !           253: /* ICR definitions */
        !           254: #define        IFWD_STR        0x80            /* Non-volatile EEPROM store    */
        !           255: #define        IFWD_RCL        0x40            /* Recall I/O Address from EEPROM */
        !           256: #define        IFWD_RX7        0x20            /* Recall all but I/O and LAN address*/
        !           257: #define IFWD_RLA       0x10            /* Recall LAN Address   */
        !           258: #define        IFWD_MSZ        0x08            /* Shared Memory Size   */
        !           259: #define        IFWD_DMAE       0x04            /* DMA Enable   */
        !           260: #define        IFWD_IOPE       0x02            /* I/O Port Enable */
        !           261: #define IFWD_WTS       0x01            /* Word Transfer Select */
        !           262: 
        !           263: /* IAR definitions */
        !           264: #define        IFWD_IA15       0x80            /* I/O Address Bits     */
        !           265: /*     .               */
        !           266: /*     .               */
        !           267: /*     .               */
        !           268: #define        IFWD_IA5        0x01            /*                      */
        !           269: 
        !           270: /* BIO definitions */
        !           271: #define        IFWD_RS1        0x80            /* BIOS size bit 1 */
        !           272: #define        IFWD_RS0        0x40            /* BIOS size bit 0 */
        !           273: #define        IFWD_BA18       0x20            /* BIOS ROM Memory Address Bits */
        !           274: #define        IFWD_BA17       0x10            /*                              */
        !           275: #define        IFWD_BA16       0x08            /*                              */
        !           276: #define        IFWD_BA15       0x04            /*                              */
        !           277: #define IFWD_BA14      0x02            /* BIOS ROM Memory Address Bits */
        !           278: #define        IFWD_WINT       0x01            /* W8003 interrupt      */
        !           279: 
        !           280: /* IRR definitions */
        !           281: #define        IFWD_IEN        0x80    /* Interrupt Enable     */
        !           282: #define        IFWD_IR1        0x40    /* Interrupt request bit 1      */
        !           283: #define        IFWD_IR0        0x20    /* Interrupt request bit 0      */
        !           284: #define        IFWD_AMD        0x10    /* Alternate mode       */
        !           285: #define IFWD_AINT      0x08    /* Alternate interrupt  */
        !           286: #define IFWD_BW1       0x04    /* BIOS Wait State Control bit 1        */
        !           287: #define IFWD_BW0       0x02    /* BIOS Wait State Control bit 0        */
        !           288: #define IFWD_OWS       0x01    /* Zero Wait State Enable       */
        !           289: 
        !           290: /* GP1 definitions */
        !           291: 
        !           292: /* IOD definitions */
        !           293: 
        !           294: /* GP2 definitions */
        !           295: 
        !           296: /*************************************************************/
        !           297: /*   Shared RAM buffer definitions                           */
        !           298: /*************************************************************/
        !           299: 
        !           300: /**** NIC definitions ****/
        !           301: #define NIC_8003_SRAM_SIZE 0x2000       /* size of shared RAM buffer */
        !           302: #define        NIC_HEADER_SIZE 4               /* size of receive header */
        !           303: #define        NIC_PAGE_SIZE   0x100           /* each page of rcv ring is 256 byte */
        !           304: 
        !           305: #define ETHER_ADDR_SIZE        6       /* size of a MAC address */
        !           306: 
        !           307: #ifdef MACH
        !           308: #define        HZ              100
        !           309: #endif
        !           310: 
        !           311: #define        DSF_LOCK        1
        !           312: #define DSF_RUNNING    2
        !           313: 
        !           314: #define MOD_ENAL 1
        !           315: #define MOD_PROM 2

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.