1139749Simp/*-
214645Sjkh * Hardware specification of various 8696x based Ethernet cards.
314645Sjkh * Contributed by M. Sekiguchi <seki@sysrap.cs.fujitsu.co.jp>
414645Sjkh *
58027Swollman * All Rights Reserved, Copyright (C) Fujitsu Limited 1995
68027Swollman *
78027Swollman * This software may be used, modified, copied, distributed, and sold,
88027Swollman * in both source and binary form provided that the above copyright,
98027Swollman * these terms and the following disclaimer are retained.  The name of
108027Swollman * the author and/or the contributor may not be used to endorse or
118027Swollman * promote products derived from this software without specific prior
128027Swollman * written permission.
138027Swollman *
148027Swollman * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND THE CONTRIBUTOR ``AS IS'' AND
158027Swollman * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
168027Swollman * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
178027Swollman * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR THE CONTRIBUTOR BE LIABLE
188027Swollman * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
198027Swollman * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
208027Swollman * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
218027Swollman * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
228027Swollman * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
238027Swollman * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
248027Swollman * SUCH DAMAGE.
258027Swollman */
268027Swollman
2750477Speter/* $FreeBSD$ */
288027Swollman
298027Swollman/*
308027Swollman * Registers on FMV-180 series' ISA bus interface ASIC.
318027Swollman * I'm not sure the following register names are appropriate.
328027Swollman * Doesn't it look silly, eh?  FIXME.
338027Swollman */
348027Swollman
3514645Sjkh#define FE_FMV0		16	/* Card status register #0	*/
3614645Sjkh#define FE_FMV1		17	/* Card status register #1	*/
3714645Sjkh#define FE_FMV2		18	/* Card config register #0	*/
3814645Sjkh#define FE_FMV3		19	/* Card config register #1	*/
398027Swollman#define FE_FMV4		20	/* Station address #1		*/
408027Swollman#define FE_FMV5		21	/* Station address #2		*/
418027Swollman#define FE_FMV6		22	/* Station address #3		*/
428027Swollman#define FE_FMV7		23	/* Station address #4		*/
438027Swollman#define FE_FMV8		24	/* Station address #5		*/
448027Swollman#define FE_FMV9		25	/* Station address #6		*/
4514645Sjkh#define FE_FMV10	26	/* Buffer RAM control register	*/
4614645Sjkh#define FE_FMV11	27	/* Buffer RAM data register	*/
478027Swollman
488027Swollman/*
498027Swollman * FMV-180 series' ASIC register values.
508027Swollman */
518027Swollman
5214645Sjkh/* FMV0: Card status register #0: Misc info?  */
5314645Sjkh#define FE_FMV0_MEDIA	0x07	/* Supported physical media.	*/
5414645Sjkh#define FE_FMV0_PRRDY	0x10	/* ???				*/
5514645Sjkh#define FE_FMV0_PRERR	0x20	/* ???				*/
5614645Sjkh#define FE_FMV0_ERRDY	0x40	/* ???				*/
5714645Sjkh#define FE_FMV0_IREQ	0x80	/* ???				*/
588027Swollman
5914645Sjkh#define FE_FMV0_MEDIUM_5	0x01	/* 10base5/Dsub		*/
6014645Sjkh#define FE_FMV0_MEDIUM_2	0x02	/* 10base2/BNC		*/
6114645Sjkh#define FE_FMV0_MEDIUM_T	0x04	/* 10baseT/RJ45		*/
628027Swollman
6314645Sjkh/* Card status register #1: Hardware revision.  */
6414645Sjkh#define FE_FMV1_REV	0x0F	/* Card revision		*/
6514645Sjkh#define FE_FMV1_UPPER	0xF0	/* Usage unknown		*/
668027Swollman
6714645Sjkh/* Card config register #0: I/O port address assignment.  */
6814645Sjkh#define FE_FMV2_IOS	0x07	/* I/O selection.		*/
6914645Sjkh#define FE_FMV2_MES	0x38	/* ??? boot ROM?		*/
7014645Sjkh#define FE_FMV2_IRS	0xC0	/* IRQ selection.		*/
718027Swollman
7214645Sjkh#define FE_FMV2_IOS_SHIFT	0
7314645Sjkh#define FE_FMV2_MES_SHIFT	3
7414645Sjkh#define FE_FMV2_IRS_SHIFT	6
758027Swollman
7614645Sjkh/* Card config register #1: IRQ enable  */
7714645Sjkh#define FE_FMV3_IRQENB	0x80	/* IRQ enable.			*/
788027Swollman
7965832Snyan
808027Swollman/*
8114645Sjkh * Register(?) specific to AT1700/RE2000.
828027Swollman */
838027Swollman
8414645Sjkh#define FE_ATI_RESET	0x1F	/* Write to reset the 86965.	*/
858027Swollman
8614645Sjkh/* EEPROM allocation (offsets) of AT1700/RE2000.  */
8714645Sjkh#define FE_ATI_EEP_ADDR		0x08	/* Station address.  (8-13)	*/
8814645Sjkh#define	FE_ATI_EEP_MEDIA	0x18	/* Media type.			*/
8914645Sjkh#define	FE_ATI_EEP_MAGIC	0x19	/* XXX Magic.			*/
9014645Sjkh#define FE_ATI_EEP_MODEL	0x1e	/* Hardware type.		*/
9114645Sjkh#define	FE_ATI_EEP_REVISION	0x1f	/* Hardware revision.		*/
9214645Sjkh
9314645Sjkh/* Value for FE_ATI_EEP_MODEL.  */
9414645Sjkh#define FE_ATI_MODEL_AT1700T	0x00
9514645Sjkh#define FE_ATI_MODEL_AT1700BT	0x01
9614645Sjkh#define FE_ATI_MODEL_AT1700FT	0x02
9714645Sjkh#define FE_ATI_MODEL_AT1700AT	0x03
9814645Sjkh
9965832Snyan
1008027Swollman/*
1018027Swollman * Registers on MBH10302.
1028027Swollman */
1038027Swollman
1048027Swollman#define FE_MBH0		0x10	/* ???  Including interrupt.	*/
1058027Swollman#define FE_MBH1		0x11	/* ???				*/
1068027Swollman#define FE_MBH10	0x1A	/* Station address.  (10 - 15)	*/
1078027Swollman
1088027Swollman/* Values to be set in MBH0 register.  */
1098027Swollman#define FE_MBH0_MAGIC	0x0D	/* Just a magic constant?	*/
1108027Swollman#define FE_MBH0_INTR	0x10	/* Master interrupt control.	*/
1118027Swollman
1128027Swollman#define FE_MBH0_INTR_ENABLE	0x10	/* Enable interrupts.	*/
1138027Swollman#define FE_MBH0_INTR_DISABLE	0x00	/* Disable interrupts.	*/
11414645Sjkh
11565832Snyan
11614645Sjkh/*
11714645Sjkh * Registers on RE1000.  (*NOT* on RE1000 Plus.)
11814645Sjkh */
11914645Sjkh
12014645Sjkh/* IRQ configuration.  */
12114645Sjkh#define	FE_RE1000_IRQCONF	0x10
12265832Snyan
12365832Snyan
12465832Snyan/*
12565832Snyan * Fujitsu MB86965 JLI mode support routines.
12665832Snyan */
12765832Snyan
12865832Snyan/* Datasheet for 86965 explicitly states that it only supports serial
12965832Snyan * EEPROM with 16 words (32 bytes) capacity.  (I.e., 93C06.)  However,
13065832Snyan * ones with 64 words (128 bytes) are available in the marked, namely
13165832Snyan * 93C46, and are also fully compatible with 86965.  It is known that
13265832Snyan * some boards (e.g., ICL) actually have 93C46 on them and use extra
13365832Snyan * storage to keep various config info.  */
13465832Snyan#define JLI_EEPROM_SIZE	128
13565832Snyan
13665832Snyan
13765832Snyan/*
13865832Snyan * SSi 78Q8377A support routines.
13965832Snyan */
14065832Snyan#define SSI_EEPROM_SIZE	512
14165832Snyan#define SSI_DIN	0x01
14265832Snyan#define SSI_DAT	0x01
14365832Snyan#define SSI_CSL	0x02
14465832Snyan#define SSI_CLK	0x04
14565832Snyan#define SSI_EEP	0x10
14665832Snyan
14765832Snyan#define	FE_SSI_EEP_IRQ		9	/* Irq ???		*/
14865832Snyan#define	FE_SSI_EEP_ADDR		16	/* Station(MAC) address	*/
14965832Snyan#define	FE_SSI_EEP_DUPLEX	25	/* Duplex mode ???	*/
15065832Snyan
15165832Snyan
15265832Snyan/*
15365832Snyan * TDK/LANX boards support routines.
15465832Snyan */
15565832Snyan
15665832Snyan/* AX012/AX013 equips an X24C01 chip, which has 128 bytes of memory cells.  */
15765832Snyan#define LNX_EEPROM_SIZE	128
15865832Snyan
15965832Snyan/* Bit assignments and command definitions for the serial EEPROM
16065832Snyan   interface register in LANX ASIC.  */
16165832Snyan#define LNX_SDA_HI	0x08	/* Drive SDA line high (logical 1.)	*/
16265832Snyan#define LNX_SDA_LO	0x00	/* Drive SDA line low (logical 0.)	*/
16365832Snyan#define LNX_SDA_FL	0x08	/* Float (don't drive) SDA line.	*/
16465832Snyan#define LNX_SDA_IN	0x01	/* Mask for reading SDA line.		*/
16565832Snyan#define LNX_CLK_HI	0x04	/* Drive clock line high (active.)	*/
16665832Snyan#define LNX_CLK_LO	0x00	/* Drive clock line low (inactive.)	*/
167