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>
This commit is contained in:
parent
38eb0ecca5
commit
1f6369e333
|
@ -271,20 +271,13 @@ static void find_ramconfig(struct sysinfo *s, u32 chan)
|
||||||
|
|
||||||
static void sdram_read_spds(struct sysinfo *s)
|
static void sdram_read_spds(struct sysinfo *s)
|
||||||
{
|
{
|
||||||
u8 i, j, chan;
|
u8 i, chan;
|
||||||
int status = 0;
|
|
||||||
s->dt0mode = 0;
|
s->dt0mode = 0;
|
||||||
FOR_EACH_DIMM(i) {
|
FOR_EACH_DIMM(i) {
|
||||||
for (j = 0; j < 64; j++) {
|
if (i2c_block_read(s->spd_map[i], 0, 64, s->dimms[i].spd_data) != 64)
|
||||||
status = spd_read_byte(s->spd_map[i], j);
|
s->dimms[i].card_type = 0;
|
||||||
if (status < 0) {
|
|
||||||
s->dimms[i].card_type = 0;
|
s->dimms[i].card_type = s->dimms[i].spd_data[62] & 0x1f;
|
||||||
break;
|
|
||||||
}
|
|
||||||
s->dimms[i].spd_data[j] = (u8) status;
|
|
||||||
if (j == 62)
|
|
||||||
s->dimms[i].card_type = ((u8) status) & 0x1f;
|
|
||||||
}
|
|
||||||
hexdump(s->dimms[i].spd_data, 64);
|
hexdump(s->dimms[i].spd_data, 64);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue