1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0-or-later */ 2*4882a593Smuzhiyun /* ********************************************************************* 3*4882a593Smuzhiyun * SB1250 Board Support Package 4*4882a593Smuzhiyun * 5*4882a593Smuzhiyun * L2 Cache constants and macros File: sb1250_l2c.h 6*4882a593Smuzhiyun * 7*4882a593Smuzhiyun * This module contains constants useful for manipulating the 8*4882a593Smuzhiyun * level 2 cache. 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_L2C_H 21*4882a593Smuzhiyun #define _SB1250_L2C_H 22*4882a593Smuzhiyun 23*4882a593Smuzhiyun #include <asm/sibyte/sb1250_defs.h> 24*4882a593Smuzhiyun 25*4882a593Smuzhiyun /* 26*4882a593Smuzhiyun * Level 2 Cache Tag register (Table 5-3) 27*4882a593Smuzhiyun */ 28*4882a593Smuzhiyun 29*4882a593Smuzhiyun #define S_L2C_TAG_MBZ 0 30*4882a593Smuzhiyun #define M_L2C_TAG_MBZ _SB_MAKEMASK(5, S_L2C_TAG_MBZ) 31*4882a593Smuzhiyun 32*4882a593Smuzhiyun #define S_L2C_TAG_INDEX 5 33*4882a593Smuzhiyun #define M_L2C_TAG_INDEX _SB_MAKEMASK(12, S_L2C_TAG_INDEX) 34*4882a593Smuzhiyun #define V_L2C_TAG_INDEX(x) _SB_MAKEVALUE(x, S_L2C_TAG_INDEX) 35*4882a593Smuzhiyun #define G_L2C_TAG_INDEX(x) _SB_GETVALUE(x, S_L2C_TAG_INDEX, M_L2C_TAG_INDEX) 36*4882a593Smuzhiyun 37*4882a593Smuzhiyun #define S_L2C_TAG_TAG 17 38*4882a593Smuzhiyun #define M_L2C_TAG_TAG _SB_MAKEMASK(23, S_L2C_TAG_TAG) 39*4882a593Smuzhiyun #define V_L2C_TAG_TAG(x) _SB_MAKEVALUE(x, S_L2C_TAG_TAG) 40*4882a593Smuzhiyun #define G_L2C_TAG_TAG(x) _SB_GETVALUE(x, S_L2C_TAG_TAG, M_L2C_TAG_TAG) 41*4882a593Smuzhiyun 42*4882a593Smuzhiyun #define S_L2C_TAG_ECC 40 43*4882a593Smuzhiyun #define M_L2C_TAG_ECC _SB_MAKEMASK(6, S_L2C_TAG_ECC) 44*4882a593Smuzhiyun #define V_L2C_TAG_ECC(x) _SB_MAKEVALUE(x, S_L2C_TAG_ECC) 45*4882a593Smuzhiyun #define G_L2C_TAG_ECC(x) _SB_GETVALUE(x, S_L2C_TAG_ECC, M_L2C_TAG_ECC) 46*4882a593Smuzhiyun 47*4882a593Smuzhiyun #define S_L2C_TAG_WAY 46 48*4882a593Smuzhiyun #define M_L2C_TAG_WAY _SB_MAKEMASK(2, S_L2C_TAG_WAY) 49*4882a593Smuzhiyun #define V_L2C_TAG_WAY(x) _SB_MAKEVALUE(x, S_L2C_TAG_WAY) 50*4882a593Smuzhiyun #define G_L2C_TAG_WAY(x) _SB_GETVALUE(x, S_L2C_TAG_WAY, M_L2C_TAG_WAY) 51*4882a593Smuzhiyun 52*4882a593Smuzhiyun #define M_L2C_TAG_DIRTY _SB_MAKEMASK1(48) 53*4882a593Smuzhiyun #define M_L2C_TAG_VALID _SB_MAKEMASK1(49) 54*4882a593Smuzhiyun 55*4882a593Smuzhiyun /* 56*4882a593Smuzhiyun * Format of level 2 cache management address (table 5-2) 57*4882a593Smuzhiyun */ 58*4882a593Smuzhiyun 59*4882a593Smuzhiyun #define S_L2C_MGMT_INDEX 5 60*4882a593Smuzhiyun #define M_L2C_MGMT_INDEX _SB_MAKEMASK(12, S_L2C_MGMT_INDEX) 61*4882a593Smuzhiyun #define V_L2C_MGMT_INDEX(x) _SB_MAKEVALUE(x, S_L2C_MGMT_INDEX) 62*4882a593Smuzhiyun #define G_L2C_MGMT_INDEX(x) _SB_GETVALUE(x, S_L2C_MGMT_INDEX, M_L2C_MGMT_INDEX) 63*4882a593Smuzhiyun 64*4882a593Smuzhiyun #define S_L2C_MGMT_QUADRANT 15 65*4882a593Smuzhiyun #define M_L2C_MGMT_QUADRANT _SB_MAKEMASK(2, S_L2C_MGMT_QUADRANT) 66*4882a593Smuzhiyun #define V_L2C_MGMT_QUADRANT(x) _SB_MAKEVALUE(x, S_L2C_MGMT_QUADRANT) 67*4882a593Smuzhiyun #define G_L2C_MGMT_QUADRANT(x) _SB_GETVALUE(x, S_L2C_MGMT_QUADRANT, M_L2C_MGMT_QUADRANT) 68*4882a593Smuzhiyun 69*4882a593Smuzhiyun #define S_L2C_MGMT_HALF 16 70*4882a593Smuzhiyun #define M_L2C_MGMT_HALF _SB_MAKEMASK(1, S_L2C_MGMT_HALF) 71*4882a593Smuzhiyun 72*4882a593Smuzhiyun #define S_L2C_MGMT_WAY 17 73*4882a593Smuzhiyun #define M_L2C_MGMT_WAY _SB_MAKEMASK(2, S_L2C_MGMT_WAY) 74*4882a593Smuzhiyun #define V_L2C_MGMT_WAY(x) _SB_MAKEVALUE(x, S_L2C_MGMT_WAY) 75*4882a593Smuzhiyun #define G_L2C_MGMT_WAY(x) _SB_GETVALUE(x, S_L2C_MGMT_WAY, M_L2C_MGMT_WAY) 76*4882a593Smuzhiyun 77*4882a593Smuzhiyun #define S_L2C_MGMT_ECC_DIAG 21 78*4882a593Smuzhiyun #define M_L2C_MGMT_ECC_DIAG _SB_MAKEMASK(2, S_L2C_MGMT_ECC_DIAG) 79*4882a593Smuzhiyun #define V_L2C_MGMT_ECC_DIAG(x) _SB_MAKEVALUE(x, S_L2C_MGMT_ECC_DIAG) 80*4882a593Smuzhiyun #define G_L2C_MGMT_ECC_DIAG(x) _SB_GETVALUE(x, S_L2C_MGMT_ECC_DIAG, M_L2C_MGMT_ECC_DIAG) 81*4882a593Smuzhiyun 82*4882a593Smuzhiyun #define S_L2C_MGMT_TAG 23 83*4882a593Smuzhiyun #define M_L2C_MGMT_TAG _SB_MAKEMASK(4, S_L2C_MGMT_TAG) 84*4882a593Smuzhiyun #define V_L2C_MGMT_TAG(x) _SB_MAKEVALUE(x, S_L2C_MGMT_TAG) 85*4882a593Smuzhiyun #define G_L2C_MGMT_TAG(x) _SB_GETVALUE(x, S_L2C_MGMT_TAG, M_L2C_MGMT_TAG) 86*4882a593Smuzhiyun 87*4882a593Smuzhiyun #define M_L2C_MGMT_DIRTY _SB_MAKEMASK1(19) 88*4882a593Smuzhiyun #define M_L2C_MGMT_VALID _SB_MAKEMASK1(20) 89*4882a593Smuzhiyun 90*4882a593Smuzhiyun #define A_L2C_MGMT_TAG_BASE 0x00D0000000 91*4882a593Smuzhiyun 92*4882a593Smuzhiyun #define L2C_ENTRIES_PER_WAY 4096 93*4882a593Smuzhiyun #define L2C_NUM_WAYS 4 94*4882a593Smuzhiyun 95*4882a593Smuzhiyun 96*4882a593Smuzhiyun #if SIBYTE_HDR_FEATURE(1250, PASS3) || SIBYTE_HDR_FEATURE(112x, PASS1) 97*4882a593Smuzhiyun /* 98*4882a593Smuzhiyun * L2 Read Misc. register (A_L2_READ_MISC) 99*4882a593Smuzhiyun */ 100*4882a593Smuzhiyun #define S_L2C_MISC_NO_WAY 10 101*4882a593Smuzhiyun #define M_L2C_MISC_NO_WAY _SB_MAKEMASK(4, S_L2C_MISC_NO_WAY) 102*4882a593Smuzhiyun #define V_L2C_MISC_NO_WAY(x) _SB_MAKEVALUE(x, S_L2C_MISC_NO_WAY) 103*4882a593Smuzhiyun #define G_L2C_MISC_NO_WAY(x) _SB_GETVALUE(x, S_L2C_MISC_NO_WAY, M_L2C_MISC_NO_WAY) 104*4882a593Smuzhiyun 105*4882a593Smuzhiyun #define M_L2C_MISC_ECC_CLEANUP_DIS _SB_MAKEMASK1(9) 106*4882a593Smuzhiyun #define M_L2C_MISC_MC_PRIO_LOW _SB_MAKEMASK1(8) 107*4882a593Smuzhiyun #define M_L2C_MISC_SOFT_DISABLE_T _SB_MAKEMASK1(7) 108*4882a593Smuzhiyun #define M_L2C_MISC_SOFT_DISABLE_B _SB_MAKEMASK1(6) 109*4882a593Smuzhiyun #define M_L2C_MISC_SOFT_DISABLE_R _SB_MAKEMASK1(5) 110*4882a593Smuzhiyun #define M_L2C_MISC_SOFT_DISABLE_L _SB_MAKEMASK1(4) 111*4882a593Smuzhiyun #define M_L2C_MISC_SCACHE_DISABLE_T _SB_MAKEMASK1(3) 112*4882a593Smuzhiyun #define M_L2C_MISC_SCACHE_DISABLE_B _SB_MAKEMASK1(2) 113*4882a593Smuzhiyun #define M_L2C_MISC_SCACHE_DISABLE_R _SB_MAKEMASK1(1) 114*4882a593Smuzhiyun #define M_L2C_MISC_SCACHE_DISABLE_L _SB_MAKEMASK1(0) 115*4882a593Smuzhiyun #endif /* 1250 PASS3 || 112x PASS1 */ 116*4882a593Smuzhiyun 117*4882a593Smuzhiyun 118*4882a593Smuzhiyun #endif 119