Home | History | Annotate | Line # | Download | only in ic
wereg.h revision 1.1
      1  1.1  jdolecek /*	$NetBSD: wereg.h,v 1.1 2001/03/23 17:34:41 jdolecek Exp $	*/
      2  1.1  jdolecek 
      3  1.1  jdolecek /*
      4  1.1  jdolecek  * National Semiconductor DS8390 NIC register definitions.
      5  1.1  jdolecek  *
      6  1.1  jdolecek  * Copyright (C) 1993, David Greenman.  This software may be used, modified,
      7  1.1  jdolecek  * copied, distributed, and sold, in both source and binary form provided that
      8  1.1  jdolecek  * the above copyright and these terms are retained.  Under no circumstances is
      9  1.1  jdolecek  * the author responsible for the proper functioning of this software, nor does
     10  1.1  jdolecek  * the author assume any responsibility for damages incurred with its use.
     11  1.1  jdolecek  */
     12  1.1  jdolecek 
     13  1.1  jdolecek /*
     14  1.1  jdolecek  * Compile-time config flags
     15  1.1  jdolecek  */
     16  1.1  jdolecek /*
     17  1.1  jdolecek  * This sets the default for enabling/disablng the tranceiver.
     18  1.1  jdolecek  */
     19  1.1  jdolecek #define WE_FLAGS_DISABLE_TRANCEIVER	0x0001
     20  1.1  jdolecek 
     21  1.1  jdolecek /*
     22  1.1  jdolecek  * This forces the board to be used in 8/16-bit mode even if it autoconfigs
     23  1.1  jdolecek  * differently.
     24  1.1  jdolecek  */
     25  1.1  jdolecek #define WE_FLAGS_FORCE_8BIT_MODE	0x0002
     26  1.1  jdolecek #define WE_FLAGS_FORCE_16BIT_MODE	0x0004
     27  1.1  jdolecek 
     28  1.1  jdolecek /*
     29  1.1  jdolecek  * This disables the use of double transmit buffers.
     30  1.1  jdolecek  */
     31  1.1  jdolecek #define WE_FLAGS_NO_MULTI_BUFFERING	0x0008
     32  1.1  jdolecek 
     33  1.1  jdolecek /*
     34  1.1  jdolecek  *		Definitions for Western digital/SMC WD80x3 series ASIC
     35  1.1  jdolecek  */
     36  1.1  jdolecek 
     37  1.1  jdolecek /*
     38  1.1  jdolecek  * Memory Select Register (MSR)
     39  1.1  jdolecek  */
     40  1.1  jdolecek #define WE_MSR	0
     41  1.1  jdolecek 
     42  1.1  jdolecek /* next three definitions for Toshiba */
     43  1.1  jdolecek #define	WE_MSR_POW	0x02	/* 0 = power save, 1 = normal (R/W) */
     44  1.1  jdolecek #define	WE_MSR_BSY	0x04	/* gate array busy (R) */
     45  1.1  jdolecek #define	WE_MSR_LEN	0x20	/* 0 = 16-bit, 1 = 8-bit (R/W) */
     46  1.1  jdolecek 
     47  1.1  jdolecek #define WE_MSR_ADDR	0x3f	/* Memory decode bits 18-13 */
     48  1.1  jdolecek #define WE_MSR_MENB	0x40	/* Memory enable */
     49  1.1  jdolecek #define WE_MSR_RST	0x80	/* Reset board */
     50  1.1  jdolecek 
     51  1.1  jdolecek /*
     52  1.1  jdolecek  * Interface Configuration Register (ICR)
     53  1.1  jdolecek  */
     54  1.1  jdolecek #define WE_ICR	1
     55  1.1  jdolecek 
     56  1.1  jdolecek #define WE_ICR_16BIT	0x01	/* 16-bit interface */
     57  1.1  jdolecek #define WE_ICR_OAR	0x02	/* select register (0=BIO 1=EAR) */
     58  1.1  jdolecek #define WE_ICR_IR2	0x04	/* high order bit of encoded IRQ */
     59  1.1  jdolecek #define WE_ICR_MSZ	0x08	/* memory size (0=8k 1=32k) */
     60  1.1  jdolecek #define WE_ICR_RLA	0x10	/* recall LAN address */
     61  1.1  jdolecek #define WE_ICR_RX7	0x20	/* recall all but i/o and LAN address */
     62  1.1  jdolecek #define	WE_ICR_RIO	0x40	/* recall i/o address */
     63  1.1  jdolecek #define WE_ICR_STO	0x80	/* store to non-volatile memory */
     64  1.1  jdolecek #ifdef TOSH_ETHER
     65  1.1  jdolecek #define	WE_ICR_MEM	0xe0	/* shared mem address A15-A13 (R/W) */
     66  1.1  jdolecek #define	WE_ICR_MSZ1	0x0f	/* memory size, 0x08 = 64K, 0x04 = 32K,
     67  1.1  jdolecek 				   0x02 = 16K, 0x01 = 8K */
     68  1.1  jdolecek 				/* 64K can only be used if mem address
     69  1.1  jdolecek 				   above 1MB */
     70  1.1  jdolecek 				/* IAR holds address A23-A16 (R/W) */
     71  1.1  jdolecek #endif
     72  1.1  jdolecek 
     73  1.1  jdolecek /*
     74  1.1  jdolecek  * IO Address Register (IAR)
     75  1.1  jdolecek  */
     76  1.1  jdolecek #define WE_IAR	2
     77  1.1  jdolecek 
     78  1.1  jdolecek /*
     79  1.1  jdolecek  * EEROM Address Register
     80  1.1  jdolecek  */
     81  1.1  jdolecek #define WE_EAR	3
     82  1.1  jdolecek 
     83  1.1  jdolecek /*
     84  1.1  jdolecek  * Interrupt Request Register (IRR)
     85  1.1  jdolecek  */
     86  1.1  jdolecek #define WE_IRR	4
     87  1.1  jdolecek 
     88  1.1  jdolecek #define	WE_IRR_0WS	0x01	/* use 0 wait-states on 8 bit bus */
     89  1.1  jdolecek #define WE_IRR_OUT1	0x02	/* WD83C584 pin 1 output */
     90  1.1  jdolecek #define WE_IRR_OUT2	0x04	/* WD83C584 pin 2 output */
     91  1.1  jdolecek #define WE_IRR_OUT3	0x08	/* WD83C584 pin 3 output */
     92  1.1  jdolecek #define WE_IRR_FLASH	0x10	/* Flash RAM is in the ROM socket */
     93  1.1  jdolecek 
     94  1.1  jdolecek /*
     95  1.1  jdolecek  * The three bits of the encoded IRQ are decoded as follows:
     96  1.1  jdolecek  *
     97  1.1  jdolecek  * IR2 IR1 IR0  IRQ
     98  1.1  jdolecek  *  0   0   0   2/9
     99  1.1  jdolecek  *  0   0   1   3
    100  1.1  jdolecek  *  0   1   0   5
    101  1.1  jdolecek  *  0   1   1   7
    102  1.1  jdolecek  *  1   0   0   10
    103  1.1  jdolecek  *  1   0   1   11
    104  1.1  jdolecek  *  1   1   0   15
    105  1.1  jdolecek  *  1   1   1   4
    106  1.1  jdolecek  */
    107  1.1  jdolecek #define WE_IRR_IR0	0x20	/* bit 0 of encoded IRQ */
    108  1.1  jdolecek #define WE_IRR_IR1	0x40	/* bit 1 of encoded IRQ */
    109  1.1  jdolecek #define WE_IRR_IEN	0x80	/* Interrupt enable */
    110  1.1  jdolecek 
    111  1.1  jdolecek /*
    112  1.1  jdolecek  * LA Address Register (LAAR)
    113  1.1  jdolecek  */
    114  1.1  jdolecek #define WE_LAAR	5
    115  1.1  jdolecek 
    116  1.1  jdolecek #define WE_LAAR_ADDRHI	0x1f	/* bits 23-19 of RAM address */
    117  1.1  jdolecek #define WE_LAAR_0WS16	0x20	/* enable 0 wait-states on 16 bit bus */
    118  1.1  jdolecek #define WE_LAAR_L16EN	0x40	/* enable 16-bit operation */
    119  1.1  jdolecek #define WE_LAAR_M16EN	0x80	/* enable 16-bit memory access */
    120  1.1  jdolecek 
    121  1.1  jdolecek /* i/o base offset to station address/card-ID PROM */
    122  1.1  jdolecek #define WE_PROM	8
    123  1.1  jdolecek 
    124  1.1  jdolecek /*
    125  1.1  jdolecek  *	83C790 specific registers
    126  1.1  jdolecek  */
    127  1.1  jdolecek /*
    128  1.1  jdolecek  * Hardware Support Register (HWR) ('790)
    129  1.1  jdolecek  */
    130  1.1  jdolecek #define	WE790_HWR	4
    131  1.1  jdolecek 
    132  1.1  jdolecek #define	WE790_HWR_RST	0x10	/* hardware reset */
    133  1.1  jdolecek #define	WE790_HWR_LPRM	0x40	/* LAN PROM select */
    134  1.1  jdolecek #define	WE790_HWR_SWH	0x80	/* switch register set */
    135  1.1  jdolecek 
    136  1.1  jdolecek /*
    137  1.1  jdolecek  * ICR790 Interrupt Control Register for the 83C790
    138  1.1  jdolecek  */
    139  1.1  jdolecek #define	WE790_ICR	6
    140  1.1  jdolecek 
    141  1.1  jdolecek #define	WE790_ICR_EIL	0x01	/* enable interrupts */
    142  1.1  jdolecek 
    143  1.1  jdolecek /*
    144  1.1  jdolecek  * REV/IOPA Revision / I/O Pipe register for the 83C79X
    145  1.1  jdolecek  */
    146  1.1  jdolecek #define WE790_REV	7
    147  1.1  jdolecek 
    148  1.1  jdolecek #define WE790_REV_790	0x20
    149  1.1  jdolecek #define WE790_REV_795	0x40
    150  1.1  jdolecek 
    151  1.1  jdolecek /*
    152  1.1  jdolecek  * 79X RAM Address Register (RAR)
    153  1.1  jdolecek  *      Enabled with SWH bit=1 in HWR register
    154  1.1  jdolecek  */
    155  1.1  jdolecek 
    156  1.1  jdolecek #define WE790_RAR	0x0b
    157  1.1  jdolecek 
    158  1.1  jdolecek #define WE790_RAR_SZ8	0x00	/* 8k memory buffer */
    159  1.1  jdolecek #define WE790_RAR_SZ16	0x10	/* 16k memory buffer */
    160  1.1  jdolecek #define WE790_RAR_SZ32	0x20	/* 32k memory buffer */
    161  1.1  jdolecek #define WE790_RAR_SZ64	0x30	/* 64k memory buffer */
    162  1.1  jdolecek 
    163  1.1  jdolecek /*
    164  1.1  jdolecek  * General Control Register (GCR)
    165  1.1  jdolecek  * Enabled with SWH bit == 1 in HWR register
    166  1.1  jdolecek  */
    167  1.1  jdolecek #define	WE790_GCR	0x0d
    168  1.1  jdolecek 
    169  1.1  jdolecek #define	WE790_GCR_LIT	0x01	/* on for UTP */
    170  1.1  jdolecek #define	WE790_GCR_GPOUT	0x02	/* if BNC is enabled */
    171  1.1  jdolecek #define	WE790_GCR_IR0	0x04	/* bit 0 of encoded IRQ */
    172  1.1  jdolecek #define	WE790_GCR_IR1	0x08	/* bit 1 of encoded IRQ */
    173  1.1  jdolecek #define	WE790_GCR_ZWSEN	0x20	/* zero wait state enable */
    174  1.1  jdolecek #define	WE790_GCR_IR2	0x40	/* bit 2 of encoded IRQ */
    175  1.1  jdolecek /*
    176  1.1  jdolecek  * The three bits of the encoded IRQ are decoded as follows:
    177  1.1  jdolecek  *
    178  1.1  jdolecek  * IR2 IR1 IR0  IRQ
    179  1.1  jdolecek  *  0   0   0   none
    180  1.1  jdolecek  *  0   0   1   9
    181  1.1  jdolecek  *  0   1   0   3
    182  1.1  jdolecek  *  0   1   1   5
    183  1.1  jdolecek  *  1   0   0   7
    184  1.1  jdolecek  *  1   0   1   10
    185  1.1  jdolecek  *  1   1   0   11
    186  1.1  jdolecek  *  1   1   1   15
    187  1.1  jdolecek  */
    188  1.1  jdolecek 
    189  1.1  jdolecek /* i/o base offset to CARD ID */
    190  1.1  jdolecek #define WE_CARD_ID	WE_PROM+6
    191  1.1  jdolecek 
    192  1.1  jdolecek /* Board type codes in card ID */
    193  1.1  jdolecek #define WE_TYPE_WD8003S		0x02
    194  1.1  jdolecek #define WE_TYPE_WD8003E		0x03
    195  1.1  jdolecek #define WE_TYPE_WD8013EBT	0x05
    196  1.1  jdolecek #define	WE_TYPE_TOSHIBA1	0x11	/* named PCETA1 */
    197  1.1  jdolecek #define	WE_TYPE_TOSHIBA2	0x12	/* named PCETA2 */
    198  1.1  jdolecek #define	WE_TYPE_TOSHIBA3	0x13	/* named PCETB */
    199  1.1  jdolecek #define	WE_TYPE_TOSHIBA4	0x14	/* named PCETC */
    200  1.1  jdolecek #define	WE_TYPE_WD8003W		0x24
    201  1.1  jdolecek #define	WE_TYPE_WD8003EB	0x25
    202  1.1  jdolecek #define	WE_TYPE_WD8013W		0x26
    203  1.1  jdolecek #define WE_TYPE_WD8013EP	0x27
    204  1.1  jdolecek #define WE_TYPE_WD8013WC	0x28
    205  1.1  jdolecek #define WE_TYPE_WD8013EPC	0x29
    206  1.1  jdolecek #define	WE_TYPE_SMC8216T	0x2a
    207  1.1  jdolecek #define	WE_TYPE_SMC8216C	0x2b
    208  1.1  jdolecek #define WE_TYPE_WD8013EBP	0x2c
    209  1.1  jdolecek 
    210  1.1  jdolecek /* Bit definitions in card ID */
    211  1.1  jdolecek #define	WE_REV_MASK		0x1f	/* Revision mask */
    212  1.1  jdolecek #define	WE_SOFTCONFIG		0x20	/* Soft config */
    213  1.1  jdolecek #define	WE_LARGERAM		0x40	/* Large RAM */
    214  1.1  jdolecek #define	WE_MICROCHANEL		0x80	/* Microchannel bus (vs. isa) */
    215  1.1  jdolecek 
    216  1.1  jdolecek /*
    217  1.1  jdolecek  * Checksum total.  All 8 bytes in station address PROM will add up to this.
    218  1.1  jdolecek  */
    219  1.1  jdolecek #ifdef TOSH_ETHER
    220  1.1  jdolecek #define WE_ROM_CHECKSUM_TOTAL	0xA5
    221  1.1  jdolecek #else
    222  1.1  jdolecek #define WE_ROM_CHECKSUM_TOTAL	0xFF
    223  1.1  jdolecek #endif
    224  1.1  jdolecek 
    225  1.1  jdolecek #define WE_NIC_OFFSET		0x10	/* I/O base offset to NIC */
    226  1.1  jdolecek #define WE_ASIC_OFFSET		0	/* I/O base offset to ASIC */
    227  1.1  jdolecek #define	WE_NIC_NPORTS		16
    228  1.1  jdolecek #define	WE_ASIC_NPORTS		16
    229  1.1  jdolecek #define WE_NPORTS		(WE_NIC_NPORTS + WE_ASIC_NPORTS)
    230  1.1  jdolecek 
    231  1.1  jdolecek #define WE_PAGE_OFFSET	0	/* page offset for NIC access to mem */
    232