aboutsummaryrefslogtreecommitdiff
path: root/src/northbridge/amd/amdmct/mct_ddr3/mctsdi.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/northbridge/amd/amdmct/mct_ddr3/mctsdi.c')
-rw-r--r--src/northbridge/amd/amdmct/mct_ddr3/mctsdi.c44
1 files changed, 44 insertions, 0 deletions
diff --git a/src/northbridge/amd/amdmct/mct_ddr3/mctsdi.c b/src/northbridge/amd/amdmct/mct_ddr3/mctsdi.c
index d8da16b4fe..670d640a6c 100644
--- a/src/northbridge/amd/amdmct/mct_ddr3/mctsdi.c
+++ b/src/northbridge/amd/amdmct/mct_ddr3/mctsdi.c
@@ -239,6 +239,19 @@ static uint8_t fam15_rttwr(struct DCTStatStruc *pDCTstat, uint8_t dct, uint8_t d
term = 0x2;
}
}
+ } else if (package_type == PT_FM2) {
+ /* Socket FM2: Fam15h Model10 BKDG 3.12 Table 32 */
+ if (MaxDimmsInstallable == 1) {
+ term = 0x0;
+ } else if (MaxDimmsInstallable == 2) {
+ if ((number_of_dimms == 2) && (frequency_index >= 0x12)) {
+ term = 0x1;
+ } else if (number_of_dimms == 1) {
+ term = 0x0;
+ } else {
+ term = 0x2;
+ }
+ }
} else {
/* TODO
* Other sockets unimplemented
@@ -606,6 +619,37 @@ static uint8_t fam15_rttnom(struct DCTStatStruc *pDCTstat, uint8_t dct, uint8_t
}
}
}
+ } else if (package_type == PT_FM2) {
+ /* Socket FM2: Fam15h Model10 BKDG 3.12 Table 32 */
+ if (MaxDimmsInstallable == 1) {
+ if ((frequency_index == 0x4)
+ || (frequency_index == 0x6)
+ || (frequency_index == 0xa))
+ term = 0x4;
+ else if (frequency_index == 0xe)
+ term = 0x3;
+ else if (frequency_index >= 0x12)
+ term = 0x2;
+ }
+ if (MaxDimmsInstallable == 2) {
+ if (number_of_dimms == 1) {
+ if (frequency_index <= 0xa) {
+ term = 0x4;
+ } else if (frequency_index <= 0xe) {
+ term = 0x3;
+ } else {
+ term = 0x2;
+ }
+ } else {
+ if (frequency_index <= 0xa) {
+ term = 0x2;
+ } else if (frequency_index <= 0xe) {
+ term = 0x1;
+ } else {
+ term = 0x0;
+ }
+ }
+ }
} else {
/* TODO
* Other sockets unimplemented