xref: /OK3568_Linux_fs/kernel/arch/mips/include/asm/sibyte/sb1250_ldt.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0-or-later */
2*4882a593Smuzhiyun /*  *********************************************************************
3*4882a593Smuzhiyun     *  SB1250 Board Support Package
4*4882a593Smuzhiyun     *
5*4882a593Smuzhiyun     *  LDT constants				File: sb1250_ldt.h
6*4882a593Smuzhiyun     *
7*4882a593Smuzhiyun     *  This module contains constants and macros to describe
8*4882a593Smuzhiyun     *  the LDT interface on the SB1250.
9*4882a593Smuzhiyun     *
10*4882a593Smuzhiyun     *  SB1250 specification level:  User's manual 1/02/02
11*4882a593Smuzhiyun     *
12*4882a593Smuzhiyun     *********************************************************************
13*4882a593Smuzhiyun     *
14*4882a593Smuzhiyun     *  Copyright 2000, 2001, 2002, 2003
15*4882a593Smuzhiyun     *  Broadcom Corporation. All rights reserved.
16*4882a593Smuzhiyun     *
17*4882a593Smuzhiyun     ********************************************************************* */
18*4882a593Smuzhiyun 
19*4882a593Smuzhiyun 
20*4882a593Smuzhiyun #ifndef _SB1250_LDT_H
21*4882a593Smuzhiyun #define _SB1250_LDT_H
22*4882a593Smuzhiyun 
23*4882a593Smuzhiyun #include <asm/sibyte/sb1250_defs.h>
24*4882a593Smuzhiyun 
25*4882a593Smuzhiyun #define K_LDT_VENDOR_SIBYTE	0x166D
26*4882a593Smuzhiyun #define K_LDT_DEVICE_SB1250	0x0002
27*4882a593Smuzhiyun 
28*4882a593Smuzhiyun /*
29*4882a593Smuzhiyun  * LDT Interface Type 1 (bridge) configuration header
30*4882a593Smuzhiyun  */
31*4882a593Smuzhiyun 
32*4882a593Smuzhiyun #define R_LDT_TYPE1_DEVICEID	0x0000
33*4882a593Smuzhiyun #define R_LDT_TYPE1_CMDSTATUS	0x0004
34*4882a593Smuzhiyun #define R_LDT_TYPE1_CLASSREV	0x0008
35*4882a593Smuzhiyun #define R_LDT_TYPE1_DEVHDR	0x000C
36*4882a593Smuzhiyun #define R_LDT_TYPE1_BAR0	0x0010	/* not used */
37*4882a593Smuzhiyun #define R_LDT_TYPE1_BAR1	0x0014	/* not used */
38*4882a593Smuzhiyun 
39*4882a593Smuzhiyun #define R_LDT_TYPE1_BUSID	0x0018	/* bus ID register */
40*4882a593Smuzhiyun #define R_LDT_TYPE1_SECSTATUS	0x001C	/* secondary status / I/O base/limit */
41*4882a593Smuzhiyun #define R_LDT_TYPE1_MEMLIMIT	0x0020
42*4882a593Smuzhiyun #define R_LDT_TYPE1_PREFETCH	0x0024
43*4882a593Smuzhiyun #define R_LDT_TYPE1_PREF_BASE	0x0028
44*4882a593Smuzhiyun #define R_LDT_TYPE1_PREF_LIMIT	0x002C
45*4882a593Smuzhiyun #define R_LDT_TYPE1_IOLIMIT	0x0030
46*4882a593Smuzhiyun #define R_LDT_TYPE1_CAPPTR	0x0034
47*4882a593Smuzhiyun #define R_LDT_TYPE1_ROMADDR	0x0038
48*4882a593Smuzhiyun #define R_LDT_TYPE1_BRCTL	0x003C
49*4882a593Smuzhiyun #define R_LDT_TYPE1_CMD		0x0040
50*4882a593Smuzhiyun #define R_LDT_TYPE1_LINKCTRL	0x0044
51*4882a593Smuzhiyun #define R_LDT_TYPE1_LINKFREQ	0x0048
52*4882a593Smuzhiyun #define R_LDT_TYPE1_RESERVED1	0x004C
53*4882a593Smuzhiyun #define R_LDT_TYPE1_SRICMD	0x0050
54*4882a593Smuzhiyun #define R_LDT_TYPE1_SRITXNUM	0x0054
55*4882a593Smuzhiyun #define R_LDT_TYPE1_SRIRXNUM	0x0058
56*4882a593Smuzhiyun #define R_LDT_TYPE1_ERRSTATUS	0x0068
57*4882a593Smuzhiyun #define R_LDT_TYPE1_SRICTRL	0x006C
58*4882a593Smuzhiyun #if SIBYTE_HDR_FEATURE(1250, PASS2) || SIBYTE_HDR_FEATURE(112x, PASS1)
59*4882a593Smuzhiyun #define R_LDT_TYPE1_ADDSTATUS	0x0070
60*4882a593Smuzhiyun #endif /* 1250 PASS2 || 112x PASS1 */
61*4882a593Smuzhiyun #define R_LDT_TYPE1_TXBUFCNT	0x00C8
62*4882a593Smuzhiyun #define R_LDT_TYPE1_EXPCRC	0x00DC
63*4882a593Smuzhiyun #define R_LDT_TYPE1_RXCRC	0x00F0
64*4882a593Smuzhiyun 
65*4882a593Smuzhiyun 
66*4882a593Smuzhiyun /*
67*4882a593Smuzhiyun  * LDT Device ID register
68*4882a593Smuzhiyun  */
69*4882a593Smuzhiyun 
70*4882a593Smuzhiyun #define S_LDT_DEVICEID_VENDOR		0
71*4882a593Smuzhiyun #define M_LDT_DEVICEID_VENDOR		_SB_MAKEMASK_32(16, S_LDT_DEVICEID_VENDOR)
72*4882a593Smuzhiyun #define V_LDT_DEVICEID_VENDOR(x)	_SB_MAKEVALUE_32(x, S_LDT_DEVICEID_VENDOR)
73*4882a593Smuzhiyun #define G_LDT_DEVICEID_VENDOR(x)	_SB_GETVALUE_32(x, S_LDT_DEVICEID_VENDOR, M_LDT_DEVICEID_VENDOR)
74*4882a593Smuzhiyun 
75*4882a593Smuzhiyun #define S_LDT_DEVICEID_DEVICEID		16
76*4882a593Smuzhiyun #define M_LDT_DEVICEID_DEVICEID		_SB_MAKEMASK_32(16, S_LDT_DEVICEID_DEVICEID)
77*4882a593Smuzhiyun #define V_LDT_DEVICEID_DEVICEID(x)	_SB_MAKEVALUE_32(x, S_LDT_DEVICEID_DEVICEID)
78*4882a593Smuzhiyun #define G_LDT_DEVICEID_DEVICEID(x)	_SB_GETVALUE_32(x, S_LDT_DEVICEID_DEVICEID, M_LDT_DEVICEID_DEVICEID)
79*4882a593Smuzhiyun 
80*4882a593Smuzhiyun 
81*4882a593Smuzhiyun /*
82*4882a593Smuzhiyun  * LDT Command Register (Table 8-13)
83*4882a593Smuzhiyun  */
84*4882a593Smuzhiyun 
85*4882a593Smuzhiyun #define M_LDT_CMD_IOSPACE_EN		_SB_MAKEMASK1_32(0)
86*4882a593Smuzhiyun #define M_LDT_CMD_MEMSPACE_EN		_SB_MAKEMASK1_32(1)
87*4882a593Smuzhiyun #define M_LDT_CMD_MASTER_EN		_SB_MAKEMASK1_32(2)
88*4882a593Smuzhiyun #define M_LDT_CMD_SPECCYC_EN		_SB_MAKEMASK1_32(3)
89*4882a593Smuzhiyun #define M_LDT_CMD_MEMWRINV_EN		_SB_MAKEMASK1_32(4)
90*4882a593Smuzhiyun #define M_LDT_CMD_VGAPALSNP_EN		_SB_MAKEMASK1_32(5)
91*4882a593Smuzhiyun #define M_LDT_CMD_PARERRRESP		_SB_MAKEMASK1_32(6)
92*4882a593Smuzhiyun #define M_LDT_CMD_WAITCYCCTRL		_SB_MAKEMASK1_32(7)
93*4882a593Smuzhiyun #define M_LDT_CMD_SERR_EN		_SB_MAKEMASK1_32(8)
94*4882a593Smuzhiyun #define M_LDT_CMD_FASTB2B_EN		_SB_MAKEMASK1_32(9)
95*4882a593Smuzhiyun 
96*4882a593Smuzhiyun /*
97*4882a593Smuzhiyun  * LDT class and revision registers
98*4882a593Smuzhiyun  */
99*4882a593Smuzhiyun 
100*4882a593Smuzhiyun #define S_LDT_CLASSREV_REV		0
101*4882a593Smuzhiyun #define M_LDT_CLASSREV_REV		_SB_MAKEMASK_32(8, S_LDT_CLASSREV_REV)
102*4882a593Smuzhiyun #define V_LDT_CLASSREV_REV(x)		_SB_MAKEVALUE_32(x, S_LDT_CLASSREV_REV)
103*4882a593Smuzhiyun #define G_LDT_CLASSREV_REV(x)		_SB_GETVALUE_32(x, S_LDT_CLASSREV_REV, M_LDT_CLASSREV_REV)
104*4882a593Smuzhiyun 
105*4882a593Smuzhiyun #define S_LDT_CLASSREV_CLASS		8
106*4882a593Smuzhiyun #define M_LDT_CLASSREV_CLASS		_SB_MAKEMASK_32(24, S_LDT_CLASSREV_CLASS)
107*4882a593Smuzhiyun #define V_LDT_CLASSREV_CLASS(x)		_SB_MAKEVALUE_32(x, S_LDT_CLASSREV_CLASS)
108*4882a593Smuzhiyun #define G_LDT_CLASSREV_CLASS(x)		_SB_GETVALUE_32(x, S_LDT_CLASSREV_CLASS, M_LDT_CLASSREV_CLASS)
109*4882a593Smuzhiyun 
110*4882a593Smuzhiyun #define K_LDT_REV			0x01
111*4882a593Smuzhiyun #define K_LDT_CLASS			0x060000
112*4882a593Smuzhiyun 
113*4882a593Smuzhiyun /*
114*4882a593Smuzhiyun  * Device Header (offset 0x0C)
115*4882a593Smuzhiyun  */
116*4882a593Smuzhiyun 
117*4882a593Smuzhiyun #define S_LDT_DEVHDR_CLINESZ		0
118*4882a593Smuzhiyun #define M_LDT_DEVHDR_CLINESZ		_SB_MAKEMASK_32(8, S_LDT_DEVHDR_CLINESZ)
119*4882a593Smuzhiyun #define V_LDT_DEVHDR_CLINESZ(x)		_SB_MAKEVALUE_32(x, S_LDT_DEVHDR_CLINESZ)
120*4882a593Smuzhiyun #define G_LDT_DEVHDR_CLINESZ(x)		_SB_GETVALUE_32(x, S_LDT_DEVHDR_CLINESZ, M_LDT_DEVHDR_CLINESZ)
121*4882a593Smuzhiyun 
122*4882a593Smuzhiyun #define S_LDT_DEVHDR_LATTMR		8
123*4882a593Smuzhiyun #define M_LDT_DEVHDR_LATTMR		_SB_MAKEMASK_32(8, S_LDT_DEVHDR_LATTMR)
124*4882a593Smuzhiyun #define V_LDT_DEVHDR_LATTMR(x)		_SB_MAKEVALUE_32(x, S_LDT_DEVHDR_LATTMR)
125*4882a593Smuzhiyun #define G_LDT_DEVHDR_LATTMR(x)		_SB_GETVALUE_32(x, S_LDT_DEVHDR_LATTMR, M_LDT_DEVHDR_LATTMR)
126*4882a593Smuzhiyun 
127*4882a593Smuzhiyun #define S_LDT_DEVHDR_HDRTYPE		16
128*4882a593Smuzhiyun #define M_LDT_DEVHDR_HDRTYPE		_SB_MAKEMASK_32(8, S_LDT_DEVHDR_HDRTYPE)
129*4882a593Smuzhiyun #define V_LDT_DEVHDR_HDRTYPE(x)		_SB_MAKEVALUE_32(x, S_LDT_DEVHDR_HDRTYPE)
130*4882a593Smuzhiyun #define G_LDT_DEVHDR_HDRTYPE(x)		_SB_GETVALUE_32(x, S_LDT_DEVHDR_HDRTYPE, M_LDT_DEVHDR_HDRTYPE)
131*4882a593Smuzhiyun 
132*4882a593Smuzhiyun #define K_LDT_DEVHDR_HDRTYPE_TYPE1	1
133*4882a593Smuzhiyun 
134*4882a593Smuzhiyun #define S_LDT_DEVHDR_BIST		24
135*4882a593Smuzhiyun #define M_LDT_DEVHDR_BIST		_SB_MAKEMASK_32(8, S_LDT_DEVHDR_BIST)
136*4882a593Smuzhiyun #define V_LDT_DEVHDR_BIST(x)		_SB_MAKEVALUE_32(x, S_LDT_DEVHDR_BIST)
137*4882a593Smuzhiyun #define G_LDT_DEVHDR_BIST(x)		_SB_GETVALUE_32(x, S_LDT_DEVHDR_BIST, M_LDT_DEVHDR_BIST)
138*4882a593Smuzhiyun 
139*4882a593Smuzhiyun 
140*4882a593Smuzhiyun 
141*4882a593Smuzhiyun /*
142*4882a593Smuzhiyun  * LDT Status Register (Table 8-14).  Note that these constants
143*4882a593Smuzhiyun  * assume you've read the command and status register
144*4882a593Smuzhiyun  * together (32-bit read at offset 0x04)
145*4882a593Smuzhiyun  *
146*4882a593Smuzhiyun  * These bits also apply to the secondary status
147*4882a593Smuzhiyun  * register (Table 8-15), offset 0x1C
148*4882a593Smuzhiyun  */
149*4882a593Smuzhiyun 
150*4882a593Smuzhiyun #if SIBYTE_HDR_FEATURE(1250, PASS2) || SIBYTE_HDR_FEATURE(112x, PASS1)
151*4882a593Smuzhiyun #define M_LDT_STATUS_VGAEN		_SB_MAKEMASK1_32(3)
152*4882a593Smuzhiyun #endif /* 1250 PASS2 || 112x PASS1 */
153*4882a593Smuzhiyun #define M_LDT_STATUS_CAPLIST		_SB_MAKEMASK1_32(20)
154*4882a593Smuzhiyun #define M_LDT_STATUS_66MHZCAP		_SB_MAKEMASK1_32(21)
155*4882a593Smuzhiyun #define M_LDT_STATUS_RESERVED2		_SB_MAKEMASK1_32(22)
156*4882a593Smuzhiyun #define M_LDT_STATUS_FASTB2BCAP		_SB_MAKEMASK1_32(23)
157*4882a593Smuzhiyun #define M_LDT_STATUS_MSTRDPARERR	_SB_MAKEMASK1_32(24)
158*4882a593Smuzhiyun 
159*4882a593Smuzhiyun #define S_LDT_STATUS_DEVSELTIMING	25
160*4882a593Smuzhiyun #define M_LDT_STATUS_DEVSELTIMING	_SB_MAKEMASK_32(2, S_LDT_STATUS_DEVSELTIMING)
161*4882a593Smuzhiyun #define V_LDT_STATUS_DEVSELTIMING(x)	_SB_MAKEVALUE_32(x, S_LDT_STATUS_DEVSELTIMING)
162*4882a593Smuzhiyun #define G_LDT_STATUS_DEVSELTIMING(x)	_SB_GETVALUE_32(x, S_LDT_STATUS_DEVSELTIMING, M_LDT_STATUS_DEVSELTIMING)
163*4882a593Smuzhiyun 
164*4882a593Smuzhiyun #define M_LDT_STATUS_SIGDTGTABORT	_SB_MAKEMASK1_32(27)
165*4882a593Smuzhiyun #define M_LDT_STATUS_RCVDTGTABORT	_SB_MAKEMASK1_32(28)
166*4882a593Smuzhiyun #define M_LDT_STATUS_RCVDMSTRABORT	_SB_MAKEMASK1_32(29)
167*4882a593Smuzhiyun #define M_LDT_STATUS_SIGDSERR		_SB_MAKEMASK1_32(30)
168*4882a593Smuzhiyun #define M_LDT_STATUS_DETPARERR		_SB_MAKEMASK1_32(31)
169*4882a593Smuzhiyun 
170*4882a593Smuzhiyun /*
171*4882a593Smuzhiyun  * Bridge Control Register (Table 8-16).  Note that these
172*4882a593Smuzhiyun  * constants assume you've read the register as a 32-bit
173*4882a593Smuzhiyun  * read (offset 0x3C)
174*4882a593Smuzhiyun  */
175*4882a593Smuzhiyun 
176*4882a593Smuzhiyun #define M_LDT_BRCTL_PARERRRESP_EN	_SB_MAKEMASK1_32(16)
177*4882a593Smuzhiyun #define M_LDT_BRCTL_SERR_EN		_SB_MAKEMASK1_32(17)
178*4882a593Smuzhiyun #define M_LDT_BRCTL_ISA_EN		_SB_MAKEMASK1_32(18)
179*4882a593Smuzhiyun #define M_LDT_BRCTL_VGA_EN		_SB_MAKEMASK1_32(19)
180*4882a593Smuzhiyun #define M_LDT_BRCTL_MSTRABORTMODE	_SB_MAKEMASK1_32(21)
181*4882a593Smuzhiyun #define M_LDT_BRCTL_SECBUSRESET		_SB_MAKEMASK1_32(22)
182*4882a593Smuzhiyun #define M_LDT_BRCTL_FASTB2B_EN		_SB_MAKEMASK1_32(23)
183*4882a593Smuzhiyun #define M_LDT_BRCTL_PRIDISCARD		_SB_MAKEMASK1_32(24)
184*4882a593Smuzhiyun #define M_LDT_BRCTL_SECDISCARD		_SB_MAKEMASK1_32(25)
185*4882a593Smuzhiyun #define M_LDT_BRCTL_DISCARDSTAT		_SB_MAKEMASK1_32(26)
186*4882a593Smuzhiyun #define M_LDT_BRCTL_DISCARDSERR_EN	_SB_MAKEMASK1_32(27)
187*4882a593Smuzhiyun 
188*4882a593Smuzhiyun /*
189*4882a593Smuzhiyun  * LDT Command Register (Table 8-17).  Note that these constants
190*4882a593Smuzhiyun  * assume you've read the command and status register together
191*4882a593Smuzhiyun  * 32-bit read at offset 0x40
192*4882a593Smuzhiyun  */
193*4882a593Smuzhiyun 
194*4882a593Smuzhiyun #define M_LDT_CMD_WARMRESET		_SB_MAKEMASK1_32(16)
195*4882a593Smuzhiyun #define M_LDT_CMD_DOUBLEENDED		_SB_MAKEMASK1_32(17)
196*4882a593Smuzhiyun 
197*4882a593Smuzhiyun #define S_LDT_CMD_CAPTYPE		29
198*4882a593Smuzhiyun #define M_LDT_CMD_CAPTYPE		_SB_MAKEMASK_32(3, S_LDT_CMD_CAPTYPE)
199*4882a593Smuzhiyun #define V_LDT_CMD_CAPTYPE(x)		_SB_MAKEVALUE_32(x, S_LDT_CMD_CAPTYPE)
200*4882a593Smuzhiyun #define G_LDT_CMD_CAPTYPE(x)		_SB_GETVALUE_32(x, S_LDT_CMD_CAPTYPE, M_LDT_CMD_CAPTYPE)
201*4882a593Smuzhiyun 
202*4882a593Smuzhiyun /*
203*4882a593Smuzhiyun  * LDT link control register (Table 8-18), and (Table 8-19)
204*4882a593Smuzhiyun  */
205*4882a593Smuzhiyun 
206*4882a593Smuzhiyun #define M_LDT_LINKCTRL_CAPSYNCFLOOD_EN	_SB_MAKEMASK1_32(1)
207*4882a593Smuzhiyun #define M_LDT_LINKCTRL_CRCSTARTTEST	_SB_MAKEMASK1_32(2)
208*4882a593Smuzhiyun #define M_LDT_LINKCTRL_CRCFORCEERR	_SB_MAKEMASK1_32(3)
209*4882a593Smuzhiyun #define M_LDT_LINKCTRL_LINKFAIL		_SB_MAKEMASK1_32(4)
210*4882a593Smuzhiyun #define M_LDT_LINKCTRL_INITDONE		_SB_MAKEMASK1_32(5)
211*4882a593Smuzhiyun #define M_LDT_LINKCTRL_EOC		_SB_MAKEMASK1_32(6)
212*4882a593Smuzhiyun #define M_LDT_LINKCTRL_XMITOFF		_SB_MAKEMASK1_32(7)
213*4882a593Smuzhiyun 
214*4882a593Smuzhiyun #define S_LDT_LINKCTRL_CRCERR		8
215*4882a593Smuzhiyun #define M_LDT_LINKCTRL_CRCERR		_SB_MAKEMASK_32(4, S_LDT_LINKCTRL_CRCERR)
216*4882a593Smuzhiyun #define V_LDT_LINKCTRL_CRCERR(x)	_SB_MAKEVALUE_32(x, S_LDT_LINKCTRL_CRCERR)
217*4882a593Smuzhiyun #define G_LDT_LINKCTRL_CRCERR(x)	_SB_GETVALUE_32(x, S_LDT_LINKCTRL_CRCERR, M_LDT_LINKCTRL_CRCERR)
218*4882a593Smuzhiyun 
219*4882a593Smuzhiyun #define S_LDT_LINKCTRL_MAXIN		16
220*4882a593Smuzhiyun #define M_LDT_LINKCTRL_MAXIN		_SB_MAKEMASK_32(3, S_LDT_LINKCTRL_MAXIN)
221*4882a593Smuzhiyun #define V_LDT_LINKCTRL_MAXIN(x)		_SB_MAKEVALUE_32(x, S_LDT_LINKCTRL_MAXIN)
222*4882a593Smuzhiyun #define G_LDT_LINKCTRL_MAXIN(x)		_SB_GETVALUE_32(x, S_LDT_LINKCTRL_MAXIN, M_LDT_LINKCTRL_MAXIN)
223*4882a593Smuzhiyun 
224*4882a593Smuzhiyun #define M_LDT_LINKCTRL_DWFCLN		_SB_MAKEMASK1_32(19)
225*4882a593Smuzhiyun 
226*4882a593Smuzhiyun #define S_LDT_LINKCTRL_MAXOUT		20
227*4882a593Smuzhiyun #define M_LDT_LINKCTRL_MAXOUT		_SB_MAKEMASK_32(3, S_LDT_LINKCTRL_MAXOUT)
228*4882a593Smuzhiyun #define V_LDT_LINKCTRL_MAXOUT(x)	_SB_MAKEVALUE_32(x, S_LDT_LINKCTRL_MAXOUT)
229*4882a593Smuzhiyun #define G_LDT_LINKCTRL_MAXOUT(x)	_SB_GETVALUE_32(x, S_LDT_LINKCTRL_MAXOUT, M_LDT_LINKCTRL_MAXOUT)
230*4882a593Smuzhiyun 
231*4882a593Smuzhiyun #define M_LDT_LINKCTRL_DWFCOUT		_SB_MAKEMASK1_32(23)
232*4882a593Smuzhiyun 
233*4882a593Smuzhiyun #define S_LDT_LINKCTRL_WIDTHIN		24
234*4882a593Smuzhiyun #define M_LDT_LINKCTRL_WIDTHIN		_SB_MAKEMASK_32(3, S_LDT_LINKCTRL_WIDTHIN)
235*4882a593Smuzhiyun #define V_LDT_LINKCTRL_WIDTHIN(x)	_SB_MAKEVALUE_32(x, S_LDT_LINKCTRL_WIDTHIN)
236*4882a593Smuzhiyun #define G_LDT_LINKCTRL_WIDTHIN(x)	_SB_GETVALUE_32(x, S_LDT_LINKCTRL_WIDTHIN, M_LDT_LINKCTRL_WIDTHIN)
237*4882a593Smuzhiyun 
238*4882a593Smuzhiyun #define M_LDT_LINKCTRL_DWFCLIN_EN	_SB_MAKEMASK1_32(27)
239*4882a593Smuzhiyun 
240*4882a593Smuzhiyun #define S_LDT_LINKCTRL_WIDTHOUT		28
241*4882a593Smuzhiyun #define M_LDT_LINKCTRL_WIDTHOUT		_SB_MAKEMASK_32(3, S_LDT_LINKCTRL_WIDTHOUT)
242*4882a593Smuzhiyun #define V_LDT_LINKCTRL_WIDTHOUT(x)	_SB_MAKEVALUE_32(x, S_LDT_LINKCTRL_WIDTHOUT)
243*4882a593Smuzhiyun #define G_LDT_LINKCTRL_WIDTHOUT(x)	_SB_GETVALUE_32(x, S_LDT_LINKCTRL_WIDTHOUT, M_LDT_LINKCTRL_WIDTHOUT)
244*4882a593Smuzhiyun 
245*4882a593Smuzhiyun #define M_LDT_LINKCTRL_DWFCOUT_EN	_SB_MAKEMASK1_32(31)
246*4882a593Smuzhiyun 
247*4882a593Smuzhiyun /*
248*4882a593Smuzhiyun  * LDT Link frequency register	(Table 8-20) offset 0x48
249*4882a593Smuzhiyun  */
250*4882a593Smuzhiyun 
251*4882a593Smuzhiyun #define S_LDT_LINKFREQ_FREQ		8
252*4882a593Smuzhiyun #define M_LDT_LINKFREQ_FREQ		_SB_MAKEMASK_32(4, S_LDT_LINKFREQ_FREQ)
253*4882a593Smuzhiyun #define V_LDT_LINKFREQ_FREQ(x)		_SB_MAKEVALUE_32(x, S_LDT_LINKFREQ_FREQ)
254*4882a593Smuzhiyun #define G_LDT_LINKFREQ_FREQ(x)		_SB_GETVALUE_32(x, S_LDT_LINKFREQ_FREQ, M_LDT_LINKFREQ_FREQ)
255*4882a593Smuzhiyun 
256*4882a593Smuzhiyun #define K_LDT_LINKFREQ_200MHZ		0
257*4882a593Smuzhiyun #define K_LDT_LINKFREQ_300MHZ		1
258*4882a593Smuzhiyun #define K_LDT_LINKFREQ_400MHZ		2
259*4882a593Smuzhiyun #define K_LDT_LINKFREQ_500MHZ		3
260*4882a593Smuzhiyun #define K_LDT_LINKFREQ_600MHZ		4
261*4882a593Smuzhiyun #define K_LDT_LINKFREQ_800MHZ		5
262*4882a593Smuzhiyun #define K_LDT_LINKFREQ_1000MHZ		6
263*4882a593Smuzhiyun 
264*4882a593Smuzhiyun /*
265*4882a593Smuzhiyun  * LDT SRI Command Register (Table 8-21).  Note that these constants
266*4882a593Smuzhiyun  * assume you've read the command and status register together
267*4882a593Smuzhiyun  * 32-bit read at offset 0x50
268*4882a593Smuzhiyun  */
269*4882a593Smuzhiyun 
270*4882a593Smuzhiyun #define M_LDT_SRICMD_SIPREADY		_SB_MAKEMASK1_32(16)
271*4882a593Smuzhiyun #define M_LDT_SRICMD_SYNCPTRCTL		_SB_MAKEMASK1_32(17)
272*4882a593Smuzhiyun #define M_LDT_SRICMD_REDUCESYNCZERO	_SB_MAKEMASK1_32(18)
273*4882a593Smuzhiyun #if SIBYTE_HDR_FEATURE_UP_TO(1250, PASS1)
274*4882a593Smuzhiyun #define M_LDT_SRICMD_DISSTARVATIONCNT	_SB_MAKEMASK1_32(19)	/* PASS1 */
275*4882a593Smuzhiyun #endif /* up to 1250 PASS1 */
276*4882a593Smuzhiyun #if SIBYTE_HDR_FEATURE(1250, PASS2) || SIBYTE_HDR_FEATURE(112x, PASS1)
277*4882a593Smuzhiyun #define M_LDT_SRICMD_DISMULTTXVLD	_SB_MAKEMASK1_32(19)
278*4882a593Smuzhiyun #define M_LDT_SRICMD_EXPENDIAN		_SB_MAKEMASK1_32(26)
279*4882a593Smuzhiyun #endif /* 1250 PASS2 || 112x PASS1 */
280*4882a593Smuzhiyun 
281*4882a593Smuzhiyun 
282*4882a593Smuzhiyun #define S_LDT_SRICMD_RXMARGIN		20
283*4882a593Smuzhiyun #define M_LDT_SRICMD_RXMARGIN		_SB_MAKEMASK_32(5, S_LDT_SRICMD_RXMARGIN)
284*4882a593Smuzhiyun #define V_LDT_SRICMD_RXMARGIN(x)	_SB_MAKEVALUE_32(x, S_LDT_SRICMD_RXMARGIN)
285*4882a593Smuzhiyun #define G_LDT_SRICMD_RXMARGIN(x)	_SB_GETVALUE_32(x, S_LDT_SRICMD_RXMARGIN, M_LDT_SRICMD_RXMARGIN)
286*4882a593Smuzhiyun 
287*4882a593Smuzhiyun #define M_LDT_SRICMD_LDTPLLCOMPAT	_SB_MAKEMASK1_32(25)
288*4882a593Smuzhiyun 
289*4882a593Smuzhiyun #define S_LDT_SRICMD_TXINITIALOFFSET	28
290*4882a593Smuzhiyun #define M_LDT_SRICMD_TXINITIALOFFSET	_SB_MAKEMASK_32(3, S_LDT_SRICMD_TXINITIALOFFSET)
291*4882a593Smuzhiyun #define V_LDT_SRICMD_TXINITIALOFFSET(x) _SB_MAKEVALUE_32(x, S_LDT_SRICMD_TXINITIALOFFSET)
292*4882a593Smuzhiyun #define G_LDT_SRICMD_TXINITIALOFFSET(x) _SB_GETVALUE_32(x, S_LDT_SRICMD_TXINITIALOFFSET, M_LDT_SRICMD_TXINITIALOFFSET)
293*4882a593Smuzhiyun 
294*4882a593Smuzhiyun #define M_LDT_SRICMD_LINKFREQDIRECT	_SB_MAKEMASK1_32(31)
295*4882a593Smuzhiyun 
296*4882a593Smuzhiyun /*
297*4882a593Smuzhiyun  * LDT Error control and status register (Table 8-22) (Table 8-23)
298*4882a593Smuzhiyun  */
299*4882a593Smuzhiyun 
300*4882a593Smuzhiyun #define M_LDT_ERRCTL_PROTFATAL_EN	_SB_MAKEMASK1_32(0)
301*4882a593Smuzhiyun #define M_LDT_ERRCTL_PROTNONFATAL_EN	_SB_MAKEMASK1_32(1)
302*4882a593Smuzhiyun #define M_LDT_ERRCTL_PROTSYNCFLOOD_EN	_SB_MAKEMASK1_32(2)
303*4882a593Smuzhiyun #define M_LDT_ERRCTL_OVFFATAL_EN	_SB_MAKEMASK1_32(3)
304*4882a593Smuzhiyun #define M_LDT_ERRCTL_OVFNONFATAL_EN	_SB_MAKEMASK1_32(4)
305*4882a593Smuzhiyun #define M_LDT_ERRCTL_OVFSYNCFLOOD_EN	_SB_MAKEMASK1_32(5)
306*4882a593Smuzhiyun #define M_LDT_ERRCTL_EOCNXAFATAL_EN	_SB_MAKEMASK1_32(6)
307*4882a593Smuzhiyun #define M_LDT_ERRCTL_EOCNXANONFATAL_EN	_SB_MAKEMASK1_32(7)
308*4882a593Smuzhiyun #define M_LDT_ERRCTL_EOCNXASYNCFLOOD_EN _SB_MAKEMASK1_32(8)
309*4882a593Smuzhiyun #define M_LDT_ERRCTL_CRCFATAL_EN	_SB_MAKEMASK1_32(9)
310*4882a593Smuzhiyun #define M_LDT_ERRCTL_CRCNONFATAL_EN	_SB_MAKEMASK1_32(10)
311*4882a593Smuzhiyun #define M_LDT_ERRCTL_SERRFATAL_EN	_SB_MAKEMASK1_32(11)
312*4882a593Smuzhiyun #define M_LDT_ERRCTL_SRCTAGFATAL_EN	_SB_MAKEMASK1_32(12)
313*4882a593Smuzhiyun #define M_LDT_ERRCTL_SRCTAGNONFATAL_EN	_SB_MAKEMASK1_32(13)
314*4882a593Smuzhiyun #define M_LDT_ERRCTL_SRCTAGSYNCFLOOD_EN _SB_MAKEMASK1_32(14)
315*4882a593Smuzhiyun #define M_LDT_ERRCTL_MAPNXAFATAL_EN	_SB_MAKEMASK1_32(15)
316*4882a593Smuzhiyun #define M_LDT_ERRCTL_MAPNXANONFATAL_EN	_SB_MAKEMASK1_32(16)
317*4882a593Smuzhiyun #define M_LDT_ERRCTL_MAPNXASYNCFLOOD_EN _SB_MAKEMASK1_32(17)
318*4882a593Smuzhiyun 
319*4882a593Smuzhiyun #define M_LDT_ERRCTL_PROTOERR		_SB_MAKEMASK1_32(24)
320*4882a593Smuzhiyun #define M_LDT_ERRCTL_OVFERR		_SB_MAKEMASK1_32(25)
321*4882a593Smuzhiyun #define M_LDT_ERRCTL_EOCNXAERR		_SB_MAKEMASK1_32(26)
322*4882a593Smuzhiyun #define M_LDT_ERRCTL_SRCTAGERR		_SB_MAKEMASK1_32(27)
323*4882a593Smuzhiyun #define M_LDT_ERRCTL_MAPNXAERR		_SB_MAKEMASK1_32(28)
324*4882a593Smuzhiyun 
325*4882a593Smuzhiyun /*
326*4882a593Smuzhiyun  * SRI Control register (Table 8-24, 8-25)  Offset 0x6C
327*4882a593Smuzhiyun  */
328*4882a593Smuzhiyun 
329*4882a593Smuzhiyun #define S_LDT_SRICTRL_NEEDRESP		0
330*4882a593Smuzhiyun #define M_LDT_SRICTRL_NEEDRESP		_SB_MAKEMASK_32(2, S_LDT_SRICTRL_NEEDRESP)
331*4882a593Smuzhiyun #define V_LDT_SRICTRL_NEEDRESP(x)	_SB_MAKEVALUE_32(x, S_LDT_SRICTRL_NEEDRESP)
332*4882a593Smuzhiyun #define G_LDT_SRICTRL_NEEDRESP(x)	_SB_GETVALUE_32(x, S_LDT_SRICTRL_NEEDRESP, M_LDT_SRICTRL_NEEDRESP)
333*4882a593Smuzhiyun 
334*4882a593Smuzhiyun #define S_LDT_SRICTRL_NEEDNPREQ		2
335*4882a593Smuzhiyun #define M_LDT_SRICTRL_NEEDNPREQ		_SB_MAKEMASK_32(2, S_LDT_SRICTRL_NEEDNPREQ)
336*4882a593Smuzhiyun #define V_LDT_SRICTRL_NEEDNPREQ(x)	_SB_MAKEVALUE_32(x, S_LDT_SRICTRL_NEEDNPREQ)
337*4882a593Smuzhiyun #define G_LDT_SRICTRL_NEEDNPREQ(x)	_SB_GETVALUE_32(x, S_LDT_SRICTRL_NEEDNPREQ, M_LDT_SRICTRL_NEEDNPREQ)
338*4882a593Smuzhiyun 
339*4882a593Smuzhiyun #define S_LDT_SRICTRL_NEEDPREQ		4
340*4882a593Smuzhiyun #define M_LDT_SRICTRL_NEEDPREQ		_SB_MAKEMASK_32(2, S_LDT_SRICTRL_NEEDPREQ)
341*4882a593Smuzhiyun #define V_LDT_SRICTRL_NEEDPREQ(x)	_SB_MAKEVALUE_32(x, S_LDT_SRICTRL_NEEDPREQ)
342*4882a593Smuzhiyun #define G_LDT_SRICTRL_NEEDPREQ(x)	_SB_GETVALUE_32(x, S_LDT_SRICTRL_NEEDPREQ, M_LDT_SRICTRL_NEEDPREQ)
343*4882a593Smuzhiyun 
344*4882a593Smuzhiyun #define S_LDT_SRICTRL_WANTRESP		8
345*4882a593Smuzhiyun #define M_LDT_SRICTRL_WANTRESP		_SB_MAKEMASK_32(2, S_LDT_SRICTRL_WANTRESP)
346*4882a593Smuzhiyun #define V_LDT_SRICTRL_WANTRESP(x)	_SB_MAKEVALUE_32(x, S_LDT_SRICTRL_WANTRESP)
347*4882a593Smuzhiyun #define G_LDT_SRICTRL_WANTRESP(x)	_SB_GETVALUE_32(x, S_LDT_SRICTRL_WANTRESP, M_LDT_SRICTRL_WANTRESP)
348*4882a593Smuzhiyun 
349*4882a593Smuzhiyun #define S_LDT_SRICTRL_WANTNPREQ		10
350*4882a593Smuzhiyun #define M_LDT_SRICTRL_WANTNPREQ		_SB_MAKEMASK_32(2, S_LDT_SRICTRL_WANTNPREQ)
351*4882a593Smuzhiyun #define V_LDT_SRICTRL_WANTNPREQ(x)	_SB_MAKEVALUE_32(x, S_LDT_SRICTRL_WANTNPREQ)
352*4882a593Smuzhiyun #define G_LDT_SRICTRL_WANTNPREQ(x)	_SB_GETVALUE_32(x, S_LDT_SRICTRL_WANTNPREQ, M_LDT_SRICTRL_WANTNPREQ)
353*4882a593Smuzhiyun 
354*4882a593Smuzhiyun #define S_LDT_SRICTRL_WANTPREQ		12
355*4882a593Smuzhiyun #define M_LDT_SRICTRL_WANTPREQ		_SB_MAKEMASK_32(2, S_LDT_SRICTRL_WANTPREQ)
356*4882a593Smuzhiyun #define V_LDT_SRICTRL_WANTPREQ(x)	_SB_MAKEVALUE_32(x, S_LDT_SRICTRL_WANTPREQ)
357*4882a593Smuzhiyun #define G_LDT_SRICTRL_WANTPREQ(x)	_SB_GETVALUE_32(x, S_LDT_SRICTRL_WANTPREQ, M_LDT_SRICTRL_WANTPREQ)
358*4882a593Smuzhiyun 
359*4882a593Smuzhiyun #define S_LDT_SRICTRL_BUFRELSPACE	16
360*4882a593Smuzhiyun #define M_LDT_SRICTRL_BUFRELSPACE	_SB_MAKEMASK_32(4, S_LDT_SRICTRL_BUFRELSPACE)
361*4882a593Smuzhiyun #define V_LDT_SRICTRL_BUFRELSPACE(x)	_SB_MAKEVALUE_32(x, S_LDT_SRICTRL_BUFRELSPACE)
362*4882a593Smuzhiyun #define G_LDT_SRICTRL_BUFRELSPACE(x)	_SB_GETVALUE_32(x, S_LDT_SRICTRL_BUFRELSPACE, M_LDT_SRICTRL_BUFRELSPACE)
363*4882a593Smuzhiyun 
364*4882a593Smuzhiyun /*
365*4882a593Smuzhiyun  * LDT SRI Transmit Buffer Count register (Table 8-26)
366*4882a593Smuzhiyun  */
367*4882a593Smuzhiyun 
368*4882a593Smuzhiyun #define S_LDT_TXBUFCNT_PCMD		0
369*4882a593Smuzhiyun #define M_LDT_TXBUFCNT_PCMD		_SB_MAKEMASK_32(4, S_LDT_TXBUFCNT_PCMD)
370*4882a593Smuzhiyun #define V_LDT_TXBUFCNT_PCMD(x)		_SB_MAKEVALUE_32(x, S_LDT_TXBUFCNT_PCMD)
371*4882a593Smuzhiyun #define G_LDT_TXBUFCNT_PCMD(x)		_SB_GETVALUE_32(x, S_LDT_TXBUFCNT_PCMD, M_LDT_TXBUFCNT_PCMD)
372*4882a593Smuzhiyun 
373*4882a593Smuzhiyun #define S_LDT_TXBUFCNT_PDATA		4
374*4882a593Smuzhiyun #define M_LDT_TXBUFCNT_PDATA		_SB_MAKEMASK_32(4, S_LDT_TXBUFCNT_PDATA)
375*4882a593Smuzhiyun #define V_LDT_TXBUFCNT_PDATA(x)		_SB_MAKEVALUE_32(x, S_LDT_TXBUFCNT_PDATA)
376*4882a593Smuzhiyun #define G_LDT_TXBUFCNT_PDATA(x)		_SB_GETVALUE_32(x, S_LDT_TXBUFCNT_PDATA, M_LDT_TXBUFCNT_PDATA)
377*4882a593Smuzhiyun 
378*4882a593Smuzhiyun #define S_LDT_TXBUFCNT_NPCMD		8
379*4882a593Smuzhiyun #define M_LDT_TXBUFCNT_NPCMD		_SB_MAKEMASK_32(4, S_LDT_TXBUFCNT_NPCMD)
380*4882a593Smuzhiyun #define V_LDT_TXBUFCNT_NPCMD(x)		_SB_MAKEVALUE_32(x, S_LDT_TXBUFCNT_NPCMD)
381*4882a593Smuzhiyun #define G_LDT_TXBUFCNT_NPCMD(x)		_SB_GETVALUE_32(x, S_LDT_TXBUFCNT_NPCMD, M_LDT_TXBUFCNT_NPCMD)
382*4882a593Smuzhiyun 
383*4882a593Smuzhiyun #define S_LDT_TXBUFCNT_NPDATA		12
384*4882a593Smuzhiyun #define M_LDT_TXBUFCNT_NPDATA		_SB_MAKEMASK_32(4, S_LDT_TXBUFCNT_NPDATA)
385*4882a593Smuzhiyun #define V_LDT_TXBUFCNT_NPDATA(x)	_SB_MAKEVALUE_32(x, S_LDT_TXBUFCNT_NPDATA)
386*4882a593Smuzhiyun #define G_LDT_TXBUFCNT_NPDATA(x)	_SB_GETVALUE_32(x, S_LDT_TXBUFCNT_NPDATA, M_LDT_TXBUFCNT_NPDATA)
387*4882a593Smuzhiyun 
388*4882a593Smuzhiyun #define S_LDT_TXBUFCNT_RCMD		16
389*4882a593Smuzhiyun #define M_LDT_TXBUFCNT_RCMD		_SB_MAKEMASK_32(4, S_LDT_TXBUFCNT_RCMD)
390*4882a593Smuzhiyun #define V_LDT_TXBUFCNT_RCMD(x)		_SB_MAKEVALUE_32(x, S_LDT_TXBUFCNT_RCMD)
391*4882a593Smuzhiyun #define G_LDT_TXBUFCNT_RCMD(x)		_SB_GETVALUE_32(x, S_LDT_TXBUFCNT_RCMD, M_LDT_TXBUFCNT_RCMD)
392*4882a593Smuzhiyun 
393*4882a593Smuzhiyun #define S_LDT_TXBUFCNT_RDATA		20
394*4882a593Smuzhiyun #define M_LDT_TXBUFCNT_RDATA		_SB_MAKEMASK_32(4, S_LDT_TXBUFCNT_RDATA)
395*4882a593Smuzhiyun #define V_LDT_TXBUFCNT_RDATA(x)		_SB_MAKEVALUE_32(x, S_LDT_TXBUFCNT_RDATA)
396*4882a593Smuzhiyun #define G_LDT_TXBUFCNT_RDATA(x)		_SB_GETVALUE_32(x, S_LDT_TXBUFCNT_RDATA, M_LDT_TXBUFCNT_RDATA)
397*4882a593Smuzhiyun 
398*4882a593Smuzhiyun #if SIBYTE_HDR_FEATURE(1250, PASS2) || SIBYTE_HDR_FEATURE(112x, PASS1)
399*4882a593Smuzhiyun /*
400*4882a593Smuzhiyun  * Additional Status Register
401*4882a593Smuzhiyun  */
402*4882a593Smuzhiyun 
403*4882a593Smuzhiyun #define S_LDT_ADDSTATUS_TGTDONE		0
404*4882a593Smuzhiyun #define M_LDT_ADDSTATUS_TGTDONE		_SB_MAKEMASK_32(8, S_LDT_ADDSTATUS_TGTDONE)
405*4882a593Smuzhiyun #define V_LDT_ADDSTATUS_TGTDONE(x)	_SB_MAKEVALUE_32(x, S_LDT_ADDSTATUS_TGTDONE)
406*4882a593Smuzhiyun #define G_LDT_ADDSTATUS_TGTDONE(x)	_SB_GETVALUE_32(x, S_LDT_ADDSTATUS_TGTDONE, M_LDT_ADDSTATUS_TGTDONE)
407*4882a593Smuzhiyun #endif /* 1250 PASS2 || 112x PASS1 */
408*4882a593Smuzhiyun 
409*4882a593Smuzhiyun #endif
410