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