2 * This file is part of the coreboot project.
4 * Copyright (C) 2007 Advanced Micro Devices, Inc.
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; version 2 of the License.
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
24 #if CONFIG_DIMM_SUPPORT==0x0110
26 /* each channel can have 8 fbdimm */
27 #define DIMM_SOCKETS 8
28 struct mem_controller {
30 device_t f0, f1, f2, f3, f4, f5;
31 /* channelA, channelB belong to DCT0,
32 * channelC, channelD belong to DCT1
33 * Each DCT may support one ganged logical FBDIMM ---> 128 bit
34 * or a single unganged channel --->64 bit
35 * a DCT can not support 2 unganged channels
36 * two DCTs can not be ganged
39 u8 spd_addr[DIMM_SOCKETS*4];
45 //#if (CONFIG_DIMM_SUPPORT & 0x00ff)==0x0004
46 //DDR2 REG and unbuffered : Socket F 1027 and AM3
47 /* every channel have 4 DDR2 DIMM for socket F
51 #define DIMM_SOCKETS 4
52 struct mem_controller {
54 device_t f0, f1, f2, f3, f4, f5;
55 /* channel0 is DCT0 --- channelA
56 * channel1 is DCT1 --- channelB
57 * can be ganged, a single dual-channel DCT ---> 128 bit
58 * or unganged a two single-channel DCTs ---> 64bit
59 * When the DCTs are ganged, the writes to DCT1 set of registers
60 * (F2x1XX) are ignored and reads return all 0's
61 * The exception is the DCT phy registers, F2x[1,0]98, F2x[1,0]9C,
62 * and all the associated indexed registers, are still
63 * independently accessiable
65 /* FIXME: I will only support ganged mode for easy support */
67 u8 spd_addr[DIMM_SOCKETS*2];