e70020d52d42c5f3cd30a5c9a94ce25e3be7227f
[coreboot.git] / src / northbridge / amd / amdk8 / spd_ddr2.h
1 /*   SPDs for DDR2 SDRAM */
2 #define SPD_MEM_TYPE     2                                     
3         #define SPD_MEM_TYPE_SDRAM_DDR    0x07        
4         #define SPD_MEM_TYPE_SDRAM_DDR2   0x08     
5
6 #define SPD_DIMM_TYPE    20     /* x  bit0 or bit4 =1 mean registered*/
7         #define SPD_DIMM_TYPE_RDIMM     (1<<0)
8         #define SPD_DIMM_TYPE_UDIMM     (1<<1)
9         #define SPD_DIMM_TYPE_SODIMM    (1<<2)
10         #define SPD_DIMM_TYPE_uDIMM     (1<<3)
11         #define SPD_DIMM_TYPE_mRDIMM    (1<<4)
12         #define SPD_DIMM_TYPE_mUDIMM    (1<<5)
13 #define SPD_MOD_ATTRIB      21
14         #define SPD_MOD_ATTRIB_DIFCK    0x20           
15         #define SPD_MOD_ATTRIB_REGADC   0x11   /* x */   
16         #define SPD_MOD_ATTRIB_PROBE    0x40  
17
18 #define SPD_DEV_ATTRIB   22  /* Device attributes --- general */
19 #define SPD_DIMM_CONF_TYPE     11
20         #define SPD_DIMM_CONF_TYPE_ECC          0x02
21         #define SPD_DIMM_CONF_TYPE_ADDR_PARITY  0x04     /* ? */
22
23 #define SPD_ROW_NUM        3        /* Number of Row addresses */
24 #define SPD_COL_NUM        4        /* Number of Column addresses */
25 #define SPD_BANK_NUM      17        /* SDRAM Device attributes - Number of Banks on SDRAM device, it could be 0x4, 0x8, so address lines for that would be 2, and 3 */ 
26  
27 #define SPD_MOD_ATTRIB_RANK      5       /* include Number of Ranks bit [2:0], Package (bit4, 1=stack, 0=planr), Height bit[7:5] */ 
28         #define SPD_MOD_ATTRIB_RANK_NUM_SHIFT 0
29         #define SPD_MOD_ATTRIB_RANK_NUM_MASK 0x07 
30                 #define SPD_MOD_ATTRIB_RANK_NUM_BASE 1
31                 #define SPD_MOD_ATTRIB_RANK_NUM_MIN 1
32                 #define SPD_MOD_ATTRIB_RANK_NUM_MAX 8
33
34 #define SPD_RANK_SIZE      31       /* Only one bit is set */ 
35         #define SPD_RANK_SIZE_1GB   (1<<0)
36         #define SPD_RANK_SIZE_2GB   (1<<1)
37         #define SPD_RANK_SIZE_4GB   (1<<2)
38         #define SPD_RANK_SIZE_8GB   (1<<3)
39         #define SPD_RANK_SIZE_16GB  (1<<4)
40         #define SPD_RANK_SIZE_128MB (1<<5)
41         #define SPD_RANK_SIZE_256MB (1<<6)
42         #define SPD_RANK_SIZE_512MB (1<<7)
43
44 #define SPD_DATA_WIDTH   6  /* valid value 0, 32, 33, 36, 64, 72, 80, 128, 144, 254, 255 */
45 #define SPD_PRI_WIDTH    13   /* Primary SDRAM Width, it could be 0x08 or 0x10 */
46 #define SPD_ERR_WIDTH    14   /* Error Checking SDRAM Width, it could be 0x08 or 0x10 */
47
48 #define SPD_CAS_LAT      18   /* SDRAM Device Attributes -- CAS Latency */
49         #define SPD_CAS_LAT_2   (1<<2)
50         #define SPD_CAS_LAT_3   (1<<3)
51         #define SPD_CAS_LAT_4   (1<<4)
52         #define SPD_CAS_LAT_5   (1<<5)
53         #define SPD_CAS_LAT_6   (1<<6)
54
55 #define SPD_TRP         27  /* bit [7:2] = 1-63 ns, bit [1:0] 0.25ns+, final value ((val>>2) + (val & 3) * 0.25)ns */
56 #define SPD_TRRD        28
57 #define SPD_TRCD        29
58 #define SPD_TRAS        30
59 #define SPD_TWR         36            /* x */
60 #define SPD_TWTR        37            /* x */
61 #define SPD_TRTP        38            /* x */  
62
63 #define SPD_TRC         41            /* add byte 0x40 bit [3:1] , so final val41+ table[((val40>>1) & 0x7)]  ... table[]={0, 0.25, 0.33, 0.5, 0.75, 0, 0}*/
64 #define SPD_TRFC        42            /* add byte 0x40 bit [6:4] , so final val42+ table[((val40>>4) & 0x7)] + (val40 & 1)*256*/
65
66 #define SPD_TREF        12