coreboot/src
Nicola Corna 76f8dbc4f7 device/dram/ddr3: add FTB timings
SPD revision 1.1 introduced FTB timings, an extra set of SPD values that
specify a more precise tCKmin, tAAmin, tRCDmin, tRPmin and tRCmin.

For backwards compatibility, the MTB is usually rounded up and the FTB
part is negative. For this reason some memories were not set up optimally,
as the FTB part was ignored and the resulting timing wasn't set to the
minimum value.

The tests were performed on a Lenovo X220 with two Micron 8KTF51264HZ-1G9E
(1866 MHz): reading only the MTB part, coreboot reports a tCKmin of
1.125 ns, corresponding to a working frequency of 800 MHz; with the
additional tCKmin FTB part (-0.054 ns) the new (rounded) value is
1.070 ns, valid for a 933 MHz operation.

Tested also with Ballistix DDR3-1866 SODIMM on Lenovo T420: the memory is
now detected as DDR3-1866 instead of DDR3-1600.

Some manufacturers (like Micron) seems to expect a small rounding on the
timings, so a nearest-value rounding is performed. If this assumption
isn't correct, an error up to ~2 ps can be committed, which is low enough
to be safely ignored.

Change-Id: Ib98f2e70820f207429d04ca6421680109a81f457
Signed-off-by: Nicola Corna <nicola@corna.info>
Reviewed-on: https://review.coreboot.org/17476
Tested-by: build bot (Jenkins)
Reviewed-by: Patrick Rudolph <siro@das-labor.org>
Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net>
2016-12-27 18:18:04 +01:00
..
acpi src/acpi: Capitalize ACPI and SATA 2016-07-31 19:25:40 +02:00
arch soc/intel/apollolake: allow ApolloLake SoC to use FSP CAR Init 2016-12-21 00:11:24 +01:00
commonlib buildsystem: Drop explicit (k)config.h includes 2016-12-08 19:46:53 +01:00
console console: Enable do_printk_va_list for VBOOT 2016-12-27 18:07:39 +01:00
cpu cpu/intel/common: Add/Use common function to set virtualization 2016-12-27 02:30:08 +01:00
device device/dram/ddr3: add FTB timings 2016-12-27 18:18:04 +01:00
drivers spi: Get rid of SPI_ATOMIC_SEQUENCING 2016-12-23 04:54:55 +01:00
ec ec/ene932: correct ACPI battery data fed into ToString() 2016-12-15 23:39:04 +01:00
include spi: Get rid of SPI_ATOMIC_SEQUENCING 2016-12-23 04:54:55 +01:00
lib lib/spd_bin: Check return code & remove dead code 2016-12-14 18:58:03 +01:00
mainboard google/eve: Enable internal pull-up on PWRBTN# 2016-12-26 17:40:07 +01:00
northbridge nb/i945/early_init.c: Add FSB800 and 1067 to Egress Port Virtual Channel 2016-12-21 00:05:10 +01:00
soc cpu/intel/common: Add/Use common function to set virtualization 2016-12-27 02:30:08 +01:00
southbridge spi: Get rid of SPI_ATOMIC_SEQUENCING 2016-12-23 04:54:55 +01:00
superio sio/ite/it8783ef: Return (0) in ACPI _PSC methods 2016-12-13 22:49:24 +01:00
vboot lib/cbmem: allow anyone to use cbmem_possibly_online() 2016-12-15 23:11:13 +01:00
vendorcode AMD binaryPI: Promote rules.h to default include 2016-12-18 20:53:33 +01:00
Kconfig ACPI S3: Flip ACPI_HUGE_LOWMEM_BACKUP default 2016-12-11 09:12:48 +01:00