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