summaryrefslogtreecommitdiff
path: root/sys/dev/mii/makphyreg.h
blob: 54f804bcf6c17f0f7069c4c6590354728ebc4b71 (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
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
/*	$NetBSD: makphyreg.h,v 1.11 2020/08/03 07:25:59 msaitoh Exp $	*/

/*-
 * Copyright (c) 2001 The NetBSD Foundation, Inc.
 * All rights reserved.
 *
 * This code is derived from software contributed to The NetBSD Foundation
 * by Jason R. Thorpe.
 *
 * 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.
 *
 * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
 * ``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 THE FOUNDATION OR CONTRIBUTORS
 * 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_MAKPHYREG_H_
#define	_DEV_MII_MAKPHYREG_H_

/*
 * Marvell 88E1000 ``Alaska'' 10/100/1000 PHY registers.
 */

#define	MAKPHY_PSCR		0x10	/* PHY specific control register */
#define	PSCR_DIS_JABBER		(1U << 0)   /* disable jabber */
#define	PSCR_POL_REV		(1U << 1)   /* polarity reversal */
#define	PSCR_SQE_TEST		(1U << 2)   /* SQE test */
#define	PSCR_MBO		(1U << 3)   /* must be one */
#define	PSCR_DIS_125CLK		(1U << 4)   /* 125CLK low */
#define	PSCR_MDI_XOVER_MODE(x)	((x) << 5)  /* crossover mode */
#define	PSCR_LOW_10T_THRESH	(1U << 7)   /* lower 10BASE-T Rx threshold */
#define	PSCR_EN_DETECT(x)	((x) << 8)  /* Energy Detect */
#define	PSCR_FORCE_LINK_GOOD	(1U << 10)  /* force link good */
#define	PSCR_CRS_ON_TX		(1U << 11)  /* assert CRS on transmit */
#define	PSCR_RX_FIFO(x)		((x) << 12) /* Rx FIFO depth */
#define	PSCR_TX_FIFO(x)		((x) << 14) /* Tx FIFO depth */

#define	XOVER_MODE_MDI		0
#define	XOVER_MODE_MDIX		1
#define	XOVER_MODE_AUTO		2

/* 88E3016 */
/* bit 2 and 3 are reserved */
#define	E3016_PSCR_MDI_XOVER_MODE(x) ((x) << 4)  /* crossover mode */
#define	E3016_PSCR_SIGDET_POLARITY (1U << 6)  /* 0: Active H, 1: Active L */
#define	E3016_PSCR_EXTDIST	(1U << 7)  /* Enable Extended Distance */
#define	E3016_PSCR_FEFI_DIS	(1U << 8)  /* Disable FEFI */
#define	E3016_PSCR_SCRAMBLE_DIS	(1U << 9)  /* Disable Scrambler */
/* bit 10 is reserved */
#define	E3016_PSCR_NLPGEN_DIS	(1U << 11)  /* Disable Linkpulse Generation */
#define	E3016_PSCR_REG8NXTPG	(1U << 12)  /* En. Link Partner Next Page R */
#define	E3016_PSCR_NLPCHK_DIS	(1U << 13)  /* Disable NLP check */
#define	E3016_PSCR_EN_DETECT	(1U << 14)  /* Energy Detect */
/* bit 15 is reserved */

/* 88E1112 page 1 */
#define	MAKPHY_FSCR		0x10	/* Fiber specific control register */
#define	FSCR_XMITTER_DIS	0x0008	/* Transmitter Disable */

/* 88E1112 page 2 */
#define	MAKPHY_MSCR		0x10	/* MAC specific control register */
#define	MSCR_TX_FIFODEPTH	0xc000	/* Transmi FIFO Depth */
#define	MSCR_RX_FIFODEPTH	0x3000	/* Receive FIFO Depth */
#define	MSCR_AUTOPREF_MASK	0x0c00	/* Autoselect preferred media mask */
#define	MSCR_AUTOPREF_NO	0x0000	/*  No preference */
#define	MSCR_AUTOPREF_FIBER	0x0400	/*  Preferred Fiber */
#define	MSCR_AUTOPREF_COPPER	0x0800	/*  Preferred Copper */
#define	MSCR_MODE_MASK		0x0380	/* Mode select mask */
#define	MSCR_M_100FX		0x0000	/*  100BASE-FX */
#define	MSCR_M_COOPER_GBIC	0x0080	/*  Copper GBIC */
#define	MSCR_M_AUTO_COPPER_SGMII 0x0100	/*  Auto Copper/SGMII */
#define	MSCR_M_AUTO_COPPER_1000X 0x0180	/*  Auto Copper/1000BASE-X */
#define	MSCR_M_COPPER		0x0280	/*  Copper only */
#define	MSCR_M_SGMII		0x0300	/*  SGMII only */
#define	MSCR_M_1000X		0x0380	/*  1000BASE-X only */
#define	MSCR_SGMII_PDOWN	0x0008	/* SGMII MAC Interface Power Down */
#define	MSCR_ENHANCED_SGMII	0x0004	/* Enhanced SGMII */

#define	MAKPHY_PSSR		0x11	/* PHY specific status register */
#define	MAKPHY_PSSR_JABBER	(1U << 0)   /* jabber indication */
#define	MAKPHY_PSSR_POLARITY	(1U << 1)   /* polarity indiciation */
#define	MAKPHY_PSSR_MDIX	(1U << 6)   /* 1 = MIDX, 0 = MDI */
#define	MAKPHY_PSSR_CABLE_LENGTH_get(x) (((x) >> 7) & 0x3)
#define	MAKPHY_PSSR_LINK	(1U << 10)  /* link indication */
#define	MAKPHY_PSSR_RESOLVED	(1U << 11)  /* speed and duplex resolved */
#define	MAKPHY_PSSR_PAGE_RECEIVED (1U << 12)  /* page received */
#define	MAKPHY_PSSR_DUPLEX	(1U << 13)  /* 1 = FDX */
#define	MAKPHY_PSSR_SPEED_get(x) (((x) >> 14) & 0x3)

#define	SPEED_10		0
#define	SPEED_100		1
#define	SPEED_1000		2
#define	SPEED_reserved		3

/* For 88E1112 */
#define	MAKPHY_PSSR_RESOLUTION_FIBER (1U << 7) /*
						* Fiber/Copper resolution
						* 1 = Fiber, 0 = Copper
						*/

#define	MAKPHY_IE		0x12	/* Interrupt enable */
#define	IE_JABBER		(1U << 0)   /* jabber indication */
#define	IE_POL_CHANGED		(1U << 1)   /* polarity changed */
#define	IE_MDI_XOVER_CHANGED	(1U << 6)   /* MDI/MDIX changed */
#define	IE_FIFO_OVER_UNDER	(1U << 7)   /* FIFO over/underflow */
#define	IE_FALSE_CARRIER	(1U << 8)   /* false carrier detected */
#define	IE_SYMBOL_ERROR		(1U << 9)   /* symbol error occurred */
#define	IE_LINK_CHANGED		(1U << 10)  /* link status changed */
#define	IE_ANEG_COMPLETE	(1U << 11)  /* autonegotiation completed */
#define	IE_PAGE_RECEIVED	(1U << 12)  /* page received */
#define	IE_DUPLEX_CHANGED	(1U << 13)  /* duplex changed */
#define	IE_SPEED_CHANGED	(1U << 14)  /* speed changed */
#define	IE_ANEG_ERROR		(1U << 15)  /* autonegotiation error occurred */

#define	MAKPHY_IS		0x13	/* Interrupt status */
	/* See Interrupt enable bits */

#define	MAKPHY_EPSC		0x14	/* extended PHY specific control */
#define	EPSC_TX_CLK(x)		((x) << 4)  /* transmit clock */
#define	EPSC_TBI_RCLK_DIS	(1U << 12)  /* TBI RCLK disable */
#define	EPSC_TBI_RX_CLK125_EN	(1U << 13)  /* TBI RX_CLK125 enable */
#define	EPSC_LINK_DOWN_NO_IDLES	(1U << 15)  /* 1 = lost lock detect */

#define	MAKPHY_REC		0x15	/* receive error counter */

#define	MAKPHY_EADR		0x16	/* extended address register */

#define	MAKPHY_LEDCTRL	0x18	/* LED control */
#define	LEDCTRL_LED_TX		(1U << 0)   /* 1 = activ/link, 0 = xmit */
#define	LEDCTRL_LED_RX		(1U << 1)   /* 1 = activ/link, 1 = recv */
#define	LEDCTRL_LED_DUPLEX	(1U << 2)   /* 1 = duplex, 0 = dup/coll */
#define	LEDCTRL_LED_LINK	(1U << 3)   /* 1 = spd/link, 0 = link */
#define	LEDCTRL_BLINK_RATE(x)	((x) << 8)
#define	LEDCTRL_PULSE_STRCH(x)	((x) << 12)
#define	LEDCTRL_DISABLE		(1U << 15)  /* disable LED */

/* For 88E1011, 88E1111 */
#define MAKPHY_ESSR		0x1b    /* Extended PHY specific status */
#define ESSR_AUTOSEL_DISABLE	0x8000	/* Fiber/Copper autoselect disable */
#define ESSR_FIBER_LINK		0x2000	/* Fiber/Copper resolution */
#define ESSR_SER_ANEG_BYPASS	0x1000	/* Serial Iface Aneg bypass enable */
#define ESSR_SER_ANEG_BYPASS_ST	0x0800	/* Serial Iface Aneg bypass status */
#define ESSR_INTR_POLARITY	0x0400	/* Interrupt Polarity */
#define ESSR_AUTO_MEDIAREG_SEL	0x0200	/* Auto Medium Register Selection */
#define ESSR_DTE_DROP_HYST	0x01e0	/* DTE detect status drop hysteresis */
#define ESSR_DTE_POWER		0x0010
#define ESSR_HWCFG_MODE		0x000f
#define ESSR_SGMII_WC_COPPER	 0x0000 /* SGMII w/ Clock w/ SGMII AN Copper */
#define ESSR_RTBI_FIBER		 0x0001 /* RTBI to Fiber */
#define ESSR_RGMII_FIBER	 0x0003 /* RGMII to Fiber */
#define ESSR_SGMII_WOC_COPPER	 0x0004 /* SGMII w/o Clock w/ SGMII AN Copp. */
#define ESSR_TBI_FIBER		 0x0005 /* TBI to Fiber */
#define ESSR_RGMII_SGMII	 0x0006 /* RGMII to SGMII */
#define ESSR_GMII_FIBER		 0x0007 /* GMII to Fiber */
#define ESSR_SERIAL_WAN		 0x0008 /* 88E1011: Serial w 1000KX AN */
#define ESSR_GBIC		 0x0008 /* 88E1111: GBIC */
#define ESSR_RTBI_COPPER	 0x0009 /* RTBI to Copper */
#define ESSR_RGMII_COPPER	 0x000b /* RGMII to Copper */
#define ESSR_RGMII_AUTOSEL	 0x000b /* RGMII with Auto-Selection */
#define ESSR_SERIAL_WOAN	 0x000c /* 88E1011: Serial w/o 1000KX AN */
#define ESSR_1000X_WOAN		 0x000c /* 88E1111: 1000X w/o AN Copper */
#define ESSR_TBI_COPPER		 0x000d /* TBI to Copper */
#define ESSR_GMII_SGMII		 0x000e /* GMII to SGMII */
#define ESSR_GMII_COPPER	 0x000f /* GMII to Copper */
#define ESSR_GMII_AUTOSEL	 0x000f /* GMII with Auto-Selection */

#endif /* _DEV_MII_MAKPHYREG_H_ */