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