1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0-or-later */ 2*4882a593Smuzhiyun /* ********************************************************************* 3*4882a593Smuzhiyun * SB1250 Board Support Package 4*4882a593Smuzhiyun * 5*4882a593Smuzhiyun * Memory Controller constants File: sb1250_mc.h 6*4882a593Smuzhiyun * 7*4882a593Smuzhiyun * This module contains constants and macros useful for 8*4882a593Smuzhiyun * programming the memory controller. 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_MC_H 21*4882a593Smuzhiyun #define _SB1250_MC_H 22*4882a593Smuzhiyun 23*4882a593Smuzhiyun #include <asm/sibyte/sb1250_defs.h> 24*4882a593Smuzhiyun 25*4882a593Smuzhiyun /* 26*4882a593Smuzhiyun * Memory Channel Config Register (table 6-14) 27*4882a593Smuzhiyun */ 28*4882a593Smuzhiyun 29*4882a593Smuzhiyun #define S_MC_RESERVED0 0 30*4882a593Smuzhiyun #define M_MC_RESERVED0 _SB_MAKEMASK(8, S_MC_RESERVED0) 31*4882a593Smuzhiyun 32*4882a593Smuzhiyun #define S_MC_CHANNEL_SEL 8 33*4882a593Smuzhiyun #define M_MC_CHANNEL_SEL _SB_MAKEMASK(8, S_MC_CHANNEL_SEL) 34*4882a593Smuzhiyun #define V_MC_CHANNEL_SEL(x) _SB_MAKEVALUE(x, S_MC_CHANNEL_SEL) 35*4882a593Smuzhiyun #define G_MC_CHANNEL_SEL(x) _SB_GETVALUE(x, S_MC_CHANNEL_SEL, M_MC_CHANNEL_SEL) 36*4882a593Smuzhiyun 37*4882a593Smuzhiyun #define S_MC_BANK0_MAP 16 38*4882a593Smuzhiyun #define M_MC_BANK0_MAP _SB_MAKEMASK(4, S_MC_BANK0_MAP) 39*4882a593Smuzhiyun #define V_MC_BANK0_MAP(x) _SB_MAKEVALUE(x, S_MC_BANK0_MAP) 40*4882a593Smuzhiyun #define G_MC_BANK0_MAP(x) _SB_GETVALUE(x, S_MC_BANK0_MAP, M_MC_BANK0_MAP) 41*4882a593Smuzhiyun 42*4882a593Smuzhiyun #define K_MC_BANK0_MAP_DEFAULT 0x00 43*4882a593Smuzhiyun #define V_MC_BANK0_MAP_DEFAULT V_MC_BANK0_MAP(K_MC_BANK0_MAP_DEFAULT) 44*4882a593Smuzhiyun 45*4882a593Smuzhiyun #define S_MC_BANK1_MAP 20 46*4882a593Smuzhiyun #define M_MC_BANK1_MAP _SB_MAKEMASK(4, S_MC_BANK1_MAP) 47*4882a593Smuzhiyun #define V_MC_BANK1_MAP(x) _SB_MAKEVALUE(x, S_MC_BANK1_MAP) 48*4882a593Smuzhiyun #define G_MC_BANK1_MAP(x) _SB_GETVALUE(x, S_MC_BANK1_MAP, M_MC_BANK1_MAP) 49*4882a593Smuzhiyun 50*4882a593Smuzhiyun #define K_MC_BANK1_MAP_DEFAULT 0x08 51*4882a593Smuzhiyun #define V_MC_BANK1_MAP_DEFAULT V_MC_BANK1_MAP(K_MC_BANK1_MAP_DEFAULT) 52*4882a593Smuzhiyun 53*4882a593Smuzhiyun #define S_MC_BANK2_MAP 24 54*4882a593Smuzhiyun #define M_MC_BANK2_MAP _SB_MAKEMASK(4, S_MC_BANK2_MAP) 55*4882a593Smuzhiyun #define V_MC_BANK2_MAP(x) _SB_MAKEVALUE(x, S_MC_BANK2_MAP) 56*4882a593Smuzhiyun #define G_MC_BANK2_MAP(x) _SB_GETVALUE(x, S_MC_BANK2_MAP, M_MC_BANK2_MAP) 57*4882a593Smuzhiyun 58*4882a593Smuzhiyun #define K_MC_BANK2_MAP_DEFAULT 0x09 59*4882a593Smuzhiyun #define V_MC_BANK2_MAP_DEFAULT V_MC_BANK2_MAP(K_MC_BANK2_MAP_DEFAULT) 60*4882a593Smuzhiyun 61*4882a593Smuzhiyun #define S_MC_BANK3_MAP 28 62*4882a593Smuzhiyun #define M_MC_BANK3_MAP _SB_MAKEMASK(4, S_MC_BANK3_MAP) 63*4882a593Smuzhiyun #define V_MC_BANK3_MAP(x) _SB_MAKEVALUE(x, S_MC_BANK3_MAP) 64*4882a593Smuzhiyun #define G_MC_BANK3_MAP(x) _SB_GETVALUE(x, S_MC_BANK3_MAP, M_MC_BANK3_MAP) 65*4882a593Smuzhiyun 66*4882a593Smuzhiyun #define K_MC_BANK3_MAP_DEFAULT 0x0C 67*4882a593Smuzhiyun #define V_MC_BANK3_MAP_DEFAULT V_MC_BANK3_MAP(K_MC_BANK3_MAP_DEFAULT) 68*4882a593Smuzhiyun 69*4882a593Smuzhiyun #define M_MC_RESERVED1 _SB_MAKEMASK(8, 32) 70*4882a593Smuzhiyun 71*4882a593Smuzhiyun #define S_MC_QUEUE_SIZE 40 72*4882a593Smuzhiyun #define M_MC_QUEUE_SIZE _SB_MAKEMASK(4, S_MC_QUEUE_SIZE) 73*4882a593Smuzhiyun #define V_MC_QUEUE_SIZE(x) _SB_MAKEVALUE(x, S_MC_QUEUE_SIZE) 74*4882a593Smuzhiyun #define G_MC_QUEUE_SIZE(x) _SB_GETVALUE(x, S_MC_QUEUE_SIZE, M_MC_QUEUE_SIZE) 75*4882a593Smuzhiyun #define V_MC_QUEUE_SIZE_DEFAULT V_MC_QUEUE_SIZE(0x0A) 76*4882a593Smuzhiyun 77*4882a593Smuzhiyun #define S_MC_AGE_LIMIT 44 78*4882a593Smuzhiyun #define M_MC_AGE_LIMIT _SB_MAKEMASK(4, S_MC_AGE_LIMIT) 79*4882a593Smuzhiyun #define V_MC_AGE_LIMIT(x) _SB_MAKEVALUE(x, S_MC_AGE_LIMIT) 80*4882a593Smuzhiyun #define G_MC_AGE_LIMIT(x) _SB_GETVALUE(x, S_MC_AGE_LIMIT, M_MC_AGE_LIMIT) 81*4882a593Smuzhiyun #define V_MC_AGE_LIMIT_DEFAULT V_MC_AGE_LIMIT(8) 82*4882a593Smuzhiyun 83*4882a593Smuzhiyun #define S_MC_WR_LIMIT 48 84*4882a593Smuzhiyun #define M_MC_WR_LIMIT _SB_MAKEMASK(4, S_MC_WR_LIMIT) 85*4882a593Smuzhiyun #define V_MC_WR_LIMIT(x) _SB_MAKEVALUE(x, S_MC_WR_LIMIT) 86*4882a593Smuzhiyun #define G_MC_WR_LIMIT(x) _SB_GETVALUE(x, S_MC_WR_LIMIT, M_MC_WR_LIMIT) 87*4882a593Smuzhiyun #define V_MC_WR_LIMIT_DEFAULT V_MC_WR_LIMIT(5) 88*4882a593Smuzhiyun 89*4882a593Smuzhiyun #define M_MC_IOB1HIGHPRIORITY _SB_MAKEMASK1(52) 90*4882a593Smuzhiyun 91*4882a593Smuzhiyun #define M_MC_RESERVED2 _SB_MAKEMASK(3, 53) 92*4882a593Smuzhiyun 93*4882a593Smuzhiyun #define S_MC_CS_MODE 56 94*4882a593Smuzhiyun #define M_MC_CS_MODE _SB_MAKEMASK(4, S_MC_CS_MODE) 95*4882a593Smuzhiyun #define V_MC_CS_MODE(x) _SB_MAKEVALUE(x, S_MC_CS_MODE) 96*4882a593Smuzhiyun #define G_MC_CS_MODE(x) _SB_GETVALUE(x, S_MC_CS_MODE, M_MC_CS_MODE) 97*4882a593Smuzhiyun 98*4882a593Smuzhiyun #define K_MC_CS_MODE_MSB_CS 0 99*4882a593Smuzhiyun #define K_MC_CS_MODE_INTLV_CS 15 100*4882a593Smuzhiyun #define K_MC_CS_MODE_MIXED_CS_10 12 101*4882a593Smuzhiyun #define K_MC_CS_MODE_MIXED_CS_30 6 102*4882a593Smuzhiyun #define K_MC_CS_MODE_MIXED_CS_32 3 103*4882a593Smuzhiyun 104*4882a593Smuzhiyun #define V_MC_CS_MODE_MSB_CS V_MC_CS_MODE(K_MC_CS_MODE_MSB_CS) 105*4882a593Smuzhiyun #define V_MC_CS_MODE_INTLV_CS V_MC_CS_MODE(K_MC_CS_MODE_INTLV_CS) 106*4882a593Smuzhiyun #define V_MC_CS_MODE_MIXED_CS_10 V_MC_CS_MODE(K_MC_CS_MODE_MIXED_CS_10) 107*4882a593Smuzhiyun #define V_MC_CS_MODE_MIXED_CS_30 V_MC_CS_MODE(K_MC_CS_MODE_MIXED_CS_30) 108*4882a593Smuzhiyun #define V_MC_CS_MODE_MIXED_CS_32 V_MC_CS_MODE(K_MC_CS_MODE_MIXED_CS_32) 109*4882a593Smuzhiyun 110*4882a593Smuzhiyun #define M_MC_ECC_DISABLE _SB_MAKEMASK1(60) 111*4882a593Smuzhiyun #define M_MC_BERR_DISABLE _SB_MAKEMASK1(61) 112*4882a593Smuzhiyun #define M_MC_FORCE_SEQ _SB_MAKEMASK1(62) 113*4882a593Smuzhiyun #define M_MC_DEBUG _SB_MAKEMASK1(63) 114*4882a593Smuzhiyun 115*4882a593Smuzhiyun #define V_MC_CONFIG_DEFAULT V_MC_WR_LIMIT_DEFAULT | V_MC_AGE_LIMIT_DEFAULT | \ 116*4882a593Smuzhiyun V_MC_BANK0_MAP_DEFAULT | V_MC_BANK1_MAP_DEFAULT | \ 117*4882a593Smuzhiyun V_MC_BANK2_MAP_DEFAULT | V_MC_BANK3_MAP_DEFAULT | V_MC_CHANNEL_SEL(0) | \ 118*4882a593Smuzhiyun M_MC_IOB1HIGHPRIORITY | V_MC_QUEUE_SIZE_DEFAULT 119*4882a593Smuzhiyun 120*4882a593Smuzhiyun 121*4882a593Smuzhiyun /* 122*4882a593Smuzhiyun * Memory clock config register (Table 6-15) 123*4882a593Smuzhiyun * 124*4882a593Smuzhiyun * Note: this field has been updated to be consistent with the errata to 0.2 125*4882a593Smuzhiyun */ 126*4882a593Smuzhiyun 127*4882a593Smuzhiyun #define S_MC_CLK_RATIO 0 128*4882a593Smuzhiyun #define M_MC_CLK_RATIO _SB_MAKEMASK(4, S_MC_CLK_RATIO) 129*4882a593Smuzhiyun #define V_MC_CLK_RATIO(x) _SB_MAKEVALUE(x, S_MC_CLK_RATIO) 130*4882a593Smuzhiyun #define G_MC_CLK_RATIO(x) _SB_GETVALUE(x, S_MC_CLK_RATIO, M_MC_CLK_RATIO) 131*4882a593Smuzhiyun 132*4882a593Smuzhiyun #define K_MC_CLK_RATIO_2X 4 133*4882a593Smuzhiyun #define K_MC_CLK_RATIO_25X 5 134*4882a593Smuzhiyun #define K_MC_CLK_RATIO_3X 6 135*4882a593Smuzhiyun #define K_MC_CLK_RATIO_35X 7 136*4882a593Smuzhiyun #define K_MC_CLK_RATIO_4X 8 137*4882a593Smuzhiyun #define K_MC_CLK_RATIO_45X 9 138*4882a593Smuzhiyun 139*4882a593Smuzhiyun #define V_MC_CLK_RATIO_2X V_MC_CLK_RATIO(K_MC_CLK_RATIO_2X) 140*4882a593Smuzhiyun #define V_MC_CLK_RATIO_25X V_MC_CLK_RATIO(K_MC_CLK_RATIO_25X) 141*4882a593Smuzhiyun #define V_MC_CLK_RATIO_3X V_MC_CLK_RATIO(K_MC_CLK_RATIO_3X) 142*4882a593Smuzhiyun #define V_MC_CLK_RATIO_35X V_MC_CLK_RATIO(K_MC_CLK_RATIO_35X) 143*4882a593Smuzhiyun #define V_MC_CLK_RATIO_4X V_MC_CLK_RATIO(K_MC_CLK_RATIO_4X) 144*4882a593Smuzhiyun #define V_MC_CLK_RATIO_45X V_MC_CLK_RATIO(K_MC_CLK_RATIO_45X) 145*4882a593Smuzhiyun #define V_MC_CLK_RATIO_DEFAULT V_MC_CLK_RATIO_25X 146*4882a593Smuzhiyun 147*4882a593Smuzhiyun #define S_MC_REF_RATE 8 148*4882a593Smuzhiyun #define M_MC_REF_RATE _SB_MAKEMASK(8, S_MC_REF_RATE) 149*4882a593Smuzhiyun #define V_MC_REF_RATE(x) _SB_MAKEVALUE(x, S_MC_REF_RATE) 150*4882a593Smuzhiyun #define G_MC_REF_RATE(x) _SB_GETVALUE(x, S_MC_REF_RATE, M_MC_REF_RATE) 151*4882a593Smuzhiyun 152*4882a593Smuzhiyun #define K_MC_REF_RATE_100MHz 0x62 153*4882a593Smuzhiyun #define K_MC_REF_RATE_133MHz 0x81 154*4882a593Smuzhiyun #define K_MC_REF_RATE_200MHz 0xC4 155*4882a593Smuzhiyun 156*4882a593Smuzhiyun #define V_MC_REF_RATE_100MHz V_MC_REF_RATE(K_MC_REF_RATE_100MHz) 157*4882a593Smuzhiyun #define V_MC_REF_RATE_133MHz V_MC_REF_RATE(K_MC_REF_RATE_133MHz) 158*4882a593Smuzhiyun #define V_MC_REF_RATE_200MHz V_MC_REF_RATE(K_MC_REF_RATE_200MHz) 159*4882a593Smuzhiyun #define V_MC_REF_RATE_DEFAULT V_MC_REF_RATE_100MHz 160*4882a593Smuzhiyun 161*4882a593Smuzhiyun #define S_MC_CLOCK_DRIVE 16 162*4882a593Smuzhiyun #define M_MC_CLOCK_DRIVE _SB_MAKEMASK(4, S_MC_CLOCK_DRIVE) 163*4882a593Smuzhiyun #define V_MC_CLOCK_DRIVE(x) _SB_MAKEVALUE(x, S_MC_CLOCK_DRIVE) 164*4882a593Smuzhiyun #define G_MC_CLOCK_DRIVE(x) _SB_GETVALUE(x, S_MC_CLOCK_DRIVE, M_MC_CLOCK_DRIVE) 165*4882a593Smuzhiyun #define V_MC_CLOCK_DRIVE_DEFAULT V_MC_CLOCK_DRIVE(0xF) 166*4882a593Smuzhiyun 167*4882a593Smuzhiyun #define S_MC_DATA_DRIVE 20 168*4882a593Smuzhiyun #define M_MC_DATA_DRIVE _SB_MAKEMASK(4, S_MC_DATA_DRIVE) 169*4882a593Smuzhiyun #define V_MC_DATA_DRIVE(x) _SB_MAKEVALUE(x, S_MC_DATA_DRIVE) 170*4882a593Smuzhiyun #define G_MC_DATA_DRIVE(x) _SB_GETVALUE(x, S_MC_DATA_DRIVE, M_MC_DATA_DRIVE) 171*4882a593Smuzhiyun #define V_MC_DATA_DRIVE_DEFAULT V_MC_DATA_DRIVE(0x0) 172*4882a593Smuzhiyun 173*4882a593Smuzhiyun #define S_MC_ADDR_DRIVE 24 174*4882a593Smuzhiyun #define M_MC_ADDR_DRIVE _SB_MAKEMASK(4, S_MC_ADDR_DRIVE) 175*4882a593Smuzhiyun #define V_MC_ADDR_DRIVE(x) _SB_MAKEVALUE(x, S_MC_ADDR_DRIVE) 176*4882a593Smuzhiyun #define G_MC_ADDR_DRIVE(x) _SB_GETVALUE(x, S_MC_ADDR_DRIVE, M_MC_ADDR_DRIVE) 177*4882a593Smuzhiyun #define V_MC_ADDR_DRIVE_DEFAULT V_MC_ADDR_DRIVE(0x0) 178*4882a593Smuzhiyun 179*4882a593Smuzhiyun #if SIBYTE_HDR_FEATURE(1250, PASS3) || SIBYTE_HDR_FEATURE(112x, PASS1) 180*4882a593Smuzhiyun #define M_MC_REF_DISABLE _SB_MAKEMASK1(30) 181*4882a593Smuzhiyun #endif /* 1250 PASS3 || 112x PASS1 */ 182*4882a593Smuzhiyun 183*4882a593Smuzhiyun #define M_MC_DLL_BYPASS _SB_MAKEMASK1(31) 184*4882a593Smuzhiyun 185*4882a593Smuzhiyun #define S_MC_DQI_SKEW 32 186*4882a593Smuzhiyun #define M_MC_DQI_SKEW _SB_MAKEMASK(8, S_MC_DQI_SKEW) 187*4882a593Smuzhiyun #define V_MC_DQI_SKEW(x) _SB_MAKEVALUE(x, S_MC_DQI_SKEW) 188*4882a593Smuzhiyun #define G_MC_DQI_SKEW(x) _SB_GETVALUE(x, S_MC_DQI_SKEW, M_MC_DQI_SKEW) 189*4882a593Smuzhiyun #define V_MC_DQI_SKEW_DEFAULT V_MC_DQI_SKEW(0) 190*4882a593Smuzhiyun 191*4882a593Smuzhiyun #define S_MC_DQO_SKEW 40 192*4882a593Smuzhiyun #define M_MC_DQO_SKEW _SB_MAKEMASK(8, S_MC_DQO_SKEW) 193*4882a593Smuzhiyun #define V_MC_DQO_SKEW(x) _SB_MAKEVALUE(x, S_MC_DQO_SKEW) 194*4882a593Smuzhiyun #define G_MC_DQO_SKEW(x) _SB_GETVALUE(x, S_MC_DQO_SKEW, M_MC_DQO_SKEW) 195*4882a593Smuzhiyun #define V_MC_DQO_SKEW_DEFAULT V_MC_DQO_SKEW(0) 196*4882a593Smuzhiyun 197*4882a593Smuzhiyun #define S_MC_ADDR_SKEW 48 198*4882a593Smuzhiyun #define M_MC_ADDR_SKEW _SB_MAKEMASK(8, S_MC_ADDR_SKEW) 199*4882a593Smuzhiyun #define V_MC_ADDR_SKEW(x) _SB_MAKEVALUE(x, S_MC_ADDR_SKEW) 200*4882a593Smuzhiyun #define G_MC_ADDR_SKEW(x) _SB_GETVALUE(x, S_MC_ADDR_SKEW, M_MC_ADDR_SKEW) 201*4882a593Smuzhiyun #define V_MC_ADDR_SKEW_DEFAULT V_MC_ADDR_SKEW(0x0F) 202*4882a593Smuzhiyun 203*4882a593Smuzhiyun #define S_MC_DLL_DEFAULT 56 204*4882a593Smuzhiyun #define M_MC_DLL_DEFAULT _SB_MAKEMASK(8, S_MC_DLL_DEFAULT) 205*4882a593Smuzhiyun #define V_MC_DLL_DEFAULT(x) _SB_MAKEVALUE(x, S_MC_DLL_DEFAULT) 206*4882a593Smuzhiyun #define G_MC_DLL_DEFAULT(x) _SB_GETVALUE(x, S_MC_DLL_DEFAULT, M_MC_DLL_DEFAULT) 207*4882a593Smuzhiyun #define V_MC_DLL_DEFAULT_DEFAULT V_MC_DLL_DEFAULT(0x10) 208*4882a593Smuzhiyun 209*4882a593Smuzhiyun #define V_MC_CLKCONFIG_DEFAULT V_MC_DLL_DEFAULT_DEFAULT | \ 210*4882a593Smuzhiyun V_MC_ADDR_SKEW_DEFAULT | \ 211*4882a593Smuzhiyun V_MC_DQO_SKEW_DEFAULT | \ 212*4882a593Smuzhiyun V_MC_DQI_SKEW_DEFAULT | \ 213*4882a593Smuzhiyun V_MC_ADDR_DRIVE_DEFAULT | \ 214*4882a593Smuzhiyun V_MC_DATA_DRIVE_DEFAULT | \ 215*4882a593Smuzhiyun V_MC_CLOCK_DRIVE_DEFAULT | \ 216*4882a593Smuzhiyun V_MC_REF_RATE_DEFAULT 217*4882a593Smuzhiyun 218*4882a593Smuzhiyun 219*4882a593Smuzhiyun 220*4882a593Smuzhiyun /* 221*4882a593Smuzhiyun * DRAM Command Register (Table 6-13) 222*4882a593Smuzhiyun */ 223*4882a593Smuzhiyun 224*4882a593Smuzhiyun #define S_MC_COMMAND 0 225*4882a593Smuzhiyun #define M_MC_COMMAND _SB_MAKEMASK(4, S_MC_COMMAND) 226*4882a593Smuzhiyun #define V_MC_COMMAND(x) _SB_MAKEVALUE(x, S_MC_COMMAND) 227*4882a593Smuzhiyun #define G_MC_COMMAND(x) _SB_GETVALUE(x, S_MC_COMMAND, M_MC_COMMAND) 228*4882a593Smuzhiyun 229*4882a593Smuzhiyun #define K_MC_COMMAND_EMRS 0 230*4882a593Smuzhiyun #define K_MC_COMMAND_MRS 1 231*4882a593Smuzhiyun #define K_MC_COMMAND_PRE 2 232*4882a593Smuzhiyun #define K_MC_COMMAND_AR 3 233*4882a593Smuzhiyun #define K_MC_COMMAND_SETRFSH 4 234*4882a593Smuzhiyun #define K_MC_COMMAND_CLRRFSH 5 235*4882a593Smuzhiyun #define K_MC_COMMAND_SETPWRDN 6 236*4882a593Smuzhiyun #define K_MC_COMMAND_CLRPWRDN 7 237*4882a593Smuzhiyun 238*4882a593Smuzhiyun #define V_MC_COMMAND_EMRS V_MC_COMMAND(K_MC_COMMAND_EMRS) 239*4882a593Smuzhiyun #define V_MC_COMMAND_MRS V_MC_COMMAND(K_MC_COMMAND_MRS) 240*4882a593Smuzhiyun #define V_MC_COMMAND_PRE V_MC_COMMAND(K_MC_COMMAND_PRE) 241*4882a593Smuzhiyun #define V_MC_COMMAND_AR V_MC_COMMAND(K_MC_COMMAND_AR) 242*4882a593Smuzhiyun #define V_MC_COMMAND_SETRFSH V_MC_COMMAND(K_MC_COMMAND_SETRFSH) 243*4882a593Smuzhiyun #define V_MC_COMMAND_CLRRFSH V_MC_COMMAND(K_MC_COMMAND_CLRRFSH) 244*4882a593Smuzhiyun #define V_MC_COMMAND_SETPWRDN V_MC_COMMAND(K_MC_COMMAND_SETPWRDN) 245*4882a593Smuzhiyun #define V_MC_COMMAND_CLRPWRDN V_MC_COMMAND(K_MC_COMMAND_CLRPWRDN) 246*4882a593Smuzhiyun 247*4882a593Smuzhiyun #define M_MC_CS0 _SB_MAKEMASK1(4) 248*4882a593Smuzhiyun #define M_MC_CS1 _SB_MAKEMASK1(5) 249*4882a593Smuzhiyun #define M_MC_CS2 _SB_MAKEMASK1(6) 250*4882a593Smuzhiyun #define M_MC_CS3 _SB_MAKEMASK1(7) 251*4882a593Smuzhiyun 252*4882a593Smuzhiyun /* 253*4882a593Smuzhiyun * DRAM Mode Register (Table 6-14) 254*4882a593Smuzhiyun */ 255*4882a593Smuzhiyun 256*4882a593Smuzhiyun #define S_MC_EMODE 0 257*4882a593Smuzhiyun #define M_MC_EMODE _SB_MAKEMASK(15, S_MC_EMODE) 258*4882a593Smuzhiyun #define V_MC_EMODE(x) _SB_MAKEVALUE(x, S_MC_EMODE) 259*4882a593Smuzhiyun #define G_MC_EMODE(x) _SB_GETVALUE(x, S_MC_EMODE, M_MC_EMODE) 260*4882a593Smuzhiyun #define V_MC_EMODE_DEFAULT V_MC_EMODE(0) 261*4882a593Smuzhiyun 262*4882a593Smuzhiyun #define S_MC_MODE 16 263*4882a593Smuzhiyun #define M_MC_MODE _SB_MAKEMASK(15, S_MC_MODE) 264*4882a593Smuzhiyun #define V_MC_MODE(x) _SB_MAKEVALUE(x, S_MC_MODE) 265*4882a593Smuzhiyun #define G_MC_MODE(x) _SB_GETVALUE(x, S_MC_MODE, M_MC_MODE) 266*4882a593Smuzhiyun #define V_MC_MODE_DEFAULT V_MC_MODE(0x22) 267*4882a593Smuzhiyun 268*4882a593Smuzhiyun #define S_MC_DRAM_TYPE 32 269*4882a593Smuzhiyun #define M_MC_DRAM_TYPE _SB_MAKEMASK(3, S_MC_DRAM_TYPE) 270*4882a593Smuzhiyun #define V_MC_DRAM_TYPE(x) _SB_MAKEVALUE(x, S_MC_DRAM_TYPE) 271*4882a593Smuzhiyun #define G_MC_DRAM_TYPE(x) _SB_GETVALUE(x, S_MC_DRAM_TYPE, M_MC_DRAM_TYPE) 272*4882a593Smuzhiyun 273*4882a593Smuzhiyun #define K_MC_DRAM_TYPE_JEDEC 0 274*4882a593Smuzhiyun #define K_MC_DRAM_TYPE_FCRAM 1 275*4882a593Smuzhiyun #define K_MC_DRAM_TYPE_SGRAM 2 276*4882a593Smuzhiyun 277*4882a593Smuzhiyun #define V_MC_DRAM_TYPE_JEDEC V_MC_DRAM_TYPE(K_MC_DRAM_TYPE_JEDEC) 278*4882a593Smuzhiyun #define V_MC_DRAM_TYPE_FCRAM V_MC_DRAM_TYPE(K_MC_DRAM_TYPE_FCRAM) 279*4882a593Smuzhiyun #define V_MC_DRAM_TYPE_SGRAM V_MC_DRAM_TYPE(K_MC_DRAM_TYPE_SGRAM) 280*4882a593Smuzhiyun 281*4882a593Smuzhiyun #define M_MC_EXTERNALDECODE _SB_MAKEMASK1(35) 282*4882a593Smuzhiyun 283*4882a593Smuzhiyun #if SIBYTE_HDR_FEATURE(1250, PASS3) || SIBYTE_HDR_FEATURE(112x, PASS1) 284*4882a593Smuzhiyun #define M_MC_PRE_ON_A8 _SB_MAKEMASK1(36) 285*4882a593Smuzhiyun #define M_MC_RAM_WITH_A13 _SB_MAKEMASK1(37) 286*4882a593Smuzhiyun #endif /* 1250 PASS3 || 112x PASS1 */ 287*4882a593Smuzhiyun 288*4882a593Smuzhiyun 289*4882a593Smuzhiyun 290*4882a593Smuzhiyun /* 291*4882a593Smuzhiyun * SDRAM Timing Register (Table 6-15) 292*4882a593Smuzhiyun */ 293*4882a593Smuzhiyun 294*4882a593Smuzhiyun #define M_MC_w2rIDLE_TWOCYCLES _SB_MAKEMASK1(60) 295*4882a593Smuzhiyun #define M_MC_r2wIDLE_TWOCYCLES _SB_MAKEMASK1(61) 296*4882a593Smuzhiyun #define M_MC_r2rIDLE_TWOCYCLES _SB_MAKEMASK1(62) 297*4882a593Smuzhiyun 298*4882a593Smuzhiyun #define S_MC_tFIFO 56 299*4882a593Smuzhiyun #define M_MC_tFIFO _SB_MAKEMASK(4, S_MC_tFIFO) 300*4882a593Smuzhiyun #define V_MC_tFIFO(x) _SB_MAKEVALUE(x, S_MC_tFIFO) 301*4882a593Smuzhiyun #define G_MC_tFIFO(x) _SB_GETVALUE(x, S_MC_tFIFO, M_MC_tFIFO) 302*4882a593Smuzhiyun #define K_MC_tFIFO_DEFAULT 1 303*4882a593Smuzhiyun #define V_MC_tFIFO_DEFAULT V_MC_tFIFO(K_MC_tFIFO_DEFAULT) 304*4882a593Smuzhiyun 305*4882a593Smuzhiyun #define S_MC_tRFC 52 306*4882a593Smuzhiyun #define M_MC_tRFC _SB_MAKEMASK(4, S_MC_tRFC) 307*4882a593Smuzhiyun #define V_MC_tRFC(x) _SB_MAKEVALUE(x, S_MC_tRFC) 308*4882a593Smuzhiyun #define G_MC_tRFC(x) _SB_GETVALUE(x, S_MC_tRFC, M_MC_tRFC) 309*4882a593Smuzhiyun #define K_MC_tRFC_DEFAULT 12 310*4882a593Smuzhiyun #define V_MC_tRFC_DEFAULT V_MC_tRFC(K_MC_tRFC_DEFAULT) 311*4882a593Smuzhiyun 312*4882a593Smuzhiyun #if SIBYTE_HDR_FEATURE(1250, PASS3) 313*4882a593Smuzhiyun #define M_MC_tRFC_PLUS16 _SB_MAKEMASK1(51) /* 1250C3 and later. */ 314*4882a593Smuzhiyun #endif 315*4882a593Smuzhiyun 316*4882a593Smuzhiyun #define S_MC_tCwCr 40 317*4882a593Smuzhiyun #define M_MC_tCwCr _SB_MAKEMASK(4, S_MC_tCwCr) 318*4882a593Smuzhiyun #define V_MC_tCwCr(x) _SB_MAKEVALUE(x, S_MC_tCwCr) 319*4882a593Smuzhiyun #define G_MC_tCwCr(x) _SB_GETVALUE(x, S_MC_tCwCr, M_MC_tCwCr) 320*4882a593Smuzhiyun #define K_MC_tCwCr_DEFAULT 4 321*4882a593Smuzhiyun #define V_MC_tCwCr_DEFAULT V_MC_tCwCr(K_MC_tCwCr_DEFAULT) 322*4882a593Smuzhiyun 323*4882a593Smuzhiyun #define S_MC_tRCr 28 324*4882a593Smuzhiyun #define M_MC_tRCr _SB_MAKEMASK(4, S_MC_tRCr) 325*4882a593Smuzhiyun #define V_MC_tRCr(x) _SB_MAKEVALUE(x, S_MC_tRCr) 326*4882a593Smuzhiyun #define G_MC_tRCr(x) _SB_GETVALUE(x, S_MC_tRCr, M_MC_tRCr) 327*4882a593Smuzhiyun #define K_MC_tRCr_DEFAULT 9 328*4882a593Smuzhiyun #define V_MC_tRCr_DEFAULT V_MC_tRCr(K_MC_tRCr_DEFAULT) 329*4882a593Smuzhiyun 330*4882a593Smuzhiyun #define S_MC_tRCw 24 331*4882a593Smuzhiyun #define M_MC_tRCw _SB_MAKEMASK(4, S_MC_tRCw) 332*4882a593Smuzhiyun #define V_MC_tRCw(x) _SB_MAKEVALUE(x, S_MC_tRCw) 333*4882a593Smuzhiyun #define G_MC_tRCw(x) _SB_GETVALUE(x, S_MC_tRCw, M_MC_tRCw) 334*4882a593Smuzhiyun #define K_MC_tRCw_DEFAULT 10 335*4882a593Smuzhiyun #define V_MC_tRCw_DEFAULT V_MC_tRCw(K_MC_tRCw_DEFAULT) 336*4882a593Smuzhiyun 337*4882a593Smuzhiyun #define S_MC_tRRD 20 338*4882a593Smuzhiyun #define M_MC_tRRD _SB_MAKEMASK(4, S_MC_tRRD) 339*4882a593Smuzhiyun #define V_MC_tRRD(x) _SB_MAKEVALUE(x, S_MC_tRRD) 340*4882a593Smuzhiyun #define G_MC_tRRD(x) _SB_GETVALUE(x, S_MC_tRRD, M_MC_tRRD) 341*4882a593Smuzhiyun #define K_MC_tRRD_DEFAULT 2 342*4882a593Smuzhiyun #define V_MC_tRRD_DEFAULT V_MC_tRRD(K_MC_tRRD_DEFAULT) 343*4882a593Smuzhiyun 344*4882a593Smuzhiyun #define S_MC_tRP 16 345*4882a593Smuzhiyun #define M_MC_tRP _SB_MAKEMASK(4, S_MC_tRP) 346*4882a593Smuzhiyun #define V_MC_tRP(x) _SB_MAKEVALUE(x, S_MC_tRP) 347*4882a593Smuzhiyun #define G_MC_tRP(x) _SB_GETVALUE(x, S_MC_tRP, M_MC_tRP) 348*4882a593Smuzhiyun #define K_MC_tRP_DEFAULT 4 349*4882a593Smuzhiyun #define V_MC_tRP_DEFAULT V_MC_tRP(K_MC_tRP_DEFAULT) 350*4882a593Smuzhiyun 351*4882a593Smuzhiyun #define S_MC_tCwD 8 352*4882a593Smuzhiyun #define M_MC_tCwD _SB_MAKEMASK(4, S_MC_tCwD) 353*4882a593Smuzhiyun #define V_MC_tCwD(x) _SB_MAKEVALUE(x, S_MC_tCwD) 354*4882a593Smuzhiyun #define G_MC_tCwD(x) _SB_GETVALUE(x, S_MC_tCwD, M_MC_tCwD) 355*4882a593Smuzhiyun #define K_MC_tCwD_DEFAULT 1 356*4882a593Smuzhiyun #define V_MC_tCwD_DEFAULT V_MC_tCwD(K_MC_tCwD_DEFAULT) 357*4882a593Smuzhiyun 358*4882a593Smuzhiyun #define M_tCrDh _SB_MAKEMASK1(7) 359*4882a593Smuzhiyun #define M_MC_tCrDh M_tCrDh 360*4882a593Smuzhiyun 361*4882a593Smuzhiyun #define S_MC_tCrD 4 362*4882a593Smuzhiyun #define M_MC_tCrD _SB_MAKEMASK(3, S_MC_tCrD) 363*4882a593Smuzhiyun #define V_MC_tCrD(x) _SB_MAKEVALUE(x, S_MC_tCrD) 364*4882a593Smuzhiyun #define G_MC_tCrD(x) _SB_GETVALUE(x, S_MC_tCrD, M_MC_tCrD) 365*4882a593Smuzhiyun #define K_MC_tCrD_DEFAULT 2 366*4882a593Smuzhiyun #define V_MC_tCrD_DEFAULT V_MC_tCrD(K_MC_tCrD_DEFAULT) 367*4882a593Smuzhiyun 368*4882a593Smuzhiyun #define S_MC_tRCD 0 369*4882a593Smuzhiyun #define M_MC_tRCD _SB_MAKEMASK(4, S_MC_tRCD) 370*4882a593Smuzhiyun #define V_MC_tRCD(x) _SB_MAKEVALUE(x, S_MC_tRCD) 371*4882a593Smuzhiyun #define G_MC_tRCD(x) _SB_GETVALUE(x, S_MC_tRCD, M_MC_tRCD) 372*4882a593Smuzhiyun #define K_MC_tRCD_DEFAULT 3 373*4882a593Smuzhiyun #define V_MC_tRCD_DEFAULT V_MC_tRCD(K_MC_tRCD_DEFAULT) 374*4882a593Smuzhiyun 375*4882a593Smuzhiyun #define V_MC_TIMING_DEFAULT V_MC_tFIFO(K_MC_tFIFO_DEFAULT) | \ 376*4882a593Smuzhiyun V_MC_tRFC(K_MC_tRFC_DEFAULT) | \ 377*4882a593Smuzhiyun V_MC_tCwCr(K_MC_tCwCr_DEFAULT) | \ 378*4882a593Smuzhiyun V_MC_tRCr(K_MC_tRCr_DEFAULT) | \ 379*4882a593Smuzhiyun V_MC_tRCw(K_MC_tRCw_DEFAULT) | \ 380*4882a593Smuzhiyun V_MC_tRRD(K_MC_tRRD_DEFAULT) | \ 381*4882a593Smuzhiyun V_MC_tRP(K_MC_tRP_DEFAULT) | \ 382*4882a593Smuzhiyun V_MC_tCwD(K_MC_tCwD_DEFAULT) | \ 383*4882a593Smuzhiyun V_MC_tCrD(K_MC_tCrD_DEFAULT) | \ 384*4882a593Smuzhiyun V_MC_tRCD(K_MC_tRCD_DEFAULT) | \ 385*4882a593Smuzhiyun M_MC_r2rIDLE_TWOCYCLES 386*4882a593Smuzhiyun 387*4882a593Smuzhiyun /* 388*4882a593Smuzhiyun * Errata says these are not the default 389*4882a593Smuzhiyun * M_MC_w2rIDLE_TWOCYCLES | \ 390*4882a593Smuzhiyun * M_MC_r2wIDLE_TWOCYCLES | \ 391*4882a593Smuzhiyun */ 392*4882a593Smuzhiyun 393*4882a593Smuzhiyun 394*4882a593Smuzhiyun /* 395*4882a593Smuzhiyun * Chip Select Start Address Register (Table 6-17) 396*4882a593Smuzhiyun */ 397*4882a593Smuzhiyun 398*4882a593Smuzhiyun #define S_MC_CS0_START 0 399*4882a593Smuzhiyun #define M_MC_CS0_START _SB_MAKEMASK(16, S_MC_CS0_START) 400*4882a593Smuzhiyun #define V_MC_CS0_START(x) _SB_MAKEVALUE(x, S_MC_CS0_START) 401*4882a593Smuzhiyun #define G_MC_CS0_START(x) _SB_GETVALUE(x, S_MC_CS0_START, M_MC_CS0_START) 402*4882a593Smuzhiyun 403*4882a593Smuzhiyun #define S_MC_CS1_START 16 404*4882a593Smuzhiyun #define M_MC_CS1_START _SB_MAKEMASK(16, S_MC_CS1_START) 405*4882a593Smuzhiyun #define V_MC_CS1_START(x) _SB_MAKEVALUE(x, S_MC_CS1_START) 406*4882a593Smuzhiyun #define G_MC_CS1_START(x) _SB_GETVALUE(x, S_MC_CS1_START, M_MC_CS1_START) 407*4882a593Smuzhiyun 408*4882a593Smuzhiyun #define S_MC_CS2_START 32 409*4882a593Smuzhiyun #define M_MC_CS2_START _SB_MAKEMASK(16, S_MC_CS2_START) 410*4882a593Smuzhiyun #define V_MC_CS2_START(x) _SB_MAKEVALUE(x, S_MC_CS2_START) 411*4882a593Smuzhiyun #define G_MC_CS2_START(x) _SB_GETVALUE(x, S_MC_CS2_START, M_MC_CS2_START) 412*4882a593Smuzhiyun 413*4882a593Smuzhiyun #define S_MC_CS3_START 48 414*4882a593Smuzhiyun #define M_MC_CS3_START _SB_MAKEMASK(16, S_MC_CS3_START) 415*4882a593Smuzhiyun #define V_MC_CS3_START(x) _SB_MAKEVALUE(x, S_MC_CS3_START) 416*4882a593Smuzhiyun #define G_MC_CS3_START(x) _SB_GETVALUE(x, S_MC_CS3_START, M_MC_CS3_START) 417*4882a593Smuzhiyun 418*4882a593Smuzhiyun /* 419*4882a593Smuzhiyun * Chip Select End Address Register (Table 6-18) 420*4882a593Smuzhiyun */ 421*4882a593Smuzhiyun 422*4882a593Smuzhiyun #define S_MC_CS0_END 0 423*4882a593Smuzhiyun #define M_MC_CS0_END _SB_MAKEMASK(16, S_MC_CS0_END) 424*4882a593Smuzhiyun #define V_MC_CS0_END(x) _SB_MAKEVALUE(x, S_MC_CS0_END) 425*4882a593Smuzhiyun #define G_MC_CS0_END(x) _SB_GETVALUE(x, S_MC_CS0_END, M_MC_CS0_END) 426*4882a593Smuzhiyun 427*4882a593Smuzhiyun #define S_MC_CS1_END 16 428*4882a593Smuzhiyun #define M_MC_CS1_END _SB_MAKEMASK(16, S_MC_CS1_END) 429*4882a593Smuzhiyun #define V_MC_CS1_END(x) _SB_MAKEVALUE(x, S_MC_CS1_END) 430*4882a593Smuzhiyun #define G_MC_CS1_END(x) _SB_GETVALUE(x, S_MC_CS1_END, M_MC_CS1_END) 431*4882a593Smuzhiyun 432*4882a593Smuzhiyun #define S_MC_CS2_END 32 433*4882a593Smuzhiyun #define M_MC_CS2_END _SB_MAKEMASK(16, S_MC_CS2_END) 434*4882a593Smuzhiyun #define V_MC_CS2_END(x) _SB_MAKEVALUE(x, S_MC_CS2_END) 435*4882a593Smuzhiyun #define G_MC_CS2_END(x) _SB_GETVALUE(x, S_MC_CS2_END, M_MC_CS2_END) 436*4882a593Smuzhiyun 437*4882a593Smuzhiyun #define S_MC_CS3_END 48 438*4882a593Smuzhiyun #define M_MC_CS3_END _SB_MAKEMASK(16, S_MC_CS3_END) 439*4882a593Smuzhiyun #define V_MC_CS3_END(x) _SB_MAKEVALUE(x, S_MC_CS3_END) 440*4882a593Smuzhiyun #define G_MC_CS3_END(x) _SB_GETVALUE(x, S_MC_CS3_END, M_MC_CS3_END) 441*4882a593Smuzhiyun 442*4882a593Smuzhiyun /* 443*4882a593Smuzhiyun * Chip Select Interleave Register (Table 6-19) 444*4882a593Smuzhiyun */ 445*4882a593Smuzhiyun 446*4882a593Smuzhiyun #define S_MC_INTLV_RESERVED 0 447*4882a593Smuzhiyun #define M_MC_INTLV_RESERVED _SB_MAKEMASK(5, S_MC_INTLV_RESERVED) 448*4882a593Smuzhiyun 449*4882a593Smuzhiyun #define S_MC_INTERLEAVE 7 450*4882a593Smuzhiyun #define M_MC_INTERLEAVE _SB_MAKEMASK(18, S_MC_INTERLEAVE) 451*4882a593Smuzhiyun #define V_MC_INTERLEAVE(x) _SB_MAKEVALUE(x, S_MC_INTERLEAVE) 452*4882a593Smuzhiyun 453*4882a593Smuzhiyun #define S_MC_INTLV_MBZ 25 454*4882a593Smuzhiyun #define M_MC_INTLV_MBZ _SB_MAKEMASK(39, S_MC_INTLV_MBZ) 455*4882a593Smuzhiyun 456*4882a593Smuzhiyun /* 457*4882a593Smuzhiyun * Row Address Bits Register (Table 6-20) 458*4882a593Smuzhiyun */ 459*4882a593Smuzhiyun 460*4882a593Smuzhiyun #define S_MC_RAS_RESERVED 0 461*4882a593Smuzhiyun #define M_MC_RAS_RESERVED _SB_MAKEMASK(5, S_MC_RAS_RESERVED) 462*4882a593Smuzhiyun 463*4882a593Smuzhiyun #define S_MC_RAS_SELECT 12 464*4882a593Smuzhiyun #define M_MC_RAS_SELECT _SB_MAKEMASK(25, S_MC_RAS_SELECT) 465*4882a593Smuzhiyun #define V_MC_RAS_SELECT(x) _SB_MAKEVALUE(x, S_MC_RAS_SELECT) 466*4882a593Smuzhiyun 467*4882a593Smuzhiyun #define S_MC_RAS_MBZ 37 468*4882a593Smuzhiyun #define M_MC_RAS_MBZ _SB_MAKEMASK(27, S_MC_RAS_MBZ) 469*4882a593Smuzhiyun 470*4882a593Smuzhiyun 471*4882a593Smuzhiyun /* 472*4882a593Smuzhiyun * Column Address Bits Register (Table 6-21) 473*4882a593Smuzhiyun */ 474*4882a593Smuzhiyun 475*4882a593Smuzhiyun #define S_MC_CAS_RESERVED 0 476*4882a593Smuzhiyun #define M_MC_CAS_RESERVED _SB_MAKEMASK(5, S_MC_CAS_RESERVED) 477*4882a593Smuzhiyun 478*4882a593Smuzhiyun #define S_MC_CAS_SELECT 5 479*4882a593Smuzhiyun #define M_MC_CAS_SELECT _SB_MAKEMASK(18, S_MC_CAS_SELECT) 480*4882a593Smuzhiyun #define V_MC_CAS_SELECT(x) _SB_MAKEVALUE(x, S_MC_CAS_SELECT) 481*4882a593Smuzhiyun 482*4882a593Smuzhiyun #define S_MC_CAS_MBZ 23 483*4882a593Smuzhiyun #define M_MC_CAS_MBZ _SB_MAKEMASK(41, S_MC_CAS_MBZ) 484*4882a593Smuzhiyun 485*4882a593Smuzhiyun 486*4882a593Smuzhiyun /* 487*4882a593Smuzhiyun * Bank Address Address Bits Register (Table 6-22) 488*4882a593Smuzhiyun */ 489*4882a593Smuzhiyun 490*4882a593Smuzhiyun #define S_MC_BA_RESERVED 0 491*4882a593Smuzhiyun #define M_MC_BA_RESERVED _SB_MAKEMASK(5, S_MC_BA_RESERVED) 492*4882a593Smuzhiyun 493*4882a593Smuzhiyun #define S_MC_BA_SELECT 5 494*4882a593Smuzhiyun #define M_MC_BA_SELECT _SB_MAKEMASK(20, S_MC_BA_SELECT) 495*4882a593Smuzhiyun #define V_MC_BA_SELECT(x) _SB_MAKEVALUE(x, S_MC_BA_SELECT) 496*4882a593Smuzhiyun 497*4882a593Smuzhiyun #define S_MC_BA_MBZ 25 498*4882a593Smuzhiyun #define M_MC_BA_MBZ _SB_MAKEMASK(39, S_MC_BA_MBZ) 499*4882a593Smuzhiyun 500*4882a593Smuzhiyun /* 501*4882a593Smuzhiyun * Chip Select Attribute Register (Table 6-23) 502*4882a593Smuzhiyun */ 503*4882a593Smuzhiyun 504*4882a593Smuzhiyun #define K_MC_CS_ATTR_CLOSED 0 505*4882a593Smuzhiyun #define K_MC_CS_ATTR_CASCHECK 1 506*4882a593Smuzhiyun #define K_MC_CS_ATTR_HINT 2 507*4882a593Smuzhiyun #define K_MC_CS_ATTR_OPEN 3 508*4882a593Smuzhiyun 509*4882a593Smuzhiyun #define S_MC_CS0_PAGE 0 510*4882a593Smuzhiyun #define M_MC_CS0_PAGE _SB_MAKEMASK(2, S_MC_CS0_PAGE) 511*4882a593Smuzhiyun #define V_MC_CS0_PAGE(x) _SB_MAKEVALUE(x, S_MC_CS0_PAGE) 512*4882a593Smuzhiyun #define G_MC_CS0_PAGE(x) _SB_GETVALUE(x, S_MC_CS0_PAGE, M_MC_CS0_PAGE) 513*4882a593Smuzhiyun 514*4882a593Smuzhiyun #define S_MC_CS1_PAGE 16 515*4882a593Smuzhiyun #define M_MC_CS1_PAGE _SB_MAKEMASK(2, S_MC_CS1_PAGE) 516*4882a593Smuzhiyun #define V_MC_CS1_PAGE(x) _SB_MAKEVALUE(x, S_MC_CS1_PAGE) 517*4882a593Smuzhiyun #define G_MC_CS1_PAGE(x) _SB_GETVALUE(x, S_MC_CS1_PAGE, M_MC_CS1_PAGE) 518*4882a593Smuzhiyun 519*4882a593Smuzhiyun #define S_MC_CS2_PAGE 32 520*4882a593Smuzhiyun #define M_MC_CS2_PAGE _SB_MAKEMASK(2, S_MC_CS2_PAGE) 521*4882a593Smuzhiyun #define V_MC_CS2_PAGE(x) _SB_MAKEVALUE(x, S_MC_CS2_PAGE) 522*4882a593Smuzhiyun #define G_MC_CS2_PAGE(x) _SB_GETVALUE(x, S_MC_CS2_PAGE, M_MC_CS2_PAGE) 523*4882a593Smuzhiyun 524*4882a593Smuzhiyun #define S_MC_CS3_PAGE 48 525*4882a593Smuzhiyun #define M_MC_CS3_PAGE _SB_MAKEMASK(2, S_MC_CS3_PAGE) 526*4882a593Smuzhiyun #define V_MC_CS3_PAGE(x) _SB_MAKEVALUE(x, S_MC_CS3_PAGE) 527*4882a593Smuzhiyun #define G_MC_CS3_PAGE(x) _SB_GETVALUE(x, S_MC_CS3_PAGE, M_MC_CS3_PAGE) 528*4882a593Smuzhiyun 529*4882a593Smuzhiyun /* 530*4882a593Smuzhiyun * ECC Test ECC Register (Table 6-25) 531*4882a593Smuzhiyun */ 532*4882a593Smuzhiyun 533*4882a593Smuzhiyun #define S_MC_ECC_INVERT 0 534*4882a593Smuzhiyun #define M_MC_ECC_INVERT _SB_MAKEMASK(8, S_MC_ECC_INVERT) 535*4882a593Smuzhiyun 536*4882a593Smuzhiyun 537*4882a593Smuzhiyun #endif 538