diff options
Diffstat (limited to 'src/northbridge')
-rw-r--r-- | src/northbridge/intel/haswell/raminit.c | 7 | ||||
-rw-r--r-- | src/northbridge/intel/haswell/raminit.h | 2 |
2 files changed, 6 insertions, 3 deletions
diff --git a/src/northbridge/intel/haswell/raminit.c b/src/northbridge/intel/haswell/raminit.c index d84d3fb12a..1f84ffa5cb 100644 --- a/src/northbridge/intel/haswell/raminit.c +++ b/src/northbridge/intel/haswell/raminit.c @@ -347,8 +347,11 @@ void perform_raminit(const int s3resume) struct spd_info spdi = {0}; mb_get_spd_map(&spdi); - for (size_t i = 0; i < ARRAY_SIZE(spdi.addresses); i++) - pei_data.spd_addresses[i] = spdi.addresses[i]; + /* MRC expects left-aligned SMBus addresses, and 0xff for memory-down */ + for (size_t i = 0; i < ARRAY_SIZE(spdi.addresses); i++) { + const uint8_t addr = spdi.addresses[i]; + pei_data.spd_addresses[i] = addr == SPD_MEMORY_DOWN ? 0xff : addr << 1; + } /* Calculate unimplemented DIMM slots for each channel */ pei_data.dimm_channel0_disabled = make_channel_disabled_mask(&pei_data, 0); diff --git a/src/northbridge/intel/haswell/raminit.h b/src/northbridge/intel/haswell/raminit.h index 7eb3980544..ab245d85a1 100644 --- a/src/northbridge/intel/haswell/raminit.h +++ b/src/northbridge/intel/haswell/raminit.h @@ -17,7 +17,7 @@ struct spd_info { extern const struct usb2_port_setting mainboard_usb2_ports[MAX_USB2_PORTS]; extern const struct usb3_port_setting mainboard_usb3_ports[MAX_USB3_PORTS]; -/* Mainboard callback to fill in the SPD addresses in MRC format */ +/* Mainboard callback to fill in the SPD addresses */ void mb_get_spd_map(struct spd_info *spdi); void perform_raminit(const int s3resume); |