3 * Fraunhofer Institute for Open Communication Systems (FhG Fokus).
6 * Redistribution and use in source and binary forms, with or without
7 * modification, are permitted provided that the following conditions
9 * 1. Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 * 2. Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in the
13 * documentation and/or other materials provided with the distribution.
15 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
16 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
19 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
20 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
21 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
22 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
23 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
24 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27 * Author: Hartmut Brandt <harti@freebsd.org>
31 * Register definitions for the following chips:
35 #ifndef _DEV_UTOPIA_IDTPHY_H
36 #define _DEV_UTOPIA_IDTPHY_H
38 #define IDTPHY_REGO_MCR 0x00
39 #define IDTPHY_REGN_MCR "Master Control Register"
40 #define IDTPHY_REGX_MCR "\020\010UPLO\7DREC\6ECEI\5TDPC\4DRIC\3HALTTX\2BYTEM\1EI"
41 #define IDTPHY_REGM_MCR_UPL0 0x80
42 #define IDTPHY_REGM_MCR_DREC 0x40
43 #define IDTPHY_REGM_MCR_ECEI 0x20
44 #define IDTPHY_REGM_MCR_TDPC 0x10
45 #define IDTPHY_REGM_MCR_DRIC 0x08
46 #define IDTPHY_REGM_MCR_HALTTX 0x04
47 #define IDTPHY_REGM_MCR_BYTEM 0x02
48 #define IDTPHY_REGM_MCR_EI 0x01
50 #define IDTPHY_REGO_ISTAT 0x01
51 #define IDTPHY_REGN_ISTAT "Interrupt Status"
52 #define IDTPHY_REGX_ISTAT "\020\7GOOD\6HECE\5SCRE\4TPE\3RSCC\2RSE\1RFO"
53 #define IDTPHY_REGM_ISTAT_GOOD 0x40 /* good signal bit */
54 #define IDTPHY_REGM_ISTAT_HECE 0x20 /* HEC error */
55 #define IDTPHY_REGM_ISTAT_SCRE 0x10 /* short cell received error */
56 #define IDTPHY_REGM_ISTAT_TPE 0x08 /* transmit parity error */
57 #define IDTPHY_REGM_ISTAT_RSCC 0x04 /* receive signal condition change */
58 #define IDTPHY_REGM_ISTAT_RSE 0x02 /* receive symbol error */
59 #define IDTPHY_REGM_ISTAT_RFO 0x01 /* read FIFO overrun */
61 #define IDTPHY_REGO_DIAG 0x02
62 #define IDTPHY_REGN_DIAG "Diagnostic Control"
63 #define IDTPHY_REGX_DIAG "\020\010FTD\7ROS\6MULTI\5RFLUSH\4ITPE\3IHECE\11\3\0NORM\11\3\2PLOOP\11\3\3LLOOP"
64 #define IDTPHY_REGM_DIAG_FTD 0x80 /* Force TxClav Deassert */
65 #define IDTPHY_REGM_DIAG_ROS 0x40 /* RxClav Operation Select */
66 #define IDTPHY_REGM_DIAG_MULTI 0x20 /* Multi-phy operation */
67 #define IDTPHY_REGM_DIAG_RFLUSH 0x10 /* clear receive Fifo */
68 #define IDTPHY_REGM_DIAG_ITPE 0x08 /* insert transmit payload error */
69 #define IDTPHY_REGM_DIAG_IHECE 0x04 /* insert transmit HEC error */
70 #define IDTPHY_REGM_DIAG_LOOP 0x03 /* loopback mode */
71 #define IDTPHY_REGM_DIAG_LOOP_NONE 0x00 /* normal */
72 #define IDTPHY_REGM_DIAG_LOOP_PHY 0x02 /* PHY loopback */
73 #define IDTPHY_REGM_DIAG_LOOP_LINE 0x03 /* Line loopback */
75 #define IDTPHY_REGO_LHEC 0x03
76 #define IDTPHY_REGN_LHEC "LED Driver and HEC Status/Control"
77 #define IDTPHY_REGX_LHEC "\020\7DRHEC\6DTHEC\11\x18\0CYC1\11\x18\1CYC2\11\x18\2CYC4\11\x18\3CYC8\3FIFOE\2TXLED\1RXLED"
78 #define IDTPHY_REGM_LHEC_DRHEC 0x40 /* disable receive HEC */
79 #define IDTPHY_REGM_LHEC_DTHEC 0x20 /* disable transmit HEC */
80 #define IDTPHY_REGM_LHEC_RXREF 0x18 /* RxRef pulse width */
81 #define IDTPHY_REGM_LHEC_RXREF1 0x00 /* 1 pulse */
82 #define IDTPHY_REGM_LHEC_RXREF2 0x08 /* 2 pulse */
83 #define IDTPHY_REGM_LHEC_RXREF4 0x10 /* 4 pulse */
84 #define IDTPHY_REGM_LHEC_RXREF8 0x18 /* 8 pulse */
85 #define IDTPHY_REGM_LHEC_FIFOE 0x04 /* Fifo empty */
86 #define IDTPHY_REGM_LHEC_TXLED 0x02 /* Tx LED status */
87 #define IDTPHY_REGM_LHEC_RXLED 0x01 /* Rx LED status */
89 #define IDTPHY_REGO_CNT 0x04 /* +0x05 */
90 #define IDTPHY_REGN_CNT "Counter"
92 #define IDTPHY_REGO_CNTS 0x06
93 #define IDTPHY_REGN_CNTS "Counter select"
94 #define IDTPHY_REGX_CNTS "\020\4SEC\3TX\2RX\1HECE"
95 #define IDTPHY_REGM_CNTS_SEC 0x08 /* symbol error counter */
96 #define IDTPHY_REGM_CNTS_TX 0x04 /* Tx cells */
97 #define IDTPHY_REGM_CNTS_RX 0x02 /* Rx cells */
98 #define IDTPHY_REGM_CNTS_HECE 0x01 /* HEC errors */
100 #define IDTPHY_PRINT_77105 \
102 UTP_REGT_BITS, IDTPHY_REGO_MCR, \
103 IDTPHY_REGN_MCR, IDTPHY_REGX_MCR }, \
105 UTP_REGT_BITS, IDTPHY_REGO_ISTAT, \
106 IDTPHY_REGN_ISTAT, IDTPHY_REGX_ISTAT }, \
108 UTP_REGT_BITS, IDTPHY_REGO_DIAG, \
109 IDTPHY_REGN_DIAG, IDTPHY_REGX_DIAG }, \
111 UTP_REGT_BITS, IDTPHY_REGO_LHEC, \
112 IDTPHY_REGN_LHEC, IDTPHY_REGX_LHEC }, \
114 UTP_REGT_INT16, IDTPHY_REGO_CNT, \
115 IDTPHY_REGN_CNT, NULL }, \
117 UTP_REGT_BITS, IDTPHY_REGO_CNTS, \
118 IDTPHY_REGN_CNTS, IDTPHY_REGX_CNTS }
120 #define IDTPHY_REGO_MRID 0x00
121 #define IDTPHY_REGN_MRID "Master Reset & ID"
122 #define IDTPHY_REGM_MRID_RESET 0x80 /* software reset */
123 #define IDTPHY_REGM_MRID_TYPE 0x70 /* type */
124 #define IDTPHY_REGM_MRID_155 0x30 /* idt77155 type */
125 #define IDTPHY_REGM_MRID_ID 0x0f /* revision */
126 #define IDTPHY_REGX_MRID \
127 "\020\010mstReset\12\x70\12type\12\xf\12id"
129 #define IDTPHY_REGO_CONF 0x01
130 #define IDTPHY_REGN_CONF "Configuration"
131 #define IDTPHY_REGM_CONF_AFEBE 0x40 /* autoFEBE */
132 #define IDTPHY_REGM_CONF_ALRDI 0x20 /* autoLRDI */
133 #define IDTPHY_REGM_CONF_APRDI 0x10 /* autoPRDI */
134 #define IDTPHY_REGM_CONF_TCAIN 0x08 /* TCAInv */
135 #define IDTPHY_REGM_CONF_RCAIN 0x04 /* RCAInv */
136 #define IDTPHY_REGM_CONF_RXDIN 0x02 /* RXDInv */
137 #define IDTPHY_REGM_CONF_RESV 0x81
138 #define IDTPHY_REGX_CONF \
139 "\020\07autoFEBE\6autoLRDI\5autoPRDI\4TCAInv\3RCAInv\2RXDInv"
141 #define IDTPHY_REGO_INT 0x02
142 #define IDTPHY_REGN_INT "Interrupt"
143 #define IDTPHY_REGM_INT_TXOOLI 0x80 /* txOOLInt */
144 #define IDTPHY_REGM_INT_RXLOCI 0x40 /* rxLOCInt */
145 #define IDTPHY_REGM_INT_RXOOLI 0x20 /* rxOOLInt */
146 #define IDTPHY_REGM_INT_TXCDI 0x10 /* txCDi */
147 #define IDTPHY_REGM_INT_RXCDI 0x08 /* rxCDi */
148 #define IDTPHY_REGM_INT_RXPOHI 0x04 /* rxPOHi */
149 #define IDTPHY_REGM_INT_RXLOHI 0x02 /* rxLOHi */
150 #define IDTPHY_REGM_INT_RXSOHI 0x01 /* rxSOHi */
151 #define IDTPHY_REGX_INT \
152 "\020\10txOOLInt\7rxLOCInt\6rxOOLInt\5txCDi\4rxCDi\3rxPOHi" \
155 #define IDTPHY_REGO_MCM 0x04
156 #define IDTPHY_REGN_MCM "Master Clock Monitor"
157 #define IDTPHY_REGM_MCM_RRCLK 0x08 /* rrclkReg */
158 #define IDTPHY_REGM_MCM_TRCLK 0x04 /* trclkReg */
159 #define IDTPHY_REGM_MCM_RCLK 0x02 /* rclkReg */
160 #define IDTPHY_REGM_MCM_TCLK 0x01 /* tclkReg */
161 #define IDTPHY_REGM_MCM_RESV 0xf0
162 #define IDTPHY_REGX_MCM \
163 "\020\4rrclkReg\3trclkReg\2rclkReg\1tclkReg"
165 #define IDTPHY_REGO_MCTL 0x05
166 #define IDTPHY_REGN_MCTL "Master Control"
167 #define IDTPHY_REGM_MCTL_LOCI 0x80 /* rxLOCIEn */
168 #define IDTPHY_REGM_MCTL_LOC 0x40 /* LOC */
169 #define IDTPHY_REGM_MCTL_FIXP 0x20 /* txFixptr */
170 #define IDTPHY_REGM_MCTL_LLOOP 0x04 /* txLLoop */
171 #define IDTPHY_REGM_MCTL_DLOOP 0x02 /* rxDLoop */
172 #define IDTPHY_REGM_MCTL_TLOOP 0x01 /* rxLoopT */
173 #define IDTPHY_REGM_MCTL_RESV 0x18
174 #define IDTPHY_REGX_MCTL \
175 "\020\10rxLOCIEn\7LOC\6txFixptr\3txLLoop\2rxDLoop\1rxLoopT"
177 #define IDTPHY_REGO_TXC 0x06
178 #define IDTPHY_REGN_TXC "Transmit Clock Synthesis C/S"
179 #define IDTPHY_REGM_TXC_TXOOL 0x08 /* txOOL */
180 #define IDTPHY_REGM_TXC_TXOOLI 0x02 /* txOOLIEn */
181 #define IDTPHY_REGM_TXC_TXREF 0x01 /* txrefSel */
182 #define IDTPHY_REGM_TXC_RESV 0xf4
183 #define IDTPHY_REGX_TXC \
184 "\020\4txOOL\2txOOLIEn\1txrefSel"
186 #define IDTPHY_REGO_RXC 0x07
187 #define IDTPHY_REGN_RXC "Receive Clock/Data Recovery C/S"
188 #define IDTPHY_REGM_RXC_RXOOL 0x08 /* rxOOL */
189 #define IDTPHY_REGM_RXC_RXOOLI 0x02 /* rxOOLIEn */
190 #define IDTPHY_REGM_RXC_RXREF 0x01 /* rxrefSel */
191 #define IDTPHY_REGM_RXC_RESV 0xf4
192 #define IDTPHY_REGX_RXC \
193 "\020\4rxOOL\2rxOOLIEn\1rxrefSel"
195 #define IDTPHY_REGO_RSOC 0x10
196 #define IDTPHY_REGN_RSOC "Receive Overhead Control"
197 #define IDTPHY_REGM_RSOC_DSCR 0x40 /* scrDis */
198 #define IDTPHY_REGM_RSOC_FOOF 0x20 /* frcOOF */
199 #define IDTPHY_REGM_RSOC_B1IE 0x08 /* B1ErrIEn */
200 #define IDTPHY_REGM_RSOC_LOSI 0x04 /* LOSIEn */
201 #define IDTPHY_REGM_RSOC_LOFI 0x02 /* LOFIEn */
202 #define IDTPHY_REGM_RSOC_OOFI 0x01 /* OOFIEn */
203 #define IDTPHY_REGM_RSOC_RESV 0x90
204 #define IDTPHY_REGX_RSOC \
205 "\020\7scrDis\6frcOOF\4B1ErrIEn\3LOSIEn\2LOFIEn\1OOFIEn"
207 #define IDTPHY_REGO_RSOS 0x11
208 #define IDTPHY_REGN_RSOS "Receive Overhead Status"
209 #define IDTPHY_REGM_RSOS_C1INT 0x80 /* C1Int */
210 #define IDTPHY_REGM_RSOS_B1INT 0x40 /* B1ErrInt */
211 #define IDTPHY_REGM_RSOS_LOSI 0x20 /* LOSInt */
212 #define IDTPHY_REGM_RSOS_LOFI 0x10 /* LOFInt */
213 #define IDTPHY_REGM_RSOS_OOFI 0x08 /* OOFInt */
214 #define IDTPHY_REGM_RSOS_LOS 0x04 /* LOS */
215 #define IDTPHY_REGM_RSOS_LOF 0x02 /* LOF */
216 #define IDTPHY_REGM_RSOS_OOF 0x01 /* OOF */
217 #define IDTPHY_REGX_RSOS \
218 "\020\10C1Int\7B1ErrInt\6LOSInt\5LOFInt\4OOFint\3LOS\2LOF\1OOF"
220 #define IDTPHY_REGO_BIPC 0x12 /* + 0x13 LE */
221 #define IDTPHY_REGN_BIPC "Receive Section BIP Errors"
223 #define IDTPHY_REGO_TSOC 0x14
224 #define IDTPHY_REGN_TSOC "Transmit Overhead Control"
225 #define IDTPHY_REGM_TSOC_DSCR 0x40 /* scrDis */
226 #define IDTPHY_REGM_TSOC_LAISI 0x01 /* LAISIns */
227 #define IDTPHY_REGM_TSOC_RESV 0xbe
228 #define IDTPHY_REGX_TSOC \
229 "\020\7scrDis\1LAISIns"
231 #define IDTPHY_REGO_TSOC2 0x15
232 #define IDTPHY_REGN_TSOC2 "Transmit Overhead Control 2"
233 #define IDTPHY_REGM_TSOC2_LOSI 0x04 /* LOSIns */
234 #define IDTPHY_REGM_TSOC2_B1INV 0x02 /* B1Inv */
235 #define IDTPHY_REGM_TSOC2_IFE 0x01 /* frErrIns */
236 #define IDTPHY_REGM_TSOC2_RESV 0xf8
237 #define IDTPHY_REGX_TSOC2 \
238 "\020\3LOSIns\2B1Inv\1frErrIns"
240 #define IDTPHY_REGO_RLOS 0x18
241 #define IDTPHY_REGN_RLOS "Receive Line Overhead Status"
242 #define IDTPHY_REGM_RLOS_B2W 0x80 /* B2Word */
243 #define IDTPHY_REGM_RLOS_LAIS 0x02 /* LAIS */
244 #define IDTPHY_REGM_RLOS_LRDI 0x01 /* LRDI */
245 #define IDTPHY_REGM_RLOS_RESV 0x7c
246 #define IDTPHY_REGX_RLOS \
247 "\020\10B2Word\2LAIS\1LRDI"
249 #define IDTPHY_REGO_RLOI 0x19
250 #define IDTPHY_REGN_RLOI "Receive Line Overhead Interrupt"
251 #define IDTPHY_REGM_RLOI_LFEBEE 0x80 /* LFEBEIEn */
252 #define IDTPHY_REGM_RLOI_B2EE 0x40 /* B2ErrIEn */
253 #define IDTPHY_REGM_RLOI_LAISE 0x20 /* LAISIEn */
254 #define IDTPHY_REGM_RLOI_LRDIE 0x10 /* LRDIIEn */
255 #define IDTPHY_REGM_RLOI_LFEBEI 0x08 /* LFEBEInt */
256 #define IDTPHY_REGM_RLOI_B2EI 0x04 /* B2ErrInt */
257 #define IDTPHY_REGM_RLOI_LAISI 0x02 /* LAISInt */
258 #define IDTPHY_REGM_RLOI_LRDII 0x01 /* LRDIInt */
259 #define IDTPHY_REGX_RLOI \
260 "\020\10LFEBEIEn\7B2ErrIEn\6LAISIEn\5LRDIIEn\4LFEBEInt\3B2ErrInt" \
263 #define IDTPHY_REGO_B2EC 0x1a /* + 0x1b, 0x1c, 20bit LE */
264 #define IDTPHY_REGN_B2EC "B2 Errors"
266 #define IDTPHY_REGO_FEBEC 0x1d /* + 0x1e, 0x1f, 20bit LE */
267 #define IDTPHY_REGN_FEBEC "Line FEBE Errors"
269 #define IDTPHY_REGO_TLOS 0x20
270 #define IDTPHY_REGN_TLOS "Transmit Line Overhead Status"
271 #define IDTPHY_REGM_TLOS_LRDI 0x01 /* LRDI */
272 #define IDTPHY_REGM_TLOS_RESV 0xfe
273 #define IDTPHY_REGX_TLOS \
276 #define IDTPHY_REGO_TLOC 0x21
277 #define IDTPHY_REGN_TLOC "Transmit Line Overhead Control"
278 #define IDTPHY_REGM_TLOC_B2INV 0x01 /* B2Inv */
279 #define IDTPHY_REGM_TLOC_RESV 0xfe
280 #define IDTPHY_REGX_TLOC \
283 #define IDTPHY_REGO_TK1 0x24
284 #define IDTPHY_REGN_TK1 "Transmit K1"
286 #define IDTPHY_REGO_TK2 0x25
287 #define IDTPHY_REGN_TK2 "Transmit K2"
289 #define IDTPHY_REGO_RK1 0x26
290 #define IDTPHY_REGN_RK1 "Receive K1"
292 #define IDTPHY_REGO_RK2 0x27
293 #define IDTPHY_REGN_RK2 "Receive K2"
295 #define IDTPHY_REGO_RPOS 0x30
296 #define IDTPHY_REGN_RPOS "Receive Path Overhead Status"
297 #define IDTPHY_REGM_RPOS_LOP 0x20 /* LOP */
298 #define IDTPHY_REGM_RPOS_PAIS 0x08 /* PAIS */
299 #define IDTPHY_REGM_RPOS_PRDI 0x04 /* PRDI */
300 #define IDTPHY_REGM_RPOS_RESV 0xd3
301 #define IDTPHY_REGX_RPOS \
302 "\020\6LOP\4PAIS\3PRDI"
304 #define IDTPHY_REGO_RPOI 0x31
305 #define IDTPHY_REGN_RPOI "Receive Path Overhead Interrupt"
306 #define IDTPHY_REGM_RPOI_C2I 0x80 /* C2Int */
307 #define IDTPHY_REGM_RPOI_LOPI 0x20 /* LOPInt */
308 #define IDTPHY_REGM_RPOI_PAISI 0x08 /* PAISInt */
309 #define IDTPHY_REGM_RPOI_PRDII 0x04 /* PRDIInt */
310 #define IDTPHY_REGM_RPOI_B3EI 0x02 /* B3ErrInt */
311 #define IDTPHY_REGM_RPOI_PFEBEI 0x01 /* PFEBEInt */
312 #define IDTPHY_REGM_RPOI_RESV 0x50
313 #define IDTPHY_REGX_RPOI \
314 "\020\10C2Int\6LOPInt\4PAISInt\3PRDIInt\2B3ErrInt\1PFEBEInt"
316 #define IDTPHY_REGO_RPIE 0x33
317 #define IDTPHY_REGN_RPIE "Receive Path Interrupt Enable"
318 #define IDTPHY_REGM_RPIE_C2E 0x80 /* C2IEn */
319 #define IDTPHY_REGM_RPIE_LOPE 0x20 /* LOPIEn */
320 #define IDTPHY_REGM_RPIE_PAISE 0x08 /* PAISIEn */
321 #define IDTPHY_REGM_RPIE_PRDIE 0x04 /* PRDIIEn */
322 #define IDTPHY_REGM_RPIE_B3EE 0x02 /* B3ErrIEn */
323 #define IDTPHY_REGM_RPIE_PFEBEE 0x01 /* PFEBEIEn */
324 #define IDTPHY_REGM_RPIE_RESV 0x50
325 #define IDTPHY_REGX_RPIE \
326 "\020\10CSIEn\6LOPIEn\4PAISIEn\3PRDIIEn\2B3ErrIEn\1PFEBEIEn"
328 #define IDTPHY_REGO_RC2 0x37
329 #define IDTPHY_REGN_RC2 "Receive C2"
331 #define IDTPHY_REGO_B3EC 0x38 /* + 0x39, LE, 16bit */
332 #define IDTPHY_REGN_B3EC "B3 Errors"
334 #define IDTPHY_REGO_PFEBEC 0x3a /* + 0x3b, LE, 16bit */
335 #define IDTPHY_REGN_PFEBEC "Path FEBE Errors"
337 #define IDTPHY_REGO_RPEC 0x3d
338 #define IDTPHY_REGN_RPEC "Receive Path BIP Error Control"
339 #define IDTPHY_REGM_RPEC_B3C 0x20 /* blkBIP */
340 #define IDTPHY_REGM_RPEC_RESV 0xdf
341 #define IDTPHY_REGX_RPEC \
344 #define IDTPHY_REGO_TPOC 0x40
345 #define IDTPHY_REGN_TPOC "Transmit Path Control"
346 #define IDTPHY_REGM_TPOC_B3INV 0x02 /* B3Inv */
347 #define IDTPHY_REGM_TPOC_PAISI 0x01 /* PAISIns */
348 #define IDTPHY_REGM_TPOC_RESC 0xfc
349 #define IDTPHY_REGX_TPOC \
350 "\020\2B3Inv\1PAISIns"
352 #define IDTPHY_REGO_TPTC 0x41
353 #define IDTPHY_REGN_TPTC "Transmit Pointer Control"
354 #define IDTPHY_REGM_TPTC_FPTR 0x40 /* frcPtr */
355 #define IDTPHY_REGM_TPTC_STUFF 0x20 /* stuffCtl */
356 #define IDTPHY_REGM_TPTC_PTR 0x10 /* Ptr */
357 #define IDTPHY_REGM_TPTC_NDF 0x08 /* NDF */
358 #define IDTPHY_REGM_TPTC_DECP 0x04 /* decPtr */
359 #define IDTPHY_REGM_TPTC_INCP 0x02 /* incPtr */
360 #define IDTPHY_REGM_TPTC_RESV 0x81
361 #define IDTPHY_REGX_TPTC \
362 "\020\7frcPtr\6stuffCtl\5Ptr\4NDF\3decPtr\2incPtr"
364 #define IDTPHY_REGO_PTRL 0x45
365 #define IDTPHY_REGN_PTRL "Transmit Pointer LSB"
366 #define IDTPHY_REGX_PTRL \
367 "\020\12\xff\20arbPtr"
369 #define IDTPHY_REGO_PTRM 0x46
370 #define IDTPHY_REGN_PTRM "Transmit Pointer MSB"
371 #define IDTPHY_REGM_PTRM_NDF 0xf0 /* NDFVal */
372 #define IDTPHY_REGS_PTRM_NDF 4
373 #define IDTPHY_REGM_PTRM_SS 0x0c /* ssBit */
374 #define IDTPHY_REGM_PTRM_SONET 0x00
375 #define IDTPHY_REGM_PTRM_SDH 0x08
376 #define IDTPHY_REGM_PTRM_PTR 0x03
377 #define IDTPHY_REGX_PTRM \
378 "\020\12\xf0\20NDFVal\12\xc\20ssBit\12\x3\20arbPtr"
380 #define IDTPHY_REGO_TC2 0x48
381 #define IDTPHY_REGN_TC2 "Transmit C2"
383 #define IDTPHY_REGO_TPOC2 0x49
384 #define IDTPHY_REGN_TPOC2 "Transmit Path Control 2"
385 #define IDTPHY_REGM_TPOC2_FEBE 0xf0 /* PFEBEIns */
386 #define IDTPHY_REGS_TPOC2_FEBE 4
387 #define IDTPHY_REGM_TPOC2_PRDII 0x08 /* PRDIIns */
388 #define IDTPHY_REGM_TPOC2_G1 0x07 /* G1Ins */
389 #define IDTPHY_REGX_TPOC2 \
390 "\020\12\xf0\20PFEBEIns\4PRDIIns\12\x7\20G1Ins"
392 #define IDTPHY_REGO_RCC 0x50
393 #define IDTPHY_REGN_RCC "Receive Cell Control"
394 #define IDTPHY_REGM_RCC_OCD 0x80 /* OCD */
395 #define IDTPHY_REGM_RCC_PARTY 0x40 /* parity */
396 #define IDTPHY_REGM_RCC_PASS 0x20 /* pass */
397 #define IDTPHY_REGM_RCC_DCOR 0x10 /* corDis */
398 #define IDTPHY_REGM_RCC_DHEC 0x08 /* HECdis */
399 #define IDTPHY_REGM_RCC_ADD 0x04 /* csetAdd */
400 #define IDTPHY_REGM_RCC_DSCR 0x02 /* scrDis */
401 #define IDTPHY_REGM_RCC_RFIFO 0x01 /* rxFIFOrst */
402 #define IDTPHY_REGX_RCC \
403 "\020\10OCD\7parity\6pass\5corDis\4HECdis\3csetAdd" \
404 "\2scrDis\1rxFIFOrst"
406 #define IDTPHY_REGO_RCI 0x51
407 #define IDTPHY_REGN_RCI "Receive Cell Interrupt"
408 #define IDTPHY_REGM_RCI_OCDE 0x80 /* OCDIEn */
409 #define IDTPHY_REGM_RCI_HECE 0x40 /* HECIEn */
410 #define IDTPHY_REGM_RCI_OVFE 0x20 /* ovfIEn */
411 #define IDTPHY_REGM_RCI_OCDI 0x10 /* OCDInt */
412 #define IDTPHY_REGM_RCI_CORI 0x08 /* corInt */
413 #define IDTPHY_REGM_RCI_UCORI 0x04 /* uncorInt */
414 #define IDTPHY_REGM_RCI_OVFI 0x02 /* ovfInt */
415 #define IDTPHY_REGM_RCI_RESV 0x01
416 #define IDTPHY_REGX_RCI \
417 "\020\10OCDIEn\7HECIEn\6ovfIEn\5OCDInt\4corInt\3uncorInt\2ovfInt"
419 #define IDTPHY_REGO_CMH 0x52
420 #define IDTPHY_REGN_CMH "Receive Cell Match Header"
421 #define IDTPHY_REGM_CMH_GFC 0xf0 /* GFC */
422 #define IDTPHY_REGS_CMH_GFC 4
423 #define IDTPHY_REGM_CMH_PTI 0x0e /* PTI */
424 #define IDTPHY_REGS_CMH_PTI 1
425 #define IDTPHY_REGM_CMH_CLP 0x01 /* CLP */
426 #define IDTPHY_REGX_CMH \
427 "\020\12\xf0\20GFC\12\xe\20PTI\12\x1\20CLP"
429 #define IDTPHY_REGO_CMHM 0x53
430 #define IDTPHY_REGN_CMHM "Receive Cell Match Header Mask"
431 #define IDTPHY_REGM_CMHM_GFC 0xf0 /* mskGFC */
432 #define IDTPHY_REGS_CMHM_GFC 4
433 #define IDTPHY_REGM_CMHM_PTI 0x0e /* mskPTI */
434 #define IDTPHY_REGS_CMHM_PTI 1
435 #define IDTPHY_REGM_CMHM_CLP 0x01 /* mskCLP */
436 #define IDTPHY_REGX_CMHM \
437 "\020\12\xf0\20mskGFC\12\xe\20mskPTI\12\x1\20mskCLP"
439 #define IDTPHY_REGO_CEC 0x54
440 #define IDTPHY_REGN_CEC "Correctable Errors"
442 #define IDTPHY_REGO_UEC 0x55
443 #define IDTPHY_REGN_UEC "Uncorrectable Errors"
445 #define IDTPHY_REGO_RCCNT 0x56 /* +0x57, 0x58, LE, 19bit */
446 #define IDTPHY_REGN_RCCNT "Receive Cells"
448 #define IDTPHY_REGO_RCCF 0x59
449 #define IDTPHY_REGN_RCCF "Receive Cell Configuration"
450 #define IDTPHY_REGM_RCCF_GFCE 0xf0 /* GFCen */
451 #define IDTPHY_REGS_RCCF_GFCE 4
452 #define IDTPHY_REGM_RCCF_FIXS 0x08 /* FixSen */
453 #define IDTPHY_REGM_RCCF_RCAL 0x04 /* RCAlevel */
454 #define IDTPHY_REGM_RCCF_HECF 0x03 /* HECftr */
455 #define IDTPHY_REGX_RCCF \
456 "\020\12\xf0\20GFCen\4FixSen\3RCAlevel\12\x3\20HECftr"
458 #define IDTPHY_REGO_RXID 0x5a
459 #define IDTPHY_REGN_RXID "Receive ID Address"
460 #define IDTPHY_REGM_RXID_ID 0x03 /* IDAddr */
461 #define IDTPHY_REGM_RXID_RESV 0xfc
462 #define IDTPHY_REGX_RXID \
463 "\020\12\x3\20IDAddr"
465 #define IDTPHY_REGO_TCC 0x60
466 #define IDTPHY_REGN_TCC "Transmit Cell Control"
467 #define IDTPHY_REGM_TCC_FIFOE 0x80 /* fovrIEn */
468 #define IDTPHY_REGM_TCC_SOCI 0x40 /* socInt */
469 #define IDTPHY_REGM_TCC_FIFOI 0x20 /* fovrInt */
470 #define IDTPHY_REGM_TCC_HECINV 0x10 /* HECInv */
471 #define IDTPHY_REGM_TCC_HECDIS 0x08 /* HECDis */
472 #define IDTPHY_REGM_TCC_ADD 0x04 /* csetAdd */
473 #define IDTPHY_REGM_TCC_DSCR 0x02 /* scrDis */
474 #define IDTPHY_REGM_TCC_FIFOR 0x01 /* txFIFOrst */
475 #define IDTPHY_REGX_TCC \
476 "\020\10fovrIEn\7socInt\6fovrInt\5HECInv\4HECDis\3csetAdd" \
477 "\2scrDis\1txFIFOrst"
479 #define IDTPHY_REGO_TCHP 0x61
480 #define IDTPHY_REGN_TCHP "Transmit Idle Cell Header"
481 #define IDTPHY_REGM_TCHP_GFC 0xf0 /* GFCtx */
482 #define IDTPHY_REGS_TCHP_GFC 4
483 #define IDTPHY_REGM_TCHP_PTI 0x0e /* PTItx */
484 #define IDTPHY_REGS_TCHP_PTI 1
485 #define IDTPHY_REGM_TCHP_CLP 0x01 /* CLPtx */
486 #define IDTPHY_REGX_TCHP \
487 "\020\12\xf0\20GFCtx\12\xe\20PTItx\12\x1\20CLPtx"
489 #define IDTPHY_REGO_TPLD 0x62
490 #define IDTPHY_REGN_TPLD "Transmit Idle Cell Payload"
492 #define IDTPHY_REGO_TCC2 0x63
493 #define IDTPHY_REGN_TCC2 "Transmit Cell Configuration 2"
494 #define IDTPHY_REGM_TCC2_PARITY 0x80 /* parity */
495 #define IDTPHY_REGM_TCC2_PARE 0x40 /* parIEn */
496 #define IDTPHY_REGM_TCC2_PARI 0x10 /* parInt */
497 #define IDTPHY_REGM_TCC2_FIFO 0x0c /* FIFOdpth */
498 #define IDTPHY_REGS_TCC2_FIFO 2
499 #define IDTPHY_REGM_TCC2_TCAL 0x02 /* TCAlevel */
500 #define IDTPHY_REGM_TCC2_RESV 0x01
501 #define IDTPHY_REGX_TCC2 \
502 "\020\10parity\7parIEn\5parInt\12\xc\20FIFOdpth\2TCAlevel"
504 #define IDTPHY_REGO_TXCNT 0x64 /* +65,66 LE 19bit */
505 #define IDTPHY_REGN_TXCNT "Transmit Cells"
507 #define IDTPHY_REGO_TCC3 0x67
508 #define IDTPHY_REGN_TCC3 "Transmit Cell Configuration 3"
509 #define IDTPHY_REGM_TCC3_GFCE 0xf0 /* txGFCen */
510 #define IDTPHY_REGS_TCC3_GFCE 4
511 #define IDTPHY_REGM_TCC3_FIXE 0x08 /* txFixSen */
512 #define IDTPHY_REGM_TCC3_H4ID 0x04 /* H4InsDis */
513 #define IDTPHY_REGM_TCC3_FIXB 0x03 /* fixByte */
514 #define IDTPHY_REGM_TCC3_FIX00 0x00 /* 0x00 */
515 #define IDTPHY_REGM_TCC3_FIX55 0x01 /* 0x55 */
516 #define IDTPHY_REGM_TCC3_FIXAA 0x02 /* 0xAA */
517 #define IDTPHY_REGM_TCC3_FIXFF 0x03 /* 0xFF */
518 #define IDTPHY_REGX_TCC3 \
519 "\020\12\xf0\20txGFCen\4txFixSen\3H4InsDis" \
520 "\11\x3\x0FIX00\11\x3\x1FIX55\11\x3\x2FIXAA\11\x3\x3FIXFF"
522 #define IDTPHY_REGO_TXID 0x68
523 #define IDTPHY_REGN_TXID "Transmit ID Address"
524 #define IDTPHY_REGM_TXID_ID 0x03 /* txIDAddr */
525 #define IDTPHY_REGM_TXID_RESV 0xfc
526 #define IDTPHY_REGX_TXID \
527 "\020\12\x3\20txIDAddr"
529 #define IDTPHY_REGO_RBER 0x70
530 #define IDTPHY_REGN_RBER "Receive BER S/C"
531 #define IDTPHY_REGM_RBER_FAILE 0x08 /* FailIEn */
532 #define IDTPHY_REGM_RBER_WARNE 0x04 /* WarnIEn */
533 #define IDTPHY_REGM_RBER_FAIL 0x02 /* BERfail */
534 #define IDTPHY_REGM_RBER_WARN 0x01 /* BERwarn */
535 #define IDTPHY_REGM_RBER_RESV 0xf0
536 #define IDTPHY_REGX_RBER \
537 "\020\4FailIEn\3WarnIEn\2BERfail\1BERwarn"
539 #define IDTPHY_REGO_BFTH 0x71
540 #define IDTPHY_REGN_BFTH "Receive BER Fail Threshold"
542 #define IDTPHY_REGO_BFWIN 0x72
543 #define IDTPHY_REGN_BFWIN "Receive BER Fail Window"
545 #define IDTPHY_REGO_BFDEN 0x73 /* +74, 16bit LE */
546 #define IDTPHY_REGN_BFDEN "Receive BER Fail Denominator"
548 #define IDTPHY_REGO_BWTH 0x75
549 #define IDTPHY_REGN_BWTH "Receive BER Warn Threshold"
551 #define IDTPHY_REGO_BWWIN 0x76
552 #define IDTPHY_REGN_BWWIN "Receive BER Warn Window"
554 #define IDTPHY_REGO_BWDEN 0x77 /* +78, 16bit LE */
555 #define IDTPHY_REGN_BWDEN "Receive BER Warn Denomiator"
557 #define IDTPHY_REGO_OPEC 0x7f
558 #define IDTPHY_REGN_OPEC "Output PECL Control"
559 #define IDTPHY_REGM_OPEC_TXC 0x04 /* pcctl_tc */
560 #define IDTPHY_REGM_OPEC_TXD 0x02 /* pcctl_td */
561 #define IDTPHY_REGM_OPEC_RXDO 0x01 /* pcctl_r */
562 #define IDTPHY_REGM_OPEC_RESV 0xf8
563 #define IDTPHY_REGX_OPEC \
564 "\020\3pctl_tc\2pcctl_td\1pcctl_r"
566 #define IDTPHY_PRINT_77155 \
568 UTP_REGT_BITS, IDTPHY_REGO_MRID, \
569 IDTPHY_REGN_MRID, IDTPHY_REGX_MRID }, \
571 UTP_REGT_BITS, IDTPHY_REGO_CONF, \
572 IDTPHY_REGN_CONF, IDTPHY_REGX_CONF }, \
574 UTP_REGT_BITS, IDTPHY_REGO_INT, \
575 IDTPHY_REGN_INT, IDTPHY_REGX_INT }, \
578 UTP_REGT_BITS, IDTPHY_REGO_MCM, \
579 IDTPHY_REGN_MCM, IDTPHY_REGX_MCM }, \
581 UTP_REGT_BITS, IDTPHY_REGO_MCTL, \
582 IDTPHY_REGN_MCTL, IDTPHY_REGX_MCTL }, \
584 UTP_REGT_BITS, IDTPHY_REGO_TXC, \
585 IDTPHY_REGN_TXC, IDTPHY_REGX_TXC }, \
587 UTP_REGT_BITS, IDTPHY_REGO_RXC, \
588 IDTPHY_REGN_RXC, IDTPHY_REGX_RXC }, \
591 UTP_REGT_BITS, IDTPHY_REGO_RSOC, \
592 IDTPHY_REGN_RSOC, IDTPHY_REGX_RSOC }, \
594 UTP_REGT_BITS, IDTPHY_REGO_RSOS, \
595 IDTPHY_REGN_RSOS, IDTPHY_REGX_RSOS }, \
597 UTP_REGT_INT16, IDTPHY_REGO_BIPC, \
598 IDTPHY_REGN_BIPC, NULL }, \
600 UTP_REGT_BITS, IDTPHY_REGO_TSOC, \
601 IDTPHY_REGN_TSOC, IDTPHY_REGX_TSOC }, \
603 UTP_REGT_BITS, IDTPHY_REGO_TSOC2, \
604 IDTPHY_REGN_TSOC2, IDTPHY_REGX_TSOC2 }, \
605 /* 16, 17 unused */ \
607 UTP_REGT_BITS, IDTPHY_REGO_RLOS, \
608 IDTPHY_REGN_RLOS, IDTPHY_REGX_RLOS }, \
610 UTP_REGT_BITS, IDTPHY_REGO_RLOI, \
611 IDTPHY_REGN_RLOI, IDTPHY_REGX_RLOI }, \
613 UTP_REGT_INT20, IDTPHY_REGO_B2EC, \
614 IDTPHY_REGN_B2EC, NULL }, \
616 UTP_REGT_INT20, IDTPHY_REGO_FEBEC, \
617 IDTPHY_REGN_FEBEC, NULL }, \
619 UTP_REGT_BITS, IDTPHY_REGO_TLOS, \
620 IDTPHY_REGN_TLOS, IDTPHY_REGX_TLOS }, \
622 UTP_REGT_BITS, IDTPHY_REGO_TLOC, \
623 IDTPHY_REGN_TLOC, IDTPHY_REGX_TLOC }, \
624 /* 22, 23 unused */ \
626 UTP_REGT_INT8, IDTPHY_REGO_TK1, \
627 IDTPHY_REGN_TK1, NULL }, \
629 UTP_REGT_INT8, IDTPHY_REGO_TK2, \
630 IDTPHY_REGN_TK2, NULL }, \
632 UTP_REGT_INT8, IDTPHY_REGO_RK1, \
633 IDTPHY_REGN_RK1, NULL }, \
635 UTP_REGT_INT8, IDTPHY_REGO_RK2, \
636 IDTPHY_REGN_RK2, NULL }, \
639 UTP_REGT_BITS, IDTPHY_REGO_RPOS, \
640 IDTPHY_REGN_RPOS, IDTPHY_REGX_RPOS }, \
642 UTP_REGT_BITS, IDTPHY_REGO_RPOI, \
643 IDTPHY_REGN_RPOI, IDTPHY_REGX_RPOI }, \
646 UTP_REGT_BITS, IDTPHY_REGO_RPIE, \
647 IDTPHY_REGN_RPIE, IDTPHY_REGX_RPIE }, \
650 UTP_REGT_INT8, IDTPHY_REGO_RC2, \
651 IDTPHY_REGN_RC2, NULL }, \
653 UTP_REGT_INT16, IDTPHY_REGO_B3EC, \
654 IDTPHY_REGN_B3EC, NULL }, \
656 UTP_REGT_INT16, IDTPHY_REGO_PFEBEC, \
657 IDTPHY_REGN_PFEBEC, NULL }, \
660 UTP_REGT_BITS, IDTPHY_REGO_RPEC, \
661 IDTPHY_REGN_RPEC, IDTPHY_REGX_RPEC }, \
662 /* 3e, 3f unused */ \
664 UTP_REGT_BITS, IDTPHY_REGO_TPOC, \
665 IDTPHY_REGN_TPOC, IDTPHY_REGX_TPOC }, \
667 UTP_REGT_BITS, IDTPHY_REGO_TPTC, \
668 IDTPHY_REGN_TPTC, IDTPHY_REGX_TPTC }, \
671 UTP_REGT_BITS, IDTPHY_REGO_PTRL, \
672 IDTPHY_REGN_PTRL, IDTPHY_REGX_PTRL }, \
674 UTP_REGT_BITS, IDTPHY_REGO_PTRM, \
675 IDTPHY_REGN_PTRM, IDTPHY_REGX_PTRM }, \
678 UTP_REGT_INT8, IDTPHY_REGO_TC2, \
679 IDTPHY_REGN_TC2, NULL }, \
681 UTP_REGT_BITS, IDTPHY_REGO_TPOC2, \
682 IDTPHY_REGN_TPOC2, IDTPHY_REGX_TPOC2 }, \
685 UTP_REGT_BITS, IDTPHY_REGO_RCC, \
686 IDTPHY_REGN_RCC, IDTPHY_REGX_RCC }, \
688 UTP_REGT_BITS, IDTPHY_REGO_RCI, \
689 IDTPHY_REGN_RCI, IDTPHY_REGX_RCI }, \
691 UTP_REGT_BITS, IDTPHY_REGO_CMH, \
692 IDTPHY_REGN_CMH, IDTPHY_REGX_CMH }, \
694 UTP_REGT_BITS, IDTPHY_REGO_CMHM, \
695 IDTPHY_REGN_CMHM, IDTPHY_REGX_CMHM }, \
697 UTP_REGT_INT8, IDTPHY_REGO_CEC, \
698 IDTPHY_REGN_CEC, NULL }, \
700 UTP_REGT_INT8, IDTPHY_REGO_UEC, \
701 IDTPHY_REGN_UEC, NULL }, \
703 UTP_REGT_INT19, IDTPHY_REGO_RCCNT, \
704 IDTPHY_REGN_RCCNT, NULL }, \
706 UTP_REGT_BITS, IDTPHY_REGO_RCCF, \
707 IDTPHY_REGN_RCCF, IDTPHY_REGX_RCCF }, \
709 UTP_REGT_BITS, IDTPHY_REGO_RXID, \
710 IDTPHY_REGN_RXID, IDTPHY_REGX_RXID }, \
713 UTP_REGT_BITS, IDTPHY_REGO_TCC, \
714 IDTPHY_REGN_TCC, IDTPHY_REGX_TCC }, \
716 UTP_REGT_BITS, IDTPHY_REGO_TCHP, \
717 IDTPHY_REGN_TCHP, IDTPHY_REGX_TCHP }, \
719 UTP_REGT_INT8, IDTPHY_REGO_TPLD, \
720 IDTPHY_REGN_TPLD, NULL }, \
722 UTP_REGT_BITS, IDTPHY_REGO_TCC2, \
723 IDTPHY_REGN_TCC2, IDTPHY_REGX_TCC2 }, \
725 UTP_REGT_INT19, IDTPHY_REGO_TXCNT, \
726 IDTPHY_REGN_TXCNT, NULL }, \
728 UTP_REGT_BITS, IDTPHY_REGO_TCC3, \
729 IDTPHY_REGN_TCC3, IDTPHY_REGX_TCC3 }, \
731 UTP_REGT_BITS, IDTPHY_REGO_TXID, \
732 IDTPHY_REGN_TXID, IDTPHY_REGX_TXID }, \
735 UTP_REGT_BITS, IDTPHY_REGO_RBER, \
736 IDTPHY_REGN_RBER, IDTPHY_REGX_RBER }, \
738 UTP_REGT_INT8, IDTPHY_REGO_BFTH, \
739 IDTPHY_REGN_BFTH, NULL }, \
741 UTP_REGT_INT8, IDTPHY_REGO_BFWIN, \
742 IDTPHY_REGN_BFWIN, NULL }, \
744 UTP_REGT_INT16, IDTPHY_REGO_BFDEN, \
745 IDTPHY_REGN_BFDEN, NULL }, \
747 UTP_REGT_INT8, IDTPHY_REGO_BWTH, \
748 IDTPHY_REGN_BWTH, NULL }, \
750 UTP_REGT_INT8, IDTPHY_REGO_BWWIN, \
751 IDTPHY_REGN_BWWIN, NULL }, \
753 UTP_REGT_INT16, IDTPHY_REGO_BWDEN, \
754 IDTPHY_REGN_BWDEN, NULL }, \
757 UTP_REGT_BITS, IDTPHY_REGO_OPEC, \
758 IDTPHY_REGN_OPEC, IDTPHY_REGX_OPEC }
761 #endif /* _DEV_UTOPIA_IDTPHY_H */