[coreboot-gerrit] Change in coreboot[master]: [TESTONLY] Use common mrc_cache on Thinkpad x200
Arthur Heymans (Code Review)
gerrit at coreboot.org
Sun Jan 7 20:48:52 CET 2018
Arthur Heymans has uploaded this change for review. ( https://review.coreboot.org/23147
Change subject: [TESTONLY] Use common mrc_cache on Thinkpad x200
......................................................................
[TESTONLY] Use common mrc_cache on Thinkpad x200
NOTFORMERGE.
Change-Id: I67fdb3fd1557e68bb2ed2b135c0b3a6a13783605
Signed-off-by: Arthur Heymans <arthur at aheymans.xyz>
---
M src/mainboard/lenovo/x200/romstage.c
M src/northbridge/intel/gm45/Kconfig
M src/northbridge/intel/gm45/raminit.c
M src/southbridge/intel/i82801ix/Kconfig
4 files changed, 34 insertions(+), 1 deletion(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/47/23147/1
diff --git a/src/mainboard/lenovo/x200/romstage.c b/src/mainboard/lenovo/x200/romstage.c
index d8ed039..bdb9252 100644
--- a/src/mainboard/lenovo/x200/romstage.c
+++ b/src/mainboard/lenovo/x200/romstage.c
@@ -33,6 +33,7 @@
#include <northbridge/intel/gm45/gm45.h>
#include "gpio.h"
#include <timestamp.h>
+#include <mrc_cache.h>
#define LPC_DEV PCI_DEV(0, 0x1f, 0)
#define MCH_DEV PCI_DEV(0, 0, 0)
@@ -162,6 +163,8 @@
outl(inl(DEFAULT_GPIOBASE + 0x38) & ~0x400, DEFAULT_GPIOBASE + 0x38);
cbmem_initted = !cbmem_recovery(s3resume);
+ mrc_cache_stash_data(MRC_TRAINING_DATA, 1, &sysinfo,
+ sizeof(sysinfo));
romstage_handoff_init(cbmem_initted && s3resume);
diff --git a/src/northbridge/intel/gm45/Kconfig b/src/northbridge/intel/gm45/Kconfig
index 85902d3..7e1e0e6 100644
--- a/src/northbridge/intel/gm45/Kconfig
+++ b/src/northbridge/intel/gm45/Kconfig
@@ -29,6 +29,7 @@
select RELOCATABLE_RAMSTAGE
select HAVE_LINEAR_FRAMEBUFFER if MAINBOARD_DO_NATIVE_VGA_INIT
select HAVE_VGA_TEXT_FRAMEBUFFER if MAINBOARD_DO_NATIVE_VGA_INIT
+ select CACHE_MRC_SETTINGS
config CBFS_SIZE
hex
diff --git a/src/northbridge/intel/gm45/raminit.c b/src/northbridge/intel/gm45/raminit.c
index a44e397..9895590 100644
--- a/src/northbridge/intel/gm45/raminit.c
+++ b/src/northbridge/intel/gm45/raminit.c
@@ -14,6 +14,7 @@
* GNU General Public License for more details.
*/
+#include <string.h>
#include <stdint.h>
#include <stdlib.h>
#include <arch/cpu.h>
@@ -26,9 +27,14 @@
#include <lib.h>
#include <delay.h>
#include <timestamp.h>
+#include <commonlib/region.h>
+#include <mrc_cache.h>
+#include <halt.h>
#include "gm45.h"
#include "chip.h"
+#define MRC_CACHE_VERSION 1
+
static const gmch_gfx_t gmch_gfx_types[][5] = {
/* MAX_667MHz MAX_533MHz MAX_400MHz MAX_333MHz MAX_800MHz */
{ GMCH_UNKNOWN, GMCH_UNKNOWN, GMCH_UNKNOWN, GMCH_UNKNOWN, GMCH_UNKNOWN },
@@ -1706,12 +1712,31 @@
{
const dimminfo_t *const dimms = sysinfo->dimms;
const timings_t *const timings = &sysinfo->selected_timings;
+ struct region_device rdev;
+ sysinfo_t *ctrl_cached;
int ch;
u8 reg8;
timestamp_add_now(TS_BEFORE_INITRAM);
+ int cache_not_found = mrc_cache_get_current(MRC_TRAINING_DATA,
+ MRC_CACHE_VERSION, &rdev);
+ if (cache_not_found || (region_device_sz(&rdev) < sizeof(*sysinfo))) {
+ if (s3resume) {
+ /* Failed S3 resume, reset to come up cleanly */
+ outb(0x6, 0xcf9);
+ halt();
+ }
+ ctrl_cached = NULL;
+ } else {
+ ctrl_cached = rdev_mmap_full(&rdev);
+ }
+
+ if (ctrl_cached) {
+ memcpy(sysinfo, ctrl_cached, sizeof(*sysinfo));
+ }
+
/* Wait for some bit, maybe TXT clear. */
if (sysinfo->txt_enabled) {
while (!(read8((u8 *)0xfed40000) & (1 << 7))) {}
@@ -1824,5 +1849,8 @@
raminit_thermal(sysinfo);
init_igd(sysinfo);
+ mrc_cache_stash_data(MRC_TRAINING_DATA, MRC_CACHE_VERSION, sysinfo,
+ sizeof(*sysinfo));
+
timestamp_add_now(TS_AFTER_INITRAM);
}
diff --git a/src/southbridge/intel/i82801ix/Kconfig b/src/southbridge/intel/i82801ix/Kconfig
index 6879bce..333de7f 100644
--- a/src/southbridge/intel/i82801ix/Kconfig
+++ b/src/southbridge/intel/i82801ix/Kconfig
@@ -18,6 +18,7 @@
bool
select SOUTHBRIDGE_INTEL_COMMON
select SOUTHBRIDGE_INTEL_COMMON_SMBUS
+ select SOUTHBRIDGE_INTEL_COMMON_SPI
select IOAPIC
select HAVE_USBDEBUG
select HAVE_HARD_RESET
@@ -25,7 +26,7 @@
select HAVE_SMI_HANDLER
select HAVE_USBDEBUG_OPTIONS
select SOUTHBRIDGE_INTEL_COMMON_GPIO
- select HAVE_INTEL_FIRMWARE
+ select HAVE_INTEL_FIRMWARE if !BOARD_EMULATION_QEMU_X86_Q35
if SOUTHBRIDGE_INTEL_I82801IX
--
To view, visit https://review.coreboot.org/23147
To unsubscribe, or for help writing mail filters, visit https://review.coreboot.org/settings
Gerrit-Project: coreboot
Gerrit-Branch: master
Gerrit-MessageType: newchange
Gerrit-Change-Id: I67fdb3fd1557e68bb2ed2b135c0b3a6a13783605
Gerrit-Change-Number: 23147
Gerrit-PatchSet: 1
Gerrit-Owner: Arthur Heymans <arthur at aheymans.xyz>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.coreboot.org/pipermail/coreboot-gerrit/attachments/20180107/f903d227/attachment-0001.html>
More information about the coreboot-gerrit
mailing list