xref: /dflybsd-src/sys/dev/netif/sk/yukonreg.h (revision 86d7f5d305c6adaa56ff4582ece9859d73106103)
186d7f5d3SJohn Marino /*
286d7f5d3SJohn Marino  * $OpenBSD: yukonreg.h,v 1.2 2003/08/12 05:23:06 nate Exp $
386d7f5d3SJohn Marino  * $DragonFly: src/sys/dev/netif/sk/yukonreg.h,v 1.2 2006/11/14 12:52:31 sephe Exp $
486d7f5d3SJohn Marino  */
586d7f5d3SJohn Marino /*
686d7f5d3SJohn Marino  * Copyright (c) 2003 Nathan L. Binkert <binkertn@umich.edu>
786d7f5d3SJohn Marino  *
886d7f5d3SJohn Marino  * Permission to use, copy, modify, and distribute this software for any
986d7f5d3SJohn Marino  * purpose with or without fee is hereby granted, provided that the above
1086d7f5d3SJohn Marino  * copyright notice and this permission notice appear in all copies.
1186d7f5d3SJohn Marino  *
1286d7f5d3SJohn Marino  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
1386d7f5d3SJohn Marino  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
1486d7f5d3SJohn Marino  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
1586d7f5d3SJohn Marino  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
1686d7f5d3SJohn Marino  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
1786d7f5d3SJohn Marino  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
1886d7f5d3SJohn Marino  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
1986d7f5d3SJohn Marino  *
2086d7f5d3SJohn Marino  * $FreeBSD$
2186d7f5d3SJohn Marino  */
2286d7f5d3SJohn Marino 
2386d7f5d3SJohn Marino /* General Purpose Status Register (GPSR) */
2486d7f5d3SJohn Marino #define YUKON_GPSR		0x0000
2586d7f5d3SJohn Marino 
2686d7f5d3SJohn Marino #define YU_GPSR_SPEED		0x8000	/* speed 0 - 10Mbps, 1 - 100Mbps */
2786d7f5d3SJohn Marino #define YU_GPSR_DUPLEX		0x4000	/* 0 - half duplex, 1 - full duplex */
2886d7f5d3SJohn Marino #define YU_GPSR_FCTL_TX		0x2000	/* Tx flow control, 1 - disabled */
2986d7f5d3SJohn Marino #define YU_GPSR_LINK		0x1000	/* link status (down/up) */
3086d7f5d3SJohn Marino #define YU_GPSR_PAUSE		0x0800	/* flow control enable/disable */
3186d7f5d3SJohn Marino #define YU_GPSR_TX_IN_PROG	0x0400	/* transmit in progress */
3286d7f5d3SJohn Marino #define YU_GPSR_EXCESS_COL	0x0200	/* excessive collisions occurred */
3386d7f5d3SJohn Marino #define YU_GPSR_LATE_COL	0x0100	/* late collision occurred */
3486d7f5d3SJohn Marino #define YU_GPSR_MII_PHY_STC	0x0020	/* MII PHY status change */
3586d7f5d3SJohn Marino #define YU_GPSR_GIG_SPEED	0x0010	/* Gigabit Speed (0 - use speed bit) */
3686d7f5d3SJohn Marino #define YU_GPSR_PARTITION	0x0008	/* partition mode */
3786d7f5d3SJohn Marino #define YU_GPSR_FCTL_RX		0x0004	/* Rx flow control, 1 - disabled  */
3886d7f5d3SJohn Marino #define YU_GPSR_PROMS_EN	0x0002	/* promiscuous mode, 1 - enabled */
3986d7f5d3SJohn Marino 
4086d7f5d3SJohn Marino /* General Purpose Control Register (GPCR) */
4186d7f5d3SJohn Marino #define YUKON_GPCR		0x0004
4286d7f5d3SJohn Marino 
4386d7f5d3SJohn Marino #define YU_GPCR_FCTL_TX_DIS	0x2000	/* Disable Tx flow control 802.3x */
4486d7f5d3SJohn Marino #define YU_GPCR_TXEN		0x1000	/* Transmit Enable */
4586d7f5d3SJohn Marino #define YU_GPCR_RXEN		0x0800	/* Receive Enable */
4686d7f5d3SJohn Marino #define YU_GPCR_BURSTEN		0x0400	/* Burst Mode Enable */
4786d7f5d3SJohn Marino #define YU_GPCR_LPBK		0x0200	/* MAC Loopback Enable */
4886d7f5d3SJohn Marino #define YU_GPCR_PAR		0x0100	/* Partition Enable */
4986d7f5d3SJohn Marino #define YU_GPCR_GIG		0x0080	/* Gigabit Speed 1000Mbps */
5086d7f5d3SJohn Marino #define YU_GPCR_FLP		0x0040	/* Force Link Pass */
5186d7f5d3SJohn Marino #define YU_GPCR_DUPLEX		0x0020	/* Duplex Enable */
5286d7f5d3SJohn Marino #define YU_GPCR_FCTL_RX_DIS	0x0010	/* Disable Rx flow control 802.3x */
5386d7f5d3SJohn Marino #define YU_GPCR_SPEED		0x0008	/* Port Speed 100Mbps */
5486d7f5d3SJohn Marino #define YU_GPCR_DPLX_DIS	0x0004	/* Disable Auto-Update for duplex */
5586d7f5d3SJohn Marino #define YU_GPCR_FCTL_DIS	0x0002	/* Disable Auto-Update for 802.3x */
5686d7f5d3SJohn Marino #define YU_GPCR_SPEED_DIS	0x0001	/* Disable Auto-Update for speed */
5786d7f5d3SJohn Marino 
5886d7f5d3SJohn Marino /* Transmit Control Register (TCR) */
5986d7f5d3SJohn Marino #define YUKON_TCR		0x0008
6086d7f5d3SJohn Marino 
6186d7f5d3SJohn Marino #define YU_TCR_FJ		0x8000	/* force jam / flow control */
6286d7f5d3SJohn Marino #define YU_TCR_CRCD		0x4000	/* insert CRC (0 - enable) */
6386d7f5d3SJohn Marino #define YU_TCR_PADD		0x2000	/* pad packets to 64b (0 - enable) */
6486d7f5d3SJohn Marino #define YU_TCR_COLTH		0x1c00	/* collision threshold */
6586d7f5d3SJohn Marino 
6686d7f5d3SJohn Marino /* Receive Control Register (RCR) */
6786d7f5d3SJohn Marino #define YUKON_RCR		0x000c
6886d7f5d3SJohn Marino 
6986d7f5d3SJohn Marino #define YU_RCR_UFLEN		0x8000	/* unicast filter enable */
7086d7f5d3SJohn Marino #define YU_RCR_MUFLEN		0x4000	/* multicast filter enable */
7186d7f5d3SJohn Marino #define YU_RCR_CRCR		0x2000	/* remove CRC */
7286d7f5d3SJohn Marino #define YU_RCR_PASSFC		0x1000	/* pass flow control packets */
7386d7f5d3SJohn Marino 
7486d7f5d3SJohn Marino /* Transmit Flow Control Register (TFCR) */
7586d7f5d3SJohn Marino #define YUKON_TFCR		0x0010	/* Pause Time */
7686d7f5d3SJohn Marino 
7786d7f5d3SJohn Marino /* Transmit Parameter Register (TPR) */
7886d7f5d3SJohn Marino #define YUKON_TPR		0x0014
7986d7f5d3SJohn Marino 
8086d7f5d3SJohn Marino #define YU_TPR_JAM_LEN(x)	(((x) & 0x3) << 14)
8186d7f5d3SJohn Marino #define YU_TPR_JAM_IPG(x)	(((x) & 0x1f) << 9)
8286d7f5d3SJohn Marino #define YU_TPR_JAM2DATA_IPG(x)	(((x) & 0x1f) << 4)
8386d7f5d3SJohn Marino 
8486d7f5d3SJohn Marino /* Serial Mode Register (SMR) */
8586d7f5d3SJohn Marino #define YUKON_SMR		0x0018
8686d7f5d3SJohn Marino 
8786d7f5d3SJohn Marino #define YU_SMR_DATA_BLIND(x)	(((x) & 0x1f) << 11)
8886d7f5d3SJohn Marino #define YU_SMR_LIMIT4		0x0400	/* reset after 16 / 4 collisions */
8986d7f5d3SJohn Marino #define YU_SMR_MFL_JUMBO	0x0100	/* max frame length for jumbo frames */
9086d7f5d3SJohn Marino #define YU_SMR_MFL_VLAN		0x0200	/* max frame length + vlan tag */
9186d7f5d3SJohn Marino #define YU_SMR_IPG_DATA(x)	((x) & 0x1f)
9286d7f5d3SJohn Marino 
9386d7f5d3SJohn Marino /* Source Address Low #1 (SAL1) */
9486d7f5d3SJohn Marino #define YUKON_SAL1		0x001c	/* SA1[15:0] */
9586d7f5d3SJohn Marino 
9686d7f5d3SJohn Marino /* Source Address Middle #1 (SAM1) */
9786d7f5d3SJohn Marino #define YUKON_SAM1		0x0020	/* SA1[31:16] */
9886d7f5d3SJohn Marino 
9986d7f5d3SJohn Marino /* Source Address High #1 (SAH1) */
10086d7f5d3SJohn Marino #define YUKON_SAH1		0x0024	/* SA1[47:32] */
10186d7f5d3SJohn Marino 
10286d7f5d3SJohn Marino /* Source Address Low #2 (SAL2) */
10386d7f5d3SJohn Marino #define YUKON_SAL2		0x0028	/* SA2[15:0] */
10486d7f5d3SJohn Marino 
10586d7f5d3SJohn Marino /* Source Address Middle #2 (SAM2) */
10686d7f5d3SJohn Marino #define YUKON_SAM2		0x002c	/* SA2[31:16] */
10786d7f5d3SJohn Marino 
10886d7f5d3SJohn Marino /* Source Address High #2 (SAH2) */
10986d7f5d3SJohn Marino #define YUKON_SAH2		0x0030	/* SA2[47:32] */
11086d7f5d3SJohn Marino 
11186d7f5d3SJohn Marino /* Multicatst Address Hash Register 1 (MCAH1) */
11286d7f5d3SJohn Marino #define YUKON_MCAH1		0x0034
11386d7f5d3SJohn Marino 
11486d7f5d3SJohn Marino /* Multicatst Address Hash Register 2 (MCAH2) */
11586d7f5d3SJohn Marino #define YUKON_MCAH2		0x0038
11686d7f5d3SJohn Marino 
11786d7f5d3SJohn Marino /* Multicatst Address Hash Register 3 (MCAH3) */
11886d7f5d3SJohn Marino #define YUKON_MCAH3		0x003c
11986d7f5d3SJohn Marino 
12086d7f5d3SJohn Marino /* Multicatst Address Hash Register 4 (MCAH4) */
12186d7f5d3SJohn Marino #define YUKON_MCAH4		0x0040
12286d7f5d3SJohn Marino 
12386d7f5d3SJohn Marino /* Transmit Interrupt Register (TIR) */
12486d7f5d3SJohn Marino #define YUKON_TIR		0x0044
12586d7f5d3SJohn Marino 
12686d7f5d3SJohn Marino #define YU_TIR_OUT_UNICAST	0x0001	/* Num Unicast Packets Transmitted */
12786d7f5d3SJohn Marino #define YU_TIR_OUT_BROADCAST	0x0002	/* Num Broadcast Packets Transmitted */
12886d7f5d3SJohn Marino #define YU_TIR_OUT_PAUSE	0x0004	/* Num Pause Packets Transmitted */
12986d7f5d3SJohn Marino #define YU_TIR_OUT_MULTICAST	0x0008	/* Num Multicast Packets Transmitted */
13086d7f5d3SJohn Marino #define YU_TIR_OUT_OCTETS	0x0030	/* Num Bytes Transmitted */
13186d7f5d3SJohn Marino #define YU_TIR_OUT_64_OCTETS	0x0000	/* Num Packets Transmitted */
13286d7f5d3SJohn Marino #define YU_TIR_OUT_127_OCTETS	0x0000	/* Num Packets Transmitted */
13386d7f5d3SJohn Marino #define YU_TIR_OUT_255_OCTETS	0x0000	/* Num Packets Transmitted */
13486d7f5d3SJohn Marino #define YU_TIR_OUT_511_OCTETS	0x0000	/* Num Packets Transmitted */
13586d7f5d3SJohn Marino #define YU_TIR_OUT_1023_OCTETS	0x0000	/* Num Packets Transmitted */
13686d7f5d3SJohn Marino #define YU_TIR_OUT_1518_OCTETS	0x0000	/* Num Packets Transmitted */
13786d7f5d3SJohn Marino #define YU_TIR_OUT_MAX_OCTETS	0x0000	/* Num Packets Transmitted */
13886d7f5d3SJohn Marino #define YU_TIR_OUT_SPARE	0x0000	/* Num Packets Transmitted */
13986d7f5d3SJohn Marino #define YU_TIR_OUT_COLLISIONS	0x0000	/* Num Packets Transmitted */
14086d7f5d3SJohn Marino #define YU_TIR_OUT_LATE		0x0000	/* Num Packets Transmitted */
14186d7f5d3SJohn Marino 
14286d7f5d3SJohn Marino /* Receive Interrupt Register (RIR) */
14386d7f5d3SJohn Marino #define YUKON_RIR		0x0048
14486d7f5d3SJohn Marino 
14586d7f5d3SJohn Marino /* Transmit and Receive Interrupt Register (TRIR) */
14686d7f5d3SJohn Marino #define YUKON_TRIR		0x004c
14786d7f5d3SJohn Marino 
14886d7f5d3SJohn Marino /* Transmit Interrupt Mask Register (TIMR) */
14986d7f5d3SJohn Marino #define YUKON_TIMR		0x0050
15086d7f5d3SJohn Marino 
15186d7f5d3SJohn Marino /* Receive Interrupt Mask Register (RIMR) */
15286d7f5d3SJohn Marino #define YUKON_RIMR		0x0054
15386d7f5d3SJohn Marino 
15486d7f5d3SJohn Marino /* Transmit and Receive Interrupt Mask Register (TRIMR) */
15586d7f5d3SJohn Marino #define YUKON_TRIMR		0x0058
15686d7f5d3SJohn Marino 
15786d7f5d3SJohn Marino /* SMI Control Register (SMICR) */
15886d7f5d3SJohn Marino #define YUKON_SMICR		0x0080
15986d7f5d3SJohn Marino 
16086d7f5d3SJohn Marino #define YU_SMICR_PHYAD(x)	(((x) & 0x1f) << 11)
16186d7f5d3SJohn Marino #define YU_SMICR_REGAD(x)	(((x) & 0x1f) << 6)
16286d7f5d3SJohn Marino #define YU_SMICR_OPCODE		0x0020	/* opcode (0 - write, 1 - read) */
16386d7f5d3SJohn Marino #define YU_SMICR_OP_READ	0x0020	/* opcode read */
16486d7f5d3SJohn Marino #define YU_SMICR_OP_WRITE	0x0000	/* opcode write */
16586d7f5d3SJohn Marino #define YU_SMICR_READ_VALID	0x0010	/* read valid */
16686d7f5d3SJohn Marino #define YU_SMICR_BUSY		0x0008	/* busy (writing) */
16786d7f5d3SJohn Marino 
16886d7f5d3SJohn Marino /* SMI Data Register (SMIDR) */
16986d7f5d3SJohn Marino #define YUKON_SMIDR		0x0084
17086d7f5d3SJohn Marino 
17186d7f5d3SJohn Marino /* PHY Addres Register (PAR) */
17286d7f5d3SJohn Marino #define YUKON_PAR		0x0088
17386d7f5d3SJohn Marino 
17486d7f5d3SJohn Marino #define YU_PAR_MIB_CLR		0x0020	/* MIB Counters Clear Mode */
17586d7f5d3SJohn Marino #define YU_PAR_LOAD_TSTCNT	0x0010	/* Load count 0xfffffff0 into cntr */
17686d7f5d3SJohn Marino 
17786d7f5d3SJohn Marino /* Receive status */
17886d7f5d3SJohn Marino #define YU_RXSTAT_FOFL		0x00000001	/* Rx FIFO overflow */
17986d7f5d3SJohn Marino #define YU_RXSTAT_CRCERR	0x00000002	/* CRC error */
18086d7f5d3SJohn Marino #define YU_RXSTAT_FRAGMENT	0x00000008	/* fragment */
18186d7f5d3SJohn Marino #define YU_RXSTAT_LONGERR	0x00000010	/* too long packet */
18286d7f5d3SJohn Marino #define YU_RXSTAT_MIIERR	0x00000020	/* MII error */
18386d7f5d3SJohn Marino #define YU_RXSTAT_BADFC		0x00000040	/* bad flow-control packet */
18486d7f5d3SJohn Marino #define YU_RXSTAT_GOODFC	0x00000080	/* good flow-control packet */
18586d7f5d3SJohn Marino #define YU_RXSTAT_RXOK		0x00000100	/* receice OK (Good packet) */
18686d7f5d3SJohn Marino #define YU_RXSTAT_BROADCAST	0x00000200	/* broadcast packet */
18786d7f5d3SJohn Marino #define YU_RXSTAT_MULTICAST	0x00000400	/* multicast packet */
18886d7f5d3SJohn Marino #define YU_RXSTAT_RUNT		0x00000800	/* undersize packet */
18986d7f5d3SJohn Marino #define YU_RXSTAT_JABBER	0x00001000	/* jabber packet */
19086d7f5d3SJohn Marino #define YU_RXSTAT_VLAN		0x00002000	/* VLAN packet */
19186d7f5d3SJohn Marino #define YU_RXSTAT_LENSHIFT	16
19286d7f5d3SJohn Marino 
19386d7f5d3SJohn Marino #define	YU_RXSTAT_BYTES(x)	((x) >> YU_RXSTAT_LENSHIFT)
194