summaryrefslogtreecommitdiff
path: root/src/mainboard/lenovo
diff options
context:
space:
mode:
authorKyösti Mälkki <kyosti.malkki@gmail.com>2016-11-18 19:59:23 +0200
committerKyösti Mälkki <kyosti.malkki@gmail.com>2016-11-20 21:24:13 +0100
commite258b9a2d52bb31d99405cad4b44047022dc4007 (patch)
treeb9677cb2213830e0e939d1915a5ee7616c7f12e0 /src/mainboard/lenovo
parent38cb82222c9bc5cfae9c679ee4171fae3947b067 (diff)
intel sandy/ivy: Improve DIMM replacement detection
When MRC cache is available, first read only the SPD unique identifier bytes required to detect possible DIMM replacement. As this is 11 vs 256 bytes with slow SMBus operations, we save about 70ms for every installed DIMM on normal boot path. In the DIMM replacement case this adds some 10ms per installed DIMM as some SPD gets read twice, but we are on slow RAM training boot path anyways. Change-Id: I294a56e7b7562c3dea322c644b21a15abb033870 Signed-off-by: Kyösti Mälkki <kyosti.malkki@gmail.com> Reviewed-on: https://review.coreboot.org/17491 Tested-by: build bot (Jenkins) Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net> Reviewed-by: Aaron Durbin <adurbin@chromium.org> Reviewed-by: Patrick Rudolph <siro@das-labor.org>
Diffstat (limited to 'src/mainboard/lenovo')
-rw-r--r--src/mainboard/lenovo/t420/romstage.c6
-rw-r--r--src/mainboard/lenovo/t420s/romstage.c6
-rw-r--r--src/mainboard/lenovo/t430s/romstage.c6
-rw-r--r--src/mainboard/lenovo/t520/romstage.c6
-rw-r--r--src/mainboard/lenovo/t530/romstage.c6
-rw-r--r--src/mainboard/lenovo/x220/romstage.c6
-rw-r--r--src/mainboard/lenovo/x230/romstage.c6
7 files changed, 21 insertions, 21 deletions
diff --git a/src/mainboard/lenovo/t420/romstage.c b/src/mainboard/lenovo/t420/romstage.c
index ec5fec5e90..d25ce45328 100644
--- a/src/mainboard/lenovo/t420/romstage.c
+++ b/src/mainboard/lenovo/t420/romstage.c
@@ -60,10 +60,10 @@ const struct southbridge_usb_port mainboard_usb_ports[] = {
{ 1, 1, -1 }, /* P13: camera (LCD), no OC */
};
-void mainboard_get_spd(spd_raw_data *spd)
+void mainboard_get_spd(spd_raw_data *spd, bool id_only)
{
- read_spd(&spd[0], 0x50);
- read_spd(&spd[2], 0x51);
+ read_spd(&spd[0], 0x50, id_only);
+ read_spd(&spd[2], 0x51, id_only);
}
void mainboard_early_init(int s3resume)
diff --git a/src/mainboard/lenovo/t420s/romstage.c b/src/mainboard/lenovo/t420s/romstage.c
index e5e14164e8..27b45fd361 100644
--- a/src/mainboard/lenovo/t420s/romstage.c
+++ b/src/mainboard/lenovo/t420s/romstage.c
@@ -63,9 +63,9 @@ const struct southbridge_usb_port mainboard_usb_ports[] = {
{ 1, 1, -1 }, /* P13: camera (LCD), no OC */
};
-void mainboard_get_spd(spd_raw_data *spd) {
- read_spd(&spd[0], 0x50);
- read_spd(&spd[2], 0x51);
+void mainboard_get_spd(spd_raw_data *spd, bool id_only) {
+ read_spd(&spd[0], 0x50, id_only);
+ read_spd(&spd[2], 0x51, id_only);
}
void mainboard_early_init(int s3resume) {
diff --git a/src/mainboard/lenovo/t430s/romstage.c b/src/mainboard/lenovo/t430s/romstage.c
index d1bcc3bf1d..92f9e6263f 100644
--- a/src/mainboard/lenovo/t430s/romstage.c
+++ b/src/mainboard/lenovo/t430s/romstage.c
@@ -63,9 +63,9 @@ const struct southbridge_usb_port mainboard_usb_ports[] = {
{ 1, 1, -1 }, /* P13: camera, no OC */
};
-void mainboard_get_spd(spd_raw_data *spd) {
- read_spd(&spd[0], 0x50);
- read_spd(&spd[2], 0x51);
+void mainboard_get_spd(spd_raw_data *spd, bool id_only) {
+ read_spd(&spd[0], 0x50, id_only);
+ read_spd(&spd[2], 0x51, id_only);
}
void mainboard_early_init(int s3resume) {
diff --git a/src/mainboard/lenovo/t520/romstage.c b/src/mainboard/lenovo/t520/romstage.c
index 34171e0a7b..5ba487321c 100644
--- a/src/mainboard/lenovo/t520/romstage.c
+++ b/src/mainboard/lenovo/t520/romstage.c
@@ -78,9 +78,9 @@ const struct southbridge_usb_port mainboard_usb_ports[] = {
{ 1, 1, -1 }, /* P13: CAMERA (LCD), no OC */
};
-void mainboard_get_spd(spd_raw_data *spd) {
- read_spd (&spd[0], 0x50);
- read_spd (&spd[2], 0x51);
+void mainboard_get_spd(spd_raw_data *spd, bool id_only) {
+ read_spd (&spd[0], 0x50, id_only);
+ read_spd (&spd[2], 0x51, id_only);
}
void mainboard_early_init(int s3resume) {
diff --git a/src/mainboard/lenovo/t530/romstage.c b/src/mainboard/lenovo/t530/romstage.c
index 7bbb2a8b15..3d603c5d6d 100644
--- a/src/mainboard/lenovo/t530/romstage.c
+++ b/src/mainboard/lenovo/t530/romstage.c
@@ -65,9 +65,9 @@ const struct southbridge_usb_port mainboard_usb_ports[] = {
{ 1, 1, -1 }, /* P13: camera, no OC */
};
-void mainboard_get_spd(spd_raw_data *spd) {
- read_spd (&spd[0], 0x50);
- read_spd (&spd[2], 0x51);
+void mainboard_get_spd(spd_raw_data *spd, bool id_only) {
+ read_spd (&spd[0], 0x50, id_only);
+ read_spd (&spd[2], 0x51, id_only);
}
void mainboard_early_init(int s3resume) {
diff --git a/src/mainboard/lenovo/x220/romstage.c b/src/mainboard/lenovo/x220/romstage.c
index 71ed1a8007..5a1c90af77 100644
--- a/src/mainboard/lenovo/x220/romstage.c
+++ b/src/mainboard/lenovo/x220/romstage.c
@@ -75,10 +75,10 @@ const struct southbridge_usb_port mainboard_usb_ports[] = {
{ 1, 1, 6 },
};
-void mainboard_get_spd(spd_raw_data *spd)
+void mainboard_get_spd(spd_raw_data *spd, bool id_only)
{
- read_spd (&spd[0], 0x50);
- read_spd (&spd[2], 0x51);
+ read_spd (&spd[0], 0x50, id_only);
+ read_spd (&spd[2], 0x51, id_only);
}
void mainboard_early_init(int s3resume)
diff --git a/src/mainboard/lenovo/x230/romstage.c b/src/mainboard/lenovo/x230/romstage.c
index a2c43e0ac0..53ad9ac61a 100644
--- a/src/mainboard/lenovo/x230/romstage.c
+++ b/src/mainboard/lenovo/x230/romstage.c
@@ -78,9 +78,9 @@ const struct southbridge_usb_port mainboard_usb_ports[] = {
{ 1, 1, -1 }, /* P13: webcam, no OC */
};
-void mainboard_get_spd(spd_raw_data *spd) {
- read_spd (&spd[0], 0x50);
- read_spd (&spd[2], 0x51);
+void mainboard_get_spd(spd_raw_data *spd, bool id_only) {
+ read_spd (&spd[0], 0x50, id_only);
+ read_spd (&spd[2], 0x51, id_only);
}
void mainboard_early_init(int s3resume) {