summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArthur Heymans <arthur@aheymans.xyz>2018-08-20 11:27:41 +0200
committerArthur Heymans <arthur@aheymans.xyz>2018-08-21 11:54:51 +0000
commit1f6369e333cd54220ac359ea98529a028a8e9862 (patch)
treee831564f74129acd5e7a3c9141a3ae9afa5125b6
parent38eb0ecca5d641e55bb3c01d34ddc21b693c70b7 (diff)
nb/intel/pineview: Use i2c block read to fetch SPD
With this the time spend during the raminit decreases from ~480ms to ~126ms. Change-Id: Ic23f39f1017010c89795e626f6a6f918f8bda17a Signed-off-by: Arthur Heymans <arthur@aheymans.xyz> Reviewed-on: https://review.coreboot.org/28229 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Felix Held <felix-coreboot@felixheld.de>
-rw-r--r--src/northbridge/intel/pineview/raminit.c17
1 files changed, 5 insertions, 12 deletions
diff --git a/src/northbridge/intel/pineview/raminit.c b/src/northbridge/intel/pineview/raminit.c
index 2a1e34cea2..f1e0767d9a 100644
--- a/src/northbridge/intel/pineview/raminit.c
+++ b/src/northbridge/intel/pineview/raminit.c
@@ -271,20 +271,13 @@ static void find_ramconfig(struct sysinfo *s, u32 chan)
static void sdram_read_spds(struct sysinfo *s)
{
- u8 i, j, chan;
- int status = 0;
+ u8 i, chan;
s->dt0mode = 0;
FOR_EACH_DIMM(i) {
- for (j = 0; j < 64; j++) {
- status = spd_read_byte(s->spd_map[i], j);
- if (status < 0) {
- s->dimms[i].card_type = 0;
- break;
- }
- s->dimms[i].spd_data[j] = (u8) status;
- if (j == 62)
- s->dimms[i].card_type = ((u8) status) & 0x1f;
- }
+ if (i2c_block_read(s->spd_map[i], 0, 64, s->dimms[i].spd_data) != 64)
+ s->dimms[i].card_type = 0;
+
+ s->dimms[i].card_type = s->dimms[i].spd_data[62] & 0x1f;
hexdump(s->dimms[i].spd_data, 64);
}