diff --git a/src/northbridge/intel/sandybridge/raminit.c b/src/northbridge/intel/sandybridge/raminit.c index 9ec8fb6f6e..cd6d173046 100644 --- a/src/northbridge/intel/sandybridge/raminit.c +++ b/src/northbridge/intel/sandybridge/raminit.c @@ -143,11 +143,16 @@ static void read_spd(spd_ddr3_raw_data *spd, u8 addr, bool id_only) { int j; if (id_only) { - for (j = SPD_DDR3_MOD_ID1; j < 128; j++) - (*spd)[j] = smbus_read_byte(addr, j); + u8 *dest = &(*spd)[SPD_DDR3_MOD_ID1]; + if (i2c_eeprom_read(addr, SPD_DDR3_MOD_ID1, 128 - SPD_DDR3_MOD_ID1, dest) < 0) { + for (j = SPD_DDR3_MOD_ID1; j < 128; j++) + (*spd)[j] = smbus_read_byte(addr, j); + } } else { - for (j = 0; j < SPD_SIZE_MAX_DDR3; j++) - (*spd)[j] = smbus_read_byte(addr, j); + if (i2c_eeprom_read(addr, 0, SPD_SIZE_MAX_DDR3, *spd) < 0) { + for (j = 0; j < SPD_SIZE_MAX_DDR3; j++) + (*spd)[j] = smbus_read_byte(addr, j); + } } }