xref: /OK3568_Linux_fs/kernel/arch/mips/include/asm/sibyte/bcm1480_scd.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0-or-later */
2*4882a593Smuzhiyun /*  *********************************************************************
3*4882a593Smuzhiyun     *  BCM1280/BCM1400 Board Support Package
4*4882a593Smuzhiyun     *
5*4882a593Smuzhiyun     *  SCD Constants and Macros			    File: bcm1480_scd.h
6*4882a593Smuzhiyun     *
7*4882a593Smuzhiyun     *  This module contains constants and macros useful for
8*4882a593Smuzhiyun     *  manipulating the System Control and Debug module.
9*4882a593Smuzhiyun     *
10*4882a593Smuzhiyun     *  BCM1400 specification level: 1X55_1X80-UM100-R (12/18/03)
11*4882a593Smuzhiyun     *
12*4882a593Smuzhiyun     *********************************************************************
13*4882a593Smuzhiyun     *
14*4882a593Smuzhiyun     *  Copyright 2000,2001,2002,2003,2004,2005
15*4882a593Smuzhiyun     *  Broadcom Corporation. All rights reserved.
16*4882a593Smuzhiyun     *
17*4882a593Smuzhiyun     ********************************************************************* */
18*4882a593Smuzhiyun 
19*4882a593Smuzhiyun #ifndef _BCM1480_SCD_H
20*4882a593Smuzhiyun #define _BCM1480_SCD_H
21*4882a593Smuzhiyun 
22*4882a593Smuzhiyun #include <asm/sibyte/sb1250_defs.h>
23*4882a593Smuzhiyun 
24*4882a593Smuzhiyun /*  *********************************************************************
25*4882a593Smuzhiyun     *  Pull in the BCM1250's SCD since lots of stuff is the same.
26*4882a593Smuzhiyun     ********************************************************************* */
27*4882a593Smuzhiyun 
28*4882a593Smuzhiyun #include <asm/sibyte/sb1250_scd.h>
29*4882a593Smuzhiyun 
30*4882a593Smuzhiyun /*  *********************************************************************
31*4882a593Smuzhiyun     *  Some general notes:
32*4882a593Smuzhiyun     *
33*4882a593Smuzhiyun     *  This file is basically a "what's new" header file.  Since the
34*4882a593Smuzhiyun     *  BCM1250 and the new BCM1480 (and derivatives) share many common
35*4882a593Smuzhiyun     *  features, this file contains only what's new or changed from
36*4882a593Smuzhiyun     *  the 1250.  (above, you can see that we include the 1250 symbols
37*4882a593Smuzhiyun     *  to get the base functionality).
38*4882a593Smuzhiyun     *
39*4882a593Smuzhiyun     *  In software, be sure to use the correct symbols, particularly
40*4882a593Smuzhiyun     *  for blocks that are different between the two chip families.
41*4882a593Smuzhiyun     *  All BCM1480-specific symbols have _BCM1480_ in their names,
42*4882a593Smuzhiyun     *  and all BCM1250-specific and "base" functions that are common in
43*4882a593Smuzhiyun     *  both chips have no special names (this is for compatibility with
44*4882a593Smuzhiyun     *  older include files).  Therefore, if you're working with the
45*4882a593Smuzhiyun     *  SCD, which is very different on each chip, A_SCD_xxx implies
46*4882a593Smuzhiyun     *  the BCM1250 version and A_BCM1480_SCD_xxx implies the BCM1480
47*4882a593Smuzhiyun     *  version.
48*4882a593Smuzhiyun     ********************************************************************* */
49*4882a593Smuzhiyun 
50*4882a593Smuzhiyun /*  *********************************************************************
51*4882a593Smuzhiyun     *  System control/debug registers
52*4882a593Smuzhiyun     ********************************************************************* */
53*4882a593Smuzhiyun 
54*4882a593Smuzhiyun /*
55*4882a593Smuzhiyun  * System Identification and Revision Register (Table 12)
56*4882a593Smuzhiyun  * Register: SCD_SYSTEM_REVISION
57*4882a593Smuzhiyun  * This register is field compatible with the 1250.
58*4882a593Smuzhiyun  */
59*4882a593Smuzhiyun 
60*4882a593Smuzhiyun /*
61*4882a593Smuzhiyun  * New part definitions
62*4882a593Smuzhiyun  */
63*4882a593Smuzhiyun 
64*4882a593Smuzhiyun #define K_SYS_PART_BCM1480	    0x1406
65*4882a593Smuzhiyun #define K_SYS_PART_BCM1280	    0x1206
66*4882a593Smuzhiyun #define K_SYS_PART_BCM1455	    0x1407
67*4882a593Smuzhiyun #define K_SYS_PART_BCM1255	    0x1257
68*4882a593Smuzhiyun #define K_SYS_PART_BCM1158	    0x1156
69*4882a593Smuzhiyun 
70*4882a593Smuzhiyun /*
71*4882a593Smuzhiyun  * Manufacturing Information Register (Table 14)
72*4882a593Smuzhiyun  * Register: SCD_SYSTEM_MANUF
73*4882a593Smuzhiyun  */
74*4882a593Smuzhiyun 
75*4882a593Smuzhiyun /*
76*4882a593Smuzhiyun  * System Configuration Register (Table 15)
77*4882a593Smuzhiyun  * Register: SCD_SYSTEM_CFG
78*4882a593Smuzhiyun  * Entire register is different from 1250, all new constants below
79*4882a593Smuzhiyun  */
80*4882a593Smuzhiyun 
81*4882a593Smuzhiyun #define M_BCM1480_SYS_RESERVED0		    _SB_MAKEMASK1(0)
82*4882a593Smuzhiyun #define M_BCM1480_SYS_HT_MINRSTCNT	    _SB_MAKEMASK1(1)
83*4882a593Smuzhiyun #define M_BCM1480_SYS_RESERVED2		    _SB_MAKEMASK1(2)
84*4882a593Smuzhiyun #define M_BCM1480_SYS_RESERVED3		    _SB_MAKEMASK1(3)
85*4882a593Smuzhiyun #define M_BCM1480_SYS_RESERVED4		    _SB_MAKEMASK1(4)
86*4882a593Smuzhiyun #define M_BCM1480_SYS_IOB_DIV		    _SB_MAKEMASK1(5)
87*4882a593Smuzhiyun 
88*4882a593Smuzhiyun #define S_BCM1480_SYS_PLL_DIV		    _SB_MAKE64(6)
89*4882a593Smuzhiyun #define M_BCM1480_SYS_PLL_DIV		    _SB_MAKEMASK(5, S_BCM1480_SYS_PLL_DIV)
90*4882a593Smuzhiyun #define V_BCM1480_SYS_PLL_DIV(x)	    _SB_MAKEVALUE(x, S_BCM1480_SYS_PLL_DIV)
91*4882a593Smuzhiyun #define G_BCM1480_SYS_PLL_DIV(x)	    _SB_GETVALUE(x, S_BCM1480_SYS_PLL_DIV, M_BCM1480_SYS_PLL_DIV)
92*4882a593Smuzhiyun 
93*4882a593Smuzhiyun #define S_BCM1480_SYS_SW_DIV		    _SB_MAKE64(11)
94*4882a593Smuzhiyun #define M_BCM1480_SYS_SW_DIV		    _SB_MAKEMASK(5, S_BCM1480_SYS_SW_DIV)
95*4882a593Smuzhiyun #define V_BCM1480_SYS_SW_DIV(x)		    _SB_MAKEVALUE(x, S_BCM1480_SYS_SW_DIV)
96*4882a593Smuzhiyun #define G_BCM1480_SYS_SW_DIV(x)		    _SB_GETVALUE(x, S_BCM1480_SYS_SW_DIV, M_BCM1480_SYS_SW_DIV)
97*4882a593Smuzhiyun 
98*4882a593Smuzhiyun #define M_BCM1480_SYS_PCMCIA_ENABLE	    _SB_MAKEMASK1(16)
99*4882a593Smuzhiyun #define M_BCM1480_SYS_DUART1_ENABLE	    _SB_MAKEMASK1(17)
100*4882a593Smuzhiyun 
101*4882a593Smuzhiyun #define S_BCM1480_SYS_BOOT_MODE		    _SB_MAKE64(18)
102*4882a593Smuzhiyun #define M_BCM1480_SYS_BOOT_MODE		    _SB_MAKEMASK(2, S_BCM1480_SYS_BOOT_MODE)
103*4882a593Smuzhiyun #define V_BCM1480_SYS_BOOT_MODE(x)	    _SB_MAKEVALUE(x, S_BCM1480_SYS_BOOT_MODE)
104*4882a593Smuzhiyun #define G_BCM1480_SYS_BOOT_MODE(x)	    _SB_GETVALUE(x, S_BCM1480_SYS_BOOT_MODE, M_BCM1480_SYS_BOOT_MODE)
105*4882a593Smuzhiyun #define K_BCM1480_SYS_BOOT_MODE_ROM32	    0
106*4882a593Smuzhiyun #define K_BCM1480_SYS_BOOT_MODE_ROM8	    1
107*4882a593Smuzhiyun #define K_BCM1480_SYS_BOOT_MODE_SMBUS_SMALL 2
108*4882a593Smuzhiyun #define K_BCM1480_SYS_BOOT_MODE_SMBUS_BIG   3
109*4882a593Smuzhiyun #define M_BCM1480_SYS_BOOT_MODE_SMBUS	    _SB_MAKEMASK1(19)
110*4882a593Smuzhiyun 
111*4882a593Smuzhiyun #define M_BCM1480_SYS_PCI_HOST		    _SB_MAKEMASK1(20)
112*4882a593Smuzhiyun #define M_BCM1480_SYS_PCI_ARBITER	    _SB_MAKEMASK1(21)
113*4882a593Smuzhiyun #define M_BCM1480_SYS_BIG_ENDIAN	    _SB_MAKEMASK1(22)
114*4882a593Smuzhiyun #define M_BCM1480_SYS_GENCLK_EN		    _SB_MAKEMASK1(23)
115*4882a593Smuzhiyun #define M_BCM1480_SYS_GEN_PARITY_EN	    _SB_MAKEMASK1(24)
116*4882a593Smuzhiyun #define M_BCM1480_SYS_RESERVED25	    _SB_MAKEMASK1(25)
117*4882a593Smuzhiyun 
118*4882a593Smuzhiyun #define S_BCM1480_SYS_CONFIG		    26
119*4882a593Smuzhiyun #define M_BCM1480_SYS_CONFIG		    _SB_MAKEMASK(6, S_BCM1480_SYS_CONFIG)
120*4882a593Smuzhiyun #define V_BCM1480_SYS_CONFIG(x)		    _SB_MAKEVALUE(x, S_BCM1480_SYS_CONFIG)
121*4882a593Smuzhiyun #define G_BCM1480_SYS_CONFIG(x)		    _SB_GETVALUE(x, S_BCM1480_SYS_CONFIG, M_BCM1480_SYS_CONFIG)
122*4882a593Smuzhiyun 
123*4882a593Smuzhiyun #define M_BCM1480_SYS_RESERVED32	    _SB_MAKEMASK(32, 15)
124*4882a593Smuzhiyun 
125*4882a593Smuzhiyun #define S_BCM1480_SYS_NODEID		    47
126*4882a593Smuzhiyun #define M_BCM1480_SYS_NODEID		    _SB_MAKEMASK(4, S_BCM1480_SYS_NODEID)
127*4882a593Smuzhiyun #define V_BCM1480_SYS_NODEID(x)		    _SB_MAKEVALUE(x, S_BCM1480_SYS_NODEID)
128*4882a593Smuzhiyun #define G_BCM1480_SYS_NODEID(x)		    _SB_GETVALUE(x, S_BCM1480_SYS_NODEID, M_BCM1480_SYS_NODEID)
129*4882a593Smuzhiyun 
130*4882a593Smuzhiyun #define M_BCM1480_SYS_CCNUMA_EN		    _SB_MAKEMASK1(51)
131*4882a593Smuzhiyun #define M_BCM1480_SYS_CPU_RESET_0	    _SB_MAKEMASK1(52)
132*4882a593Smuzhiyun #define M_BCM1480_SYS_CPU_RESET_1	    _SB_MAKEMASK1(53)
133*4882a593Smuzhiyun #define M_BCM1480_SYS_CPU_RESET_2	    _SB_MAKEMASK1(54)
134*4882a593Smuzhiyun #define M_BCM1480_SYS_CPU_RESET_3	    _SB_MAKEMASK1(55)
135*4882a593Smuzhiyun #define S_BCM1480_SYS_DISABLECPU0	    56
136*4882a593Smuzhiyun #define M_BCM1480_SYS_DISABLECPU0	    _SB_MAKEMASK1(S_BCM1480_SYS_DISABLECPU0)
137*4882a593Smuzhiyun #define S_BCM1480_SYS_DISABLECPU1	    57
138*4882a593Smuzhiyun #define M_BCM1480_SYS_DISABLECPU1	    _SB_MAKEMASK1(S_BCM1480_SYS_DISABLECPU1)
139*4882a593Smuzhiyun #define S_BCM1480_SYS_DISABLECPU2	    58
140*4882a593Smuzhiyun #define M_BCM1480_SYS_DISABLECPU2	    _SB_MAKEMASK1(S_BCM1480_SYS_DISABLECPU2)
141*4882a593Smuzhiyun #define S_BCM1480_SYS_DISABLECPU3	    59
142*4882a593Smuzhiyun #define M_BCM1480_SYS_DISABLECPU3	    _SB_MAKEMASK1(S_BCM1480_SYS_DISABLECPU3)
143*4882a593Smuzhiyun 
144*4882a593Smuzhiyun #define M_BCM1480_SYS_SB_SOFTRES	    _SB_MAKEMASK1(60)
145*4882a593Smuzhiyun #define M_BCM1480_SYS_EXT_RESET		    _SB_MAKEMASK1(61)
146*4882a593Smuzhiyun #define M_BCM1480_SYS_SYSTEM_RESET	    _SB_MAKEMASK1(62)
147*4882a593Smuzhiyun #define M_BCM1480_SYS_SW_FLAG		    _SB_MAKEMASK1(63)
148*4882a593Smuzhiyun 
149*4882a593Smuzhiyun /*
150*4882a593Smuzhiyun  * Scratch Register (Table 16)
151*4882a593Smuzhiyun  * Register: SCD_SYSTEM_SCRATCH
152*4882a593Smuzhiyun  * Same as BCM1250
153*4882a593Smuzhiyun  */
154*4882a593Smuzhiyun 
155*4882a593Smuzhiyun 
156*4882a593Smuzhiyun /*
157*4882a593Smuzhiyun  * Mailbox Registers (Table 17)
158*4882a593Smuzhiyun  * Registers: SCD_MBOX_{0,1}_CPU_x
159*4882a593Smuzhiyun  * Same as BCM1250
160*4882a593Smuzhiyun  */
161*4882a593Smuzhiyun 
162*4882a593Smuzhiyun 
163*4882a593Smuzhiyun /*
164*4882a593Smuzhiyun  * See bcm1480_int.h for interrupt mapper registers.
165*4882a593Smuzhiyun  */
166*4882a593Smuzhiyun 
167*4882a593Smuzhiyun 
168*4882a593Smuzhiyun /*
169*4882a593Smuzhiyun  * Watchdog Timer Initial Count Registers (Table 23)
170*4882a593Smuzhiyun  * Registers: SCD_WDOG_INIT_CNT_x
171*4882a593Smuzhiyun  *
172*4882a593Smuzhiyun  * The watchdogs are almost the same as the 1250, except
173*4882a593Smuzhiyun  * the configuration register has more bits to control the
174*4882a593Smuzhiyun  * other CPUs.
175*4882a593Smuzhiyun  */
176*4882a593Smuzhiyun 
177*4882a593Smuzhiyun 
178*4882a593Smuzhiyun /*
179*4882a593Smuzhiyun  * Watchdog Timer Configuration Registers (Table 25)
180*4882a593Smuzhiyun  * Registers: SCD_WDOG_CFG_x
181*4882a593Smuzhiyun  */
182*4882a593Smuzhiyun 
183*4882a593Smuzhiyun #define M_BCM1480_SCD_WDOG_ENABLE	    _SB_MAKEMASK1(0)
184*4882a593Smuzhiyun 
185*4882a593Smuzhiyun #define S_BCM1480_SCD_WDOG_RESET_TYPE	    2
186*4882a593Smuzhiyun #define M_BCM1480_SCD_WDOG_RESET_TYPE	    _SB_MAKEMASK(5, S_BCM1480_SCD_WDOG_RESET_TYPE)
187*4882a593Smuzhiyun #define V_BCM1480_SCD_WDOG_RESET_TYPE(x)    _SB_MAKEVALUE(x, S_BCM1480_SCD_WDOG_RESET_TYPE)
188*4882a593Smuzhiyun #define G_BCM1480_SCD_WDOG_RESET_TYPE(x)    _SB_GETVALUE(x, S_BCM1480_SCD_WDOG_RESET_TYPE, M_BCM1480_SCD_WDOG_RESET_TYPE)
189*4882a593Smuzhiyun 
190*4882a593Smuzhiyun #define K_BCM1480_SCD_WDOG_RESET_FULL	    0	/* actually, (x & 1) == 0  */
191*4882a593Smuzhiyun #define K_BCM1480_SCD_WDOG_RESET_SOFT	    1
192*4882a593Smuzhiyun #define K_BCM1480_SCD_WDOG_RESET_CPU0	    3
193*4882a593Smuzhiyun #define K_BCM1480_SCD_WDOG_RESET_CPU1	    5
194*4882a593Smuzhiyun #define K_BCM1480_SCD_WDOG_RESET_CPU2	    9
195*4882a593Smuzhiyun #define K_BCM1480_SCD_WDOG_RESET_CPU3	    17
196*4882a593Smuzhiyun #define K_BCM1480_SCD_WDOG_RESET_ALL_CPUS   31
197*4882a593Smuzhiyun 
198*4882a593Smuzhiyun 
199*4882a593Smuzhiyun #define M_BCM1480_SCD_WDOG_HAS_RESET	    _SB_MAKEMASK1(8)
200*4882a593Smuzhiyun 
201*4882a593Smuzhiyun /*
202*4882a593Smuzhiyun  * General Timer Initial Count Registers (Table 26)
203*4882a593Smuzhiyun  * Registers: SCD_TIMER_INIT_x
204*4882a593Smuzhiyun  *
205*4882a593Smuzhiyun  * The timer registers are the same as the BCM1250
206*4882a593Smuzhiyun  */
207*4882a593Smuzhiyun 
208*4882a593Smuzhiyun 
209*4882a593Smuzhiyun /*
210*4882a593Smuzhiyun  * ZBbus Count Register (Table 29)
211*4882a593Smuzhiyun  * Register: ZBBUS_CYCLE_COUNT
212*4882a593Smuzhiyun  *
213*4882a593Smuzhiyun  * Same as BCM1250
214*4882a593Smuzhiyun  */
215*4882a593Smuzhiyun 
216*4882a593Smuzhiyun /*
217*4882a593Smuzhiyun  * ZBbus Compare Registers (Table 30)
218*4882a593Smuzhiyun  * Registers: ZBBUS_CYCLE_CPx
219*4882a593Smuzhiyun  *
220*4882a593Smuzhiyun  * Same as BCM1250
221*4882a593Smuzhiyun  */
222*4882a593Smuzhiyun 
223*4882a593Smuzhiyun 
224*4882a593Smuzhiyun /*
225*4882a593Smuzhiyun  * System Performance Counter Configuration Register (Table 31)
226*4882a593Smuzhiyun  * Register: PERF_CNT_CFG_0
227*4882a593Smuzhiyun  *
228*4882a593Smuzhiyun  * SPC_CFG_SRC[0-3] is the same as the 1250.
229*4882a593Smuzhiyun  * SPC_CFG_SRC[4-7] only exist on the 1480
230*4882a593Smuzhiyun  * The clear/enable bits are in different locations on the 1250 and 1480.
231*4882a593Smuzhiyun  */
232*4882a593Smuzhiyun 
233*4882a593Smuzhiyun #define S_SPC_CFG_SRC4		    32
234*4882a593Smuzhiyun #define M_SPC_CFG_SRC4		    _SB_MAKEMASK(8, S_SPC_CFG_SRC4)
235*4882a593Smuzhiyun #define V_SPC_CFG_SRC4(x)	    _SB_MAKEVALUE(x, S_SPC_CFG_SRC4)
236*4882a593Smuzhiyun #define G_SPC_CFG_SRC4(x)	    _SB_GETVALUE(x, S_SPC_CFG_SRC4, M_SPC_CFG_SRC4)
237*4882a593Smuzhiyun 
238*4882a593Smuzhiyun #define S_SPC_CFG_SRC5		    40
239*4882a593Smuzhiyun #define M_SPC_CFG_SRC5		    _SB_MAKEMASK(8, S_SPC_CFG_SRC5)
240*4882a593Smuzhiyun #define V_SPC_CFG_SRC5(x)	    _SB_MAKEVALUE(x, S_SPC_CFG_SRC5)
241*4882a593Smuzhiyun #define G_SPC_CFG_SRC5(x)	    _SB_GETVALUE(x, S_SPC_CFG_SRC5, M_SPC_CFG_SRC5)
242*4882a593Smuzhiyun 
243*4882a593Smuzhiyun #define S_SPC_CFG_SRC6		    48
244*4882a593Smuzhiyun #define M_SPC_CFG_SRC6		    _SB_MAKEMASK(8, S_SPC_CFG_SRC6)
245*4882a593Smuzhiyun #define V_SPC_CFG_SRC6(x)	    _SB_MAKEVALUE(x, S_SPC_CFG_SRC6)
246*4882a593Smuzhiyun #define G_SPC_CFG_SRC6(x)	    _SB_GETVALUE(x, S_SPC_CFG_SRC6, M_SPC_CFG_SRC6)
247*4882a593Smuzhiyun 
248*4882a593Smuzhiyun #define S_SPC_CFG_SRC7		    56
249*4882a593Smuzhiyun #define M_SPC_CFG_SRC7		    _SB_MAKEMASK(8, S_SPC_CFG_SRC7)
250*4882a593Smuzhiyun #define V_SPC_CFG_SRC7(x)	    _SB_MAKEVALUE(x, S_SPC_CFG_SRC7)
251*4882a593Smuzhiyun #define G_SPC_CFG_SRC7(x)	    _SB_GETVALUE(x, S_SPC_CFG_SRC7, M_SPC_CFG_SRC7)
252*4882a593Smuzhiyun 
253*4882a593Smuzhiyun /*
254*4882a593Smuzhiyun  * System Performance Counter Control Register (Table 32)
255*4882a593Smuzhiyun  * Register: PERF_CNT_CFG_1
256*4882a593Smuzhiyun  * BCM1480 specific
257*4882a593Smuzhiyun  */
258*4882a593Smuzhiyun #define M_BCM1480_SPC_CFG_CLEAR	    _SB_MAKEMASK1(0)
259*4882a593Smuzhiyun #define M_BCM1480_SPC_CFG_ENABLE    _SB_MAKEMASK1(1)
260*4882a593Smuzhiyun #if SIBYTE_HDR_FEATURE_CHIP(1480)
261*4882a593Smuzhiyun #define M_SPC_CFG_CLEAR			M_BCM1480_SPC_CFG_CLEAR
262*4882a593Smuzhiyun #define M_SPC_CFG_ENABLE		M_BCM1480_SPC_CFG_ENABLE
263*4882a593Smuzhiyun #endif
264*4882a593Smuzhiyun 
265*4882a593Smuzhiyun /*
266*4882a593Smuzhiyun  * System Performance Counters (Table 33)
267*4882a593Smuzhiyun  * Registers: PERF_CNT_x
268*4882a593Smuzhiyun  */
269*4882a593Smuzhiyun 
270*4882a593Smuzhiyun #define S_BCM1480_SPC_CNT_COUNT		    0
271*4882a593Smuzhiyun #define M_BCM1480_SPC_CNT_COUNT		    _SB_MAKEMASK(40, S_BCM1480_SPC_CNT_COUNT)
272*4882a593Smuzhiyun #define V_BCM1480_SPC_CNT_COUNT(x)	    _SB_MAKEVALUE(x, S_BCM1480_SPC_CNT_COUNT)
273*4882a593Smuzhiyun #define G_BCM1480_SPC_CNT_COUNT(x)	    _SB_GETVALUE(x, S_BCM1480_SPC_CNT_COUNT, M_BCM1480_SPC_CNT_COUNT)
274*4882a593Smuzhiyun 
275*4882a593Smuzhiyun #define M_BCM1480_SPC_CNT_OFLOW		    _SB_MAKEMASK1(40)
276*4882a593Smuzhiyun 
277*4882a593Smuzhiyun 
278*4882a593Smuzhiyun /*
279*4882a593Smuzhiyun  * Bus Watcher Error Status Register (Tables 36, 37)
280*4882a593Smuzhiyun  * Registers: BUS_ERR_STATUS, BUS_ERR_STATUS_DEBUG
281*4882a593Smuzhiyun  * Same as BCM1250.
282*4882a593Smuzhiyun  */
283*4882a593Smuzhiyun 
284*4882a593Smuzhiyun /*
285*4882a593Smuzhiyun  * Bus Watcher Error Data Registers (Table 38)
286*4882a593Smuzhiyun  * Registers: BUS_ERR_DATA_x
287*4882a593Smuzhiyun  * Same as BCM1250.
288*4882a593Smuzhiyun  */
289*4882a593Smuzhiyun 
290*4882a593Smuzhiyun /*
291*4882a593Smuzhiyun  * Bus Watcher L2 ECC Counter Register (Table 39)
292*4882a593Smuzhiyun  * Register: BUS_L2_ERRORS
293*4882a593Smuzhiyun  * Same as BCM1250.
294*4882a593Smuzhiyun  */
295*4882a593Smuzhiyun 
296*4882a593Smuzhiyun 
297*4882a593Smuzhiyun /*
298*4882a593Smuzhiyun  * Bus Watcher Memory and I/O Error Counter Register (Table 40)
299*4882a593Smuzhiyun  * Register: BUS_MEM_IO_ERRORS
300*4882a593Smuzhiyun  * Same as BCM1250.
301*4882a593Smuzhiyun  */
302*4882a593Smuzhiyun 
303*4882a593Smuzhiyun 
304*4882a593Smuzhiyun /*
305*4882a593Smuzhiyun  * Address Trap Registers
306*4882a593Smuzhiyun  *
307*4882a593Smuzhiyun  * Register layout same as BCM1250, almost.  The bus agents
308*4882a593Smuzhiyun  * are different, and the address trap configuration bits are
309*4882a593Smuzhiyun  * slightly different.
310*4882a593Smuzhiyun  */
311*4882a593Smuzhiyun 
312*4882a593Smuzhiyun #define M_BCM1480_ATRAP_INDEX		  _SB_MAKEMASK(4, 0)
313*4882a593Smuzhiyun #define M_BCM1480_ATRAP_ADDRESS		  _SB_MAKEMASK(40, 0)
314*4882a593Smuzhiyun 
315*4882a593Smuzhiyun #define S_BCM1480_ATRAP_CFG_CNT		   0
316*4882a593Smuzhiyun #define M_BCM1480_ATRAP_CFG_CNT		   _SB_MAKEMASK(3, S_BCM1480_ATRAP_CFG_CNT)
317*4882a593Smuzhiyun #define V_BCM1480_ATRAP_CFG_CNT(x)	   _SB_MAKEVALUE(x, S_BCM1480_ATRAP_CFG_CNT)
318*4882a593Smuzhiyun #define G_BCM1480_ATRAP_CFG_CNT(x)	   _SB_GETVALUE(x, S_BCM1480_ATRAP_CFG_CNT, M_BCM1480_ATRAP_CFG_CNT)
319*4882a593Smuzhiyun 
320*4882a593Smuzhiyun #define M_BCM1480_ATRAP_CFG_WRITE	   _SB_MAKEMASK1(3)
321*4882a593Smuzhiyun #define M_BCM1480_ATRAP_CFG_ALL		   _SB_MAKEMASK1(4)
322*4882a593Smuzhiyun #define M_BCM1480_ATRAP_CFG_INV		   _SB_MAKEMASK1(5)
323*4882a593Smuzhiyun #define M_BCM1480_ATRAP_CFG_USESRC	   _SB_MAKEMASK1(6)
324*4882a593Smuzhiyun #define M_BCM1480_ATRAP_CFG_SRCINV	   _SB_MAKEMASK1(7)
325*4882a593Smuzhiyun 
326*4882a593Smuzhiyun #define S_BCM1480_ATRAP_CFG_AGENTID	8
327*4882a593Smuzhiyun #define M_BCM1480_ATRAP_CFG_AGENTID	_SB_MAKEMASK(4, S_BCM1480_ATRAP_CFG_AGENTID)
328*4882a593Smuzhiyun #define V_BCM1480_ATRAP_CFG_AGENTID(x)	_SB_MAKEVALUE(x, S_BCM1480_ATRAP_CFG_AGENTID)
329*4882a593Smuzhiyun #define G_BCM1480_ATRAP_CFG_AGENTID(x)	_SB_GETVALUE(x, S_BCM1480_ATRAP_CFG_AGENTID, M_BCM1480_ATRAP_CFG_AGENTID)
330*4882a593Smuzhiyun 
331*4882a593Smuzhiyun 
332*4882a593Smuzhiyun #define K_BCM1480_BUS_AGENT_CPU0	    0
333*4882a593Smuzhiyun #define K_BCM1480_BUS_AGENT_CPU1	    1
334*4882a593Smuzhiyun #define K_BCM1480_BUS_AGENT_NC		    2
335*4882a593Smuzhiyun #define K_BCM1480_BUS_AGENT_IOB		    3
336*4882a593Smuzhiyun #define K_BCM1480_BUS_AGENT_SCD		    4
337*4882a593Smuzhiyun #define K_BCM1480_BUS_AGENT_L2C		    6
338*4882a593Smuzhiyun #define K_BCM1480_BUS_AGENT_MC		    7
339*4882a593Smuzhiyun #define K_BCM1480_BUS_AGENT_CPU2	    8
340*4882a593Smuzhiyun #define K_BCM1480_BUS_AGENT_CPU3	    9
341*4882a593Smuzhiyun #define K_BCM1480_BUS_AGENT_PM		    10
342*4882a593Smuzhiyun 
343*4882a593Smuzhiyun #define S_BCM1480_ATRAP_CFG_CATTR	    12
344*4882a593Smuzhiyun #define M_BCM1480_ATRAP_CFG_CATTR	    _SB_MAKEMASK(2, S_BCM1480_ATRAP_CFG_CATTR)
345*4882a593Smuzhiyun #define V_BCM1480_ATRAP_CFG_CATTR(x)	    _SB_MAKEVALUE(x, S_BCM1480_ATRAP_CFG_CATTR)
346*4882a593Smuzhiyun #define G_BCM1480_ATRAP_CFG_CATTR(x)	    _SB_GETVALUE(x, S_BCM1480_ATRAP_CFG_CATTR, M_BCM1480_ATRAP_CFG_CATTR)
347*4882a593Smuzhiyun 
348*4882a593Smuzhiyun #define K_BCM1480_ATRAP_CFG_CATTR_IGNORE    0
349*4882a593Smuzhiyun #define K_BCM1480_ATRAP_CFG_CATTR_UNC	    1
350*4882a593Smuzhiyun #define K_BCM1480_ATRAP_CFG_CATTR_NONCOH    2
351*4882a593Smuzhiyun #define K_BCM1480_ATRAP_CFG_CATTR_COHERENT  3
352*4882a593Smuzhiyun 
353*4882a593Smuzhiyun #define M_BCM1480_ATRAP_CFG_CATTRINV	    _SB_MAKEMASK1(14)
354*4882a593Smuzhiyun 
355*4882a593Smuzhiyun 
356*4882a593Smuzhiyun /*
357*4882a593Smuzhiyun  * Trace Event Registers (Table 47)
358*4882a593Smuzhiyun  * Same as BCM1250.
359*4882a593Smuzhiyun  */
360*4882a593Smuzhiyun 
361*4882a593Smuzhiyun /*
362*4882a593Smuzhiyun  * Trace Sequence Control Registers (Table 48)
363*4882a593Smuzhiyun  * Registers: TRACE_SEQUENCE_x
364*4882a593Smuzhiyun  *
365*4882a593Smuzhiyun  * Same as BCM1250 except for two new fields.
366*4882a593Smuzhiyun  */
367*4882a593Smuzhiyun 
368*4882a593Smuzhiyun 
369*4882a593Smuzhiyun #define M_BCM1480_SCD_TRSEQ_TID_MATCH_EN    _SB_MAKEMASK1(25)
370*4882a593Smuzhiyun 
371*4882a593Smuzhiyun #define S_BCM1480_SCD_TRSEQ_SWFUNC	    26
372*4882a593Smuzhiyun #define M_BCM1480_SCD_TRSEQ_SWFUNC	    _SB_MAKEMASK(2, S_BCM1480_SCD_TRSEQ_SWFUNC)
373*4882a593Smuzhiyun #define V_BCM1480_SCD_TRSEQ_SWFUNC(x)	    _SB_MAKEVALUE(x, S_BCM1480_SCD_TRSEQ_SWFUNC)
374*4882a593Smuzhiyun #define G_BCM1480_SCD_TRSEQ_SWFUNC(x)	    _SB_GETVALUE(x, S_BCM1480_SCD_TRSEQ_SWFUNC, M_BCM1480_SCD_TRSEQ_SWFUNC)
375*4882a593Smuzhiyun 
376*4882a593Smuzhiyun /*
377*4882a593Smuzhiyun  * Trace Control Register (Table 49)
378*4882a593Smuzhiyun  * Register: TRACE_CFG
379*4882a593Smuzhiyun  *
380*4882a593Smuzhiyun  * BCM1480 changes to this register (other than location of the CUR_ADDR field)
381*4882a593Smuzhiyun  * are defined below.
382*4882a593Smuzhiyun  */
383*4882a593Smuzhiyun 
384*4882a593Smuzhiyun #define S_BCM1480_SCD_TRACE_CFG_MODE	    16
385*4882a593Smuzhiyun #define M_BCM1480_SCD_TRACE_CFG_MODE	    _SB_MAKEMASK(2, S_BCM1480_SCD_TRACE_CFG_MODE)
386*4882a593Smuzhiyun #define V_BCM1480_SCD_TRACE_CFG_MODE(x)	    _SB_MAKEVALUE(x, S_BCM1480_SCD_TRACE_CFG_MODE)
387*4882a593Smuzhiyun #define G_BCM1480_SCD_TRACE_CFG_MODE(x)	    _SB_GETVALUE(x, S_BCM1480_SCD_TRACE_CFG_MODE, M_BCM1480_SCD_TRACE_CFG_MODE)
388*4882a593Smuzhiyun 
389*4882a593Smuzhiyun #define K_BCM1480_SCD_TRACE_CFG_MODE_BLOCKERS	0
390*4882a593Smuzhiyun #define K_BCM1480_SCD_TRACE_CFG_MODE_BYTEEN_INT 1
391*4882a593Smuzhiyun #define K_BCM1480_SCD_TRACE_CFG_MODE_FLOW_ID	2
392*4882a593Smuzhiyun 
393*4882a593Smuzhiyun #endif /* _BCM1480_SCD_H */
394