summaryrefslogtreecommitdiff
path: root/sys/dev/mii/acphyreg.h
blob: 3eb61cd7c4eb5770d7f83903cf3fb1d3f375392a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
/*	$OpenBSD: acphyreg.h,v 1.2 2004/10/01 04:08:45 jsg Exp $	*/
/*	$NetBSD: acphyreg.h,v 1.1 2001/08/24 17:54:33 thorpej Exp $	*/

/*
 * Copyright 2001 Wasabi Systems, Inc.
 * All rights reserved.
 *
 * Written by Jason R. Thorpe for Wasabi Systems, Inc.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 3. All advertising materials mentioning features or use of this software
 *    must display the following acknowledgement:
 *	This product includes software developed for the NetBSD Project by
 *	Wasabi Systems, Inc.
 * 4. The name of Wasabi Systems, Inc. may not be used to endorse
 *    or promote products derived from this software without specific prior
 *    written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY WASABI SYSTEMS, INC. ``AS IS'' AND
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL WASABI SYSTEMS, INC
 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 * POSSIBILITY OF SUCH DAMAGE.
 */

#ifndef _DEV_MII_ACPHYREG_H_
#define	_DEV_MII_ACPHYREG_H_

/*
 * Altima AC101 PHY registers.
 *
 * Note the AC101 and the AMD Ac79c874 are the same PHY core.  There
 * are some registers documented in the AC101 manual that are not in
 * the Am79c874 manual, and vice-versa.  I have no idea how to tell
 * the two apart, but we don't really use the registers that fall into
 * this category, anyhow.
 */

#define	MII_ACPHY_PILR		0x10	/* polarity and interrupt control */
#define	PILR_REPEATER		0x8000	/* repeater mode */
#define	PILR_INTR_LEVL		0x4000	/* 1 = active high, 0 = active low */
#define	PILR_SQE_INHIBIT	0x0800	/* disable 10T SQE testing */
#define	PILR_10T_LOOP		0x0400	/* enable loopback in 10T */
#define	PILR_GPIO1_DATA		0x0200	/* GPIO1 pin */
#define	PILR_GPIO1_DIR		0x0100	/* 1 = input */
#define	PILR_GPIO0_DATA		0x0080	/* GPIO0 pin */
#define	PILR_GPIO0_DIR		0x0040	/* 1 = input */
#define	PILR_AUTO_POL_DIS	0x0020	/* disable auto-polarity */
#define	PILR_REVERSE_POL	0x0010	/* 1 = reverse, 0 = normal */
#define	PILR_RXCLK_CTRL		0x0001	/* disable RX_CLK when idle */


#define	MII_ACPHY_ICSR		0x11	/* interrupt control/status */
#define	ICSR_JABBER_IE		0x8000	/* jabber interrupt enable */
#define	ICSR_RX_ER_IE		0x4000	/* Rx error interrupt enable */
#define	ICSR_PAGE_RX_IE		0x2000	/* page received interrupt enable */
#define	ICSR_PD_FAULT_IE	0x1000	/* parallel detection fault int en */
#define	ICSR_LP_ACK_IE		0x0800	/* link partner ACK interrupt en */
#define	ICSR_LNK_NOT_OK_IE	0x0400	/* link not okay interrupt enable */
#define	ICSR_R_FAULT_IE		0x0200	/* remote fault interrupt enable */
#define	ICSR_ANEG_COMP_IE	0x0100	/* autonegotiation complete int en */
#define	ICSR_JABBER_INT		0x0080	/* jabber interrupt */
#define	ICSR_RX_ER_INT		0x0040	/* Rx error interrupt */
#define	ICSR_PAGE_RX_INT	0x0020	/* page received interrupt */
#define	ICSR_PD_FAULT_INT	0x0010	/* parallel detection fault interrupt */
#define	ICSR_LP_ACK_INT		0x0008	/* link partner ACK interrupt */
#define	ICSR_LNK_NOT_OK_INT	0x0004	/* link not okay interrupt */
#define	ICSR_R_FAULT_INT	0x0002	/* remote fault interrupt */
#define	ICSR_ANEG_COMP_INT	0x0001	/* autonegotiation complete interrupt */


#define	MII_ACPHY_DR		0x12	/* diagnostic register */
#define	DR_DPLX			0x0800	/* full-duplex resolved */
#define	DR_SPEED		0x0400	/* 100BASE-TX resolved */
#define	DR_RX_PASS		0x0200	/* manchester/signal received */
#define	DR_RX_LOCK		0x0100	/* PLL signal has been locked */


#define	MII_ACPHY_PLR		0x13	/* power/loopback register */
#define	PLR_TB125		0x0040	/* Tx transformer ratio 1.25:1 */
#define	PLR_LOW_POWER_MODE	0x0020	/* enable advanced power saving mode */
#define	PLR_TEST_LOOPBACK	0x0010	/* enable test loopback */
#define	PLR_DIGITAL_LOOPBACK	0x0008	/* enable loopback */
#define	PLR_LP_LPBK		0x0004	/* enable link pulse loopback */
#define	PLR_NLP_LINK_INT_TEST	0x0002	/* send NLP instead of FLP */
#define	PLR_REDUCE_TIMER	0x0001	/* reduce time constant for aneg */


/*	AC101 only	*/
#define	MII_ACPHY_CMR		0x14	/* cable measurement register */
#define	CMR_MASK		0x00f0	/* cable measurement mask */


#define	MII_ACPHY_MCR		0x15	/* mode control register */
#define	MCR_NLP_DISABLE		0x4000	/* force good 10BASE-T link */
#define	MCR_FORCE_LINK_UP	0x2000	/* force good 100BASE-TX link */
#define	MCR_JABBER_DISABLE	0x1000	/* disable jabber function */
#define	MCR_10BT_SEL		0x0800	/* enable 7-wire 10T operation */
#define	MCR_CONF_ALED		0x0400	/* 1 = ALED only Rx, 0 = ALED Rx/Tx */
#define	MCR_LED_SEL		0x0200	/* 1 = tqphy-compat LED config */
#define	MCR_FEF_DIS		0x0100	/* disable far-end-fault insertion */
#define	MCR_FORCE_FEF_TX	0x0080	/* force FEF transmission */
#define	MCR_RX_ER_CNT_FULL	0x0040	/* Rx error counter full */
#define	MCR_DIS_RX_ER_CNT	0x0020	/* disable Rx error counter */
#define	MCR_DIS_WDT		0x0010	/* disable the watchdog timer */
#define	MCR_EN_RPBK		0x0008	/* enable remote loopback */
#define	MCR_DIS_SCRM		0x0004	/* enable 100M data scrambling */
#define	MCR_PCSBP		0x0002	/* bypass PCS */
#define	MCR_FX_SEL		0x0001	/* FX mode selected */


/*	Am79c874 only	*/
#define	MII_ACPHY_DCR		0x17	/* disconnect counter register */


#define	MII_ACPHY_RECR		0x18	/* receive error counter register */


#endif /* _DEV_MII_ACPHYREG_H_ */