Stefan Reinauer (stefan.reinauer(a)coreboot.org) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/10012
-gerrit
commit f2ada5c7a7d2157670ef758e5517e6f7dc1fd999
Author: Stefan Reinauer <reinauer(a)chromium.org>
Date: Mon Apr 27 13:40:16 2015 -0700
cpu/x86: Kconfig cleanups
Sort some Kconfig options
Change-Id: I25ea327ed151e18ccb5d13626d44925d2a253d08
Signed-off-by: Stefan Reinauer <stefan.reinauer(a)coreboot.org>
---
src/cpu/x86/Kconfig | 23 ++++++++++++++---------
1 file changed, 14 insertions(+), 9 deletions(-)
diff --git a/src/cpu/x86/Kconfig b/src/cpu/x86/Kconfig
index 94225a3..d8f338d 100644
--- a/src/cpu/x86/Kconfig
+++ b/src/cpu/x86/Kconfig
@@ -1,7 +1,16 @@
+# TODO These two options look too similar
config PARALLEL_CPU_INIT
bool
default n
+config PARALLEL_MP
+ def_bool n
+ help
+ This option uses common MP infrastructure for bringing up APs
+ in parallel. It additionally provides a more flexible mechanism
+ for sequencing the steps of bringing up the APs.
+
+
config UDELAY_IO
bool
default y if !UDELAY_LAPIC && !UDELAY_TSC && !UDELAY_TIMER2
@@ -39,11 +48,14 @@ config TSC_MONOTONIC_TIMER
help
Expose monotonic time using the TSC.
-config UDELAY_TIMER2
+# This option is used in code but never selected.
+config TSC_CALIBRATE_WITH_IO
bool
+ depends on UDELAY_TSC
default n
-config TSC_CALIBRATE_WITH_IO
+# This option is used in code but never selected.
+config UDELAY_TIMER2
bool
default n
@@ -121,13 +133,6 @@ config PLATFORM_USES_FSP1_0
Selected for Intel processors/platform combinations that use the
Intel Firmware Support Package (FSP) 1.0 for initialization.
-config PARALLEL_MP
- def_bool n
- help
- This option uses common MP infrastructure for bringing up APs
- in parallel. It additionally provides a more flexible mechanism
- for sequencing the steps of bringing up the APs.
-
config BACKUP_DEFAULT_SMM_REGION
def_bool n
help
Andrey Petrov (andrey.petrov(a)intel.com) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/13800
-gerrit
commit ec2f79e0ca0e3afea9a494f3199037607e02fe83
Author: Andrey Petrov <andrey.petrov(a)intel.com>
Date: Thu Feb 25 14:19:07 2016 -0800
FSP2.0: Add Notify Phase API
This adds Notify Phase API. This is an important call that is used
to inform FSP runtimes of different stages of SoC initializations
by the coreboot.
Change-Id: Icec770d0c1c4d239adb2ef342bf6cc9c35666e4d
Signed-off-by: Andrey Petrov <andrey.petrov(a)intel.com>
---
src/drivers/intel/fsp2_0/notify.c | 41 +++++++++++++++++++++++++++++++++++++++
1 file changed, 41 insertions(+)
diff --git a/src/drivers/intel/fsp2_0/notify.c b/src/drivers/intel/fsp2_0/notify.c
new file mode 100644
index 0000000..c5f06db
--- /dev/null
+++ b/src/drivers/intel/fsp2_0/notify.c
@@ -0,0 +1,41 @@
+/*
+ * This file is part of the coreboot project.
+ *
+ * Copyright (C) 2015 Intel Corp.
+ * (Written by Andrey Petrov <andrey.petrov(a)intel.com> for Intel Corp.)
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ */
+
+#include <arch/cpu.h>
+#include <console/console.h>
+#include <fsp/api.h>
+#include <fsp/util.h>
+#include <string.h>
+
+typedef struct fsp_notify_params {
+ enum fsp_notify_phase phase;
+} NOTIFY_PHASE_PARAMS;
+
+typedef asmlinkage enum fsp_status (*fsp_notify_fn)
+ (struct fsp_notify_params *);
+
+struct fsp_header *fsps_hdr = NULL;
+
+enum fsp_status fsp_notify(enum fsp_notify_phase phase)
+{
+ fsp_notify_fn fspnotify = NULL;
+
+ if (!fsps_hdr)
+ return FSP_NOT_FOUND;
+
+ fspnotify = (void*) (fsps_hdr->image_base +
+ fsps_hdr->notify_phase_entry_offset);
+
+ printk(BIOS_DEBUG, "FspNotify %x\n", (uint32_t) phase);
+
+ return fspnotify((struct fsp_notify_params *) &phase);
+}
Andrey Petrov (andrey.petrov(a)intel.com) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/13799
-gerrit
commit d09456a1d6cd241e90ad6046eadc2faf91e81e9f
Author: Andrey Petrov <andrey.petrov(a)intel.com>
Date: Thu Feb 25 14:17:45 2016 -0800
FSP2.0: Add SiliconInit API
This adds SiliconInit API that is needed to be called after memory
has been trained. This call is needed to let the blob do various
initialisations of IP blocks.
Change-Id: I35e02f22174c8392e55ac869265a19c4309932e5
Signed-off-by: Andrey Petrov <andrey.petrov(a)intel.com>
---
src/drivers/intel/fsp2_0/silicon_init.c | 57 +++++++++++++++++++++++++++++++++
1 file changed, 57 insertions(+)
diff --git a/src/drivers/intel/fsp2_0/silicon_init.c b/src/drivers/intel/fsp2_0/silicon_init.c
new file mode 100644
index 0000000..57ef05f
--- /dev/null
+++ b/src/drivers/intel/fsp2_0/silicon_init.c
@@ -0,0 +1,57 @@
+/*
+ * This file is part of the coreboot project.
+ *
+ * Copyright (C) 2015 Intel Corp.
+ * (Written by Andrey Petrov <andrey.petrov(a)intel.com> for Intel Corp.)
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ */
+
+#include <arch/cpu.h>
+#include <cbfs.h>
+#include <console/console.h>
+#include <fsp/api.h>
+#include <fsp/util.h>
+#include <memrange.h>
+#include <string.h>
+
+typedef asmlinkage enum fsp_status (*fsp_silicon_init_fn)
+ (struct FSPS_UPD *upd);
+
+extern struct fsp_header *fsps_hdr;
+
+static enum fsp_status do_silicon_init(struct fsp_header *hdr)
+{
+ struct FSPS_UPD *upd_region;
+ fsp_silicon_init_fn silicon_init;
+ enum fsp_status status;
+
+ /* UPD region is in RW memory, so it can be modified directly */
+ upd_region = (void *)
+ (hdr->cfg_region_offset + hdr->image_base);
+ silicon_init = (void *)
+ (hdr->image_base + hdr->silicon_init_entry_offset);
+
+ /* give a chance to populate entries */
+ platform_fsp_silicon_init_params_cb(upd_region);
+
+ status = silicon_init(upd_region);
+ printk(BIOS_DEBUG, "FspSiliconInit returned 0x%08x\n", status);
+ return status;
+}
+
+enum fsp_status fsp_silicon_init(struct range_entry *range)
+{
+ static struct fsp_header hdr;
+
+ if (fsp_load_binary(&hdr, CONFIG_FSP_S_FILE, range) != CB_SUCCESS)
+ return FSP_NOT_FOUND;
+
+ /* save the FSPS header, it will come in handy during notify */
+ fsps_hdr = &hdr;
+
+ return do_silicon_init(&hdr);
+}