diff options
author | Arthur Heymans <arthur@aheymans.xyz> | 2018-08-20 11:27:41 +0200 |
---|---|---|
committer | Arthur Heymans <arthur@aheymans.xyz> | 2018-08-21 11:54:51 +0000 |
commit | 1f6369e333cd54220ac359ea98529a028a8e9862 (patch) | |
tree | e831564f74129acd5e7a3c9141a3ae9afa5125b6 | |
parent | 38eb0ecca5d641e55bb3c01d34ddc21b693c70b7 (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.c | 17 |
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); } |