xref: /netbsd/sys/arch/mips/sibyte/include/bcm1480_ht.h (revision 6550d01e)
1 /*  *********************************************************************
2     *  BCM1280/BCM1480 Board Support Package
3     *
4     *  HT Device constants                            File: bcm1480_ht.h
5     *
6     *  This module contains constants and macros to describe
7     *  the HT interface on the BCM1280/BCM1480.
8     *
9     *  BCM1480 specification level:  1X55_1X80-UM100-R (12/18/03)
10     *
11     *********************************************************************
12     *
13     *  Copyright 2000,2001,2002,2003,2004
14     *  Broadcom Corporation. All rights reserved.
15     *
16     *  This software is furnished under license and may be used and
17     *  copied only in accordance with the following terms and
18     *  conditions.  Subject to these conditions, you may download,
19     *  copy, install, use, modify and distribute modified or unmodified
20     *  copies of this software in source and/or binary form.  No title
21     *  or ownership is transferred hereby.
22     *
23     *  1) Any source code used, modified or distributed must reproduce
24     *     and retain this copyright notice and list of conditions
25     *     as they appear in the source file.
26     *
27     *  2) No right is granted to use any trade name, trademark, or
28     *     logo of Broadcom Corporation.  The "Broadcom Corporation"
29     *     name may not be used to endorse or promote products derived
30     *     from this software without the prior written permission of
31     *     Broadcom Corporation.
32     *
33     *  3) THIS SOFTWARE IS PROVIDED "AS-IS" AND ANY EXPRESS OR
34     *     IMPLIED WARRANTIES, INCLUDING BUT NOT LIMITED TO, ANY IMPLIED
35     *     WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
36     *     PURPOSE, OR NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT
37     *     SHALL BROADCOM BE LIABLE FOR ANY DAMAGES WHATSOEVER, AND IN
38     *     PARTICULAR, BROADCOM SHALL NOT BE LIABLE FOR DIRECT, INDIRECT,
39     *     INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
40     *     (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
41     *     GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
42     *     BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
43     *     OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
44     *     TORT (INCLUDING NEGLIGENCE OR OTHERWISE), EVEN IF ADVISED OF
45     *     THE POSSIBILITY OF SUCH DAMAGE.
46     ********************************************************************* */
47 
48 
49 #ifndef _BCM1480_HT_H
50 #define _BCM1480_HT_H
51 
52 #include "sb1250_defs.h"
53 
54 
55 /*
56  * The following definitions refer to PCI Configuration Space of the
57  * HyperTransport Device Host Bridge (HTD).  All registers are 32 bits.
58  */
59 
60 /*
61  * HT Interface Device Configuration Header (Table 130)
62  * The first 64 bytes are a standard Type 0 header.  Only
63  * device-specific extensions are defined here.
64  */
65 
66 #define R_BCM1480_HTD_ERRORINT           0x0084
67 #define R_BCM1480_HTD_SPECCMDSTAT        0x0088
68 #define R_BCM1480_HTD_SUBSYSSET          0x008C
69 #define R_BCM1480_HTD_TGTDONE            0x0090
70 #define R_BCM1480_HTD_VENDORIDSET        0x009C
71 #define R_BCM1480_HTD_CLASSREVSET        0x00A0
72 #define R_BCM1480_HTD_ISOCBAR            0x00A4
73 #define R_BCM1480_HTD_ISOCBARMASK        0x00A8
74 #define R_BCM1480_HTD_MAPBASE            0x00B0	/* 0xB0 through 0xEC - map table */
75 #define HTD_MAPENTRIES           16	/* 64 bytes, 16 entries */
76 #define R_BCM1480_HTD_MAP(n)             (R_BCM1480_HTD_MAPBASE + (n)*4)
77 #define R_BCM1480_HTD_INTBUSCTRL         0x00F0
78 #define R_BCM1480_HTD_PORTSCTRL          0x00F4
79 
80 
81 /*
82  * HT Device Error and Interrupt Register (Table 133)
83  */
84 
85 #define M_BCM1480_HTD_INT_BUS_ERR            _SB_MAKEMASK1_32(0)
86 #define M_BCM1480_HTD_PORT0_DOWN_ERR         _SB_MAKEMASK1_32(8)
87 #define M_BCM1480_HTD_PORT1_DOWN_ERR         _SB_MAKEMASK1_32(9)
88 #define M_BCM1480_HTD_PORT2_DOWN_ERR         _SB_MAKEMASK1_32(10)
89 #define M_BCM1480_HTD_INT_BUS_DOWN_ERR       _SB_MAKEMASK1_32(12)
90 #define M_BCM1480_HTD_INT_BUS_ERR_INT_EN     _SB_MAKEMASK1_32(16)
91 #define M_BCM1480_HTD_PORT0_DOWN_INT_EN      _SB_MAKEMASK1_32(24)
92 #define M_BCM1480_HTD_PORT1_DOWN_INT_EN      _SB_MAKEMASK1_32(25)
93 #define M_BCM1480_HTD_PORT2_DOWN_INT_EN      _SB_MAKEMASK1_32(26)
94 #define M_BCM1480_HTD_INT_BUS_DOWN_INT_EN    _SB_MAKEMASK1_32(28)
95 
96 /*
97  * HT Device Specific Command and Status Register (Table 134)
98  */
99 
100 #define M_BCM1480_HTD_CMD_LOW_RANGE_EN       _SB_MAKEMASK1_32(0)
101 #define M_BCM1480_HTD_CMD_LOW_RANGE_SPLIT    _SB_MAKEMASK1_32(1)
102 #define M_BCM1480_HTD_CMD_FULL_BAR_EN        _SB_MAKEMASK1_32(2)
103 #define M_BCM1480_HTD_CMD_FULL_BAR_SPLIT     _SB_MAKEMASK1_32(3)
104 #define M_BCM1480_HTD_CMD_MSTR_ABORT_MODE    _SB_MAKEMASK1_32(5)
105 
106 /*
107  * HT Device Target Done Register (Table 135)
108  */
109 
110 #define S_BCM1480_HTD_TGT_DONE_COUNTER       0
111 #define M_BCM1480_HTD_TGT_DONE_COUNTER       _SB_MAKEMASK_32(8,S_BCM1480_HTD_TGT_DONE_COUNTER)
112 #define V_BCM1480_HTD_TGT_DONE_COUNTER(x)    _SB_MAKEVALUE_32(x,S_BCM1480_HTD_TGT_DONE_COUNTER)
113 #define G_BCM1480_HTD_TGT_DONE_COUNTER(x)    _SB_GETVALUE_32(x,S_BCM1480_HTD_TGT_DONE_COUNTER,M_BCM1480_HTD_TGT_DONE_COUNTER)
114 
115 /*
116  * HT Device Isochronous BAR Register (Table 136)
117  */
118 
119 #define M_BCM1480_HTD_ISOC_BAR_EN            _SB_MAKEMASK1_32(0)
120 
121 #define S_BCM1480_HTD_ISOC_BAR               1
122 #define M_BCM1480_HTD_ISOC_BAR               _SB_MAKEMASK_32(31,S_BCM1480_HTD_ISOC_BAR)
123 #define V_BCM1480_HTD_ISOC_BAR(x)            _SB_MAKEVALUE_32(x,S_BCM1480_HTD_ISOC_BAR)
124 #define G_BCM1480_HTD_ISOC_BAR(x)            _SB_GETVALUE_32(x,S_BCM1480_HTD_ISOC_BAR,M_BCM1480_HTD_ISOC_BAR)
125 
126 /*
127  * HT Device Isochronous Ignore Mask Register (Table 137)
128  */
129 
130 #define S_BCM1480_HTD_ISOC_IGN_MASK          1
131 #define M_BCM1480_HTD_ISOC_IGN_MASK          _SB_MAKEMASK_32(31,S_BCM1480_HTD_ISOC_IGN_MASK)
132 #define V_BCM1480_HTD_ISOC_IGN_MASK(x)       _SB_MAKEVALUE_32(x,S_BCM1480_HTD_ISOC_IGN_MASK)
133 #define G_BCM1480_HTD_ISOC_IGN_MASK(x)       _SB_GETVALUE_32(x,S_BCM1480_HTD_ISOCBAR,M_BCM1480_HTD_ISOCBAR)
134 
135 /*
136  * HT Device BAR0 Map Table Entry (Table 138)
137  */
138 
139 #define M_BCM1480_HTD_BAR0MAP_ENABLE         _SB_MAKEMASK1_32(0)
140 #define M_BCM1480_HTD_BAR0MAP_L2CA           _SB_MAKEMASK1_32(2)
141 #define M_BCM1480_HTD_BAR0MAP_ENDIAN         _SB_MAKEMASK1_32(3)
142 
143 #define S_BCM1480_HTD_BAR0MAP_ADDR           12
144 #define M_BCM1480_HTD_BAR0MAP_ADDR           _SB_MAKEMASK_32(20,S_BCM1480_HTD_BAR0MAP_ADDR)
145 #define V_BCM1480_HTD_BAR0MAP_ADDR(x)        _SB_MAKEVALUE_32(x,S_BCM1480_HTD_BAR0MAP_ADDR)
146 #define G_BCM1480_HTD_BAR0MAP_ADDR(x)        _SB_GETVALUE_32(x,S_BCM1480_HTD_BAR0MAP_ADDR,M_BCM1480_HTD_BAR0MAP_ADDR)
147 
148 /*
149  * HT Device Internal Bus Control and Status Register (Table 139)
150  */
151 
152 #define M_BCM1480_HTD_INTBUS_WARM_R          _SB_MAKEMASK1_32(2)
153 #define M_BCM1480_HTD_INTBUS_RESET           _SB_MAKEMASK1_32(3)
154 #define M_BCM1480_HTD_INTBUS_WARM_R_STATUS   _SB_MAKEMASK1_32(4)
155 #define M_BCM1480_HTD_INTBUS_RESET_STATUS    _SB_MAKEMASK1_32(5)
156 #define M_BCM1480_HTD_INTBUS_DET_SERR        _SB_MAKEMASK1_32(8)
157 
158 /*
159  * HT Device Ports Control and Status Register (Table 140)
160  */
161 
162 #define S_BCM1480_HTD_PORTCTRL_PORT0        0
163 #define M_BCM1480_HTD_PORTCTRL_PORT0        _SB_MAKEMASK_32(8,S_BCM1480_HTD_PORTCTRL_PORT0)
164 #define V_BCM1480_HTD_PORTCTRL_PORT0(x)     _SB_MAKEVALUE_32(x,S_BCM1480_HTD_PORTCTRL_PORT0)
165 #define G_BCM1480_HTD_PORTCTRL_PORT0(x)     _SB_GETVALUE_32(x,S_BCM1480_HTD_PORTCTRL_PORT0,M_BCM1480_HTD_PORTCTRL_PORT0)
166 
167 #define S_BCM1480_HTD_PORTCTRL_PORT1        8
168 #define M_BCM1480_HTD_PORTCTRL_PORT1        _SB_MAKEMASK_32(8,S_BCM1480_HTD_PORTCTRL_PORT1)
169 #define V_BCM1480_HTD_PORTCTRL_PORT1(x)     _SB_MAKEVALUE_32(x,S_BCM1480_HTD_PORTCTRL_PORT1)
170 #define G_BCM1480_HTD_PORTCTRL_PORT1(x)     _SB_GETVALUE_32(x,S_BCM1480_HTD_PORTCTRL_PORT1,M_BCM1480_HTD_PORTCTRL_PORT1)
171 
172 #define S_BCM1480_HTD_PORTCTRL_PORT2        16
173 #define M_BCM1480_HTD_PORTCTRL_PORT2        _SB_MAKEMASK_32(8,S_BCM1480_HTD_PORTCTRL_PORT2)
174 #define V_BCM1480_HTD_PORTCTRL_PORT2(x)     _SB_MAKEVALUE_32(x,S_BCM1480_HTD_PORTCTRL_PORT2)
175 #define G_BCM1480_HTD_PORTCTRL_PORT2(x)     _SB_GETVALUE_32(x,S_BCM1480_HTD_PORTCTRL_PORT2,M_BCM1480_HTD_PORTCTRL_PORT2)
176 
177 #define S_BCM1480_HTD_PORTCTRL_PORTX(p)     ((p)*8)
178 #define M_BCM1480_HTD_PORTCTRL_PORTX(p)     _SB_MAKEMASK_32(8,S_BCM1480_HTD_PORTCTRL_PORTX(p))
179 #define V_BCM1480_HTD_PORTCTRL_PORTX(p,x)   _SB_MAKEVALUE_32(x,S_BCM1480_HTD_PORTCTRL_PORTX(p))
180 #define G_BCM1480_HTD_PORTCTRL_PORTX(p,x)   _SB_GETVALUE_32(x,S_BCM1480_HTD_PORTCTRL_PORTX(p),M_BCM1480_HTD_PORTCTRL_PORTX(p))
181 
182 /* The following fields are per port */
183 #define M_BCM1480_HTD_PORT_ACTIVE           _SB_MAKEMASK1_32(0)
184 #define M_BCM1480_HTD_PORT_IS_PRIMARY       _SB_MAKEMASK1_32(1)
185 #define M_BCM1480_HTD_PORT_LINK_WARM_R      _SB_MAKEMASK1_32(2)
186 #define M_BCM1480_HTD_PORT_LINK_RESET       _SB_MAKEMASK1_32(3)
187 #define M_BCM1480_HTD_PORT_LINKWARMR_STATUS _SB_MAKEMASK1_32(4)
188 #define M_BCM1480_HTD_PORT_LINKRESET_STATUS _SB_MAKEMASK1_32(5)
189 
190 
191 /*
192  * HT Internal Bridge HTB Configuration Header (Tables 141
193  * and 163).  The first 64 bytes are a standard Type 1 header.
194  * Only device-specific extensions are defined here.
195  * Note that Primary (Table 141) and Secondary (Table 163) formats
196  * are identical except for the HT Link Capability registers.
197  */
198 
199 #define R_BCM1480_HTB_LINKCAP            0x0040
200 #define R_BCM1480_HTB_LINKCTRL           0x0044
201 #define R_BCM1480_HTB_LINKFREQERR        0x0048
202 #define R_BCM1480_HTB_ERRHNDL            0x0050
203 #define R_BCM1480_HTB_SWITCHCAP          0x005C
204 #define R_BCM1480_HTB_SWITCHINFO         0x0064
205 #define R_BCM1480_HTB_VCSETCAP           0x0074
206 
207 #define R_BCM1480_HTB_SPECBRCTRL         0x0088
208 #define R_BCM1480_HTB_SPECLINKFREQ       0x0090
209 #define R_BCM1480_HTB_VENDORIDSET        0x009C
210 #define R_BCM1480_HTB_NODEROUTING0       0x00B0
211 #define R_BCM1480_HTB_NODEROUTING1       0x00B4
212 
213 
214 /*
215  * HT Bridge Specific Bridge Link Control Register (Tables 156 and 178)
216  */
217 
218 #define M_BCM1480_HTB_LINKCTRL_CRCFLEN   _SB_MAKEMASK1_32(1)
219 #define M_BCM1480_HTB_LINKCTRL_LINKFAIL  _SB_MAKEMASK1_32(4)
220 #define S_BCM1480_HTB_LINKCTRL_CRCERR    8
221 #define M_BCM1480_HTB_LINKCTRL_CRCERR    _SB_MAKEMASK_32(4,S_BCM1480_HTB_LINKCTRL_CRCERR)
222 
223 /*
224  * HT Bridge Specific Bridge Link Frequency / Error Register (Tables 158 and 180)
225  */
226 #define M_BCM1480_HTB_LINKFQERR_PROTERR   _SB_MAKEMASK1_32(12)
227 #define M_BCM1480_HTB_LINKFQERR_OVFLERR   _SB_MAKEMASK1_32(13)
228 #define M_BCM1480_HTB_LINKFQERR_EOCERR    _SB_MAKEMASK1_32(14)
229 
230 
231 /*
232  * HT Bridge Specific Bridge Error Handling Register (Tables 161 and 182)
233  */
234 #define M_BCM1480_HTB_ERRHNDL_PROFLEN     _SB_MAKEMASK1_32(16)
235 #define M_BCM1480_HTB_ERRHNDL_OVFFLEN     _SB_MAKEMASK1_32(17)
236 #define M_BCM1480_HTB_ERRHNDL_CHNFAIL     _SB_MAKEMASK1_32(24)
237 #define M_BCM1480_HTB_ERRHNDL_RSPERR      _SB_MAKEMASK1_32(25)
238 
239 
240 
241 
242 /*
243  * HT Bridge Specific Bridge Control Register (Tables 160 and 181)
244  */
245 
246 #define M_BCM1480_HTB_SPBRCTRL_SOUTH         _SB_MAKEMASK1_32(0)
247 #define M_BCM1480_HTB_SPBRCTRL_NO_INTR_FORWARD _SB_MAKEMASK1_32(8)
248 
249 /*
250  * HT Bridge Specific Link Frequency Control Register (Table 160)
251  */
252 
253 #define S_BCM1480_HTB_SPLINKFREQ_PLLFREQ     0
254 #define M_BCM1480_HTB_SPLINKFREQ_PLLFREQ     _SB_MAKEMASK_32(5,S_BCM1480_HTB_SPLINKFREQ_PLLFREQ)
255 #define V_BCM1480_HTB_SPLINKFREQ_PLLFREQ(x)  _SB_MAKEVALUE_32(x,S_BCM1480_HTB_SPLINKFREQ_PLLFREQ)
256 #define G_BCM1480_HTB_SPLINKFREQ_PLLFREQ(x)  _SB_GETVALUE_32(x,S_BCM1480_HTB_SPLINKFREQ_PLLFREQ,M_BCM1480_HTB_SPLINKFREQ_PLLFREQ)
257 
258 #define M_BCM1480_HTB_SPLINKFREQ_PLLDIV4     _SB_MAKEMASK1_32(5)
259 #define M_BCM1480_HTB_SPLINKFREQ_PLLCOMPAT   _SB_MAKEMASK1_32(6)
260 #define M_BCM1480_HTB_SPLINKFREQ_SEQSTEP     _SB_MAKEMASK1_32(7)
261 
262 #define S_BCM1480_HTB_SPLINKFREQ_FREQCAPSET  16
263 #define M_BCM1480_HTB_SPLINKFREQ_FREQCAPSET  _SB_MAKEMASK_32(16,S_BCM1480_HTB_SPLINKFREQ_FREQCAPSET)
264 #define V_BCM1480_HTB_SPLINKFREQ_FREQCAPSET(x) _SB_MAKEVALUE_32(x,S_BCM1480_HTB_SPLINKFREQ_FREQCAPSET)
265 #define G_BCM1480_HTB_SPLINKFREQ_FREQCAPSET(x) _SB_GETVALUE_32(x,S_BCM1480_HTB_SPLINKFREQ_FREQCAPSET,M_BCM1480_HTB_SPLINKFREQ_FREQCAPSET)
266 
267 /*
268  * HT Bridge Node Routing Registers (Table 161)
269  */
270 
271 #define S_BCM1480_HTB_NODEROUTE(n)           (4*(n))
272 #define M_BCM1480_HTB_NODEROUTE(n)           _SB_MAKEMASK_32(4,S_BCM1480_HTB_NODEROUTE(n))
273 #define V_BCM1480_HTB_NODEROUTE(x,n)         _SB_MAKEVALUE_32(x,S_BCM1480_HTB_NODEROUTE(n))
274 #define G_BCM1480_HTB_NODEROUTE(x,n)         _SB_GETVALUE_32(x,S_BCM1480_HTB_NODEROUTE(n),M_BCM1480_HTB_NODEROUTE(n))
275 
276 /* The following fields are per nibble */
277 #define M_BCM1480_HTB_ROUTE_IS_ON_SEC_FOR_IO _SB_MAKEMASK1_32(0)
278 #define M_BCM1480_HTB_ROUTE_OVERRIDE_FOR_IO  _SB_MAKEMASK1_32(1)
279 #define M_BCM1480_HTB_ROUTE_IS_ON_SEC_FOR_CC _SB_MAKEMASK1_32(2)
280 #define M_BCM1480_HTB_ROUTE_OVERRIDE_FOR_CC  _SB_MAKEMASK1_32(3)
281 
282 
283 /*
284  * HT Bridge Switch Info Register Bits (Table 164)
285  */
286 #define M_BCM1480_HTB_SWITCHINFO_HIDEPORT     _SB_MAKEMASK1_32(23)
287 
288 #endif /* _BCM1480_HT_H */
289