[coreboot-gerrit] Patch set updated for coreboot: drivers/intel/fsp2_0: Handle FspNotify calls

Lee Leahy (leroy.p.leahy@intel.com) gerrit at coreboot.org
Tue Aug 2 02:30:51 CEST 2016


Lee Leahy (leroy.p.leahy at intel.com) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/15855

-gerrit

commit 2593d519e92ee877c83d6fb9cf5583c00fd88ae4
Author: Lee Leahy <leroy.p.leahy at intel.com>
Date:   Mon Aug 1 13:55:02 2016 -0700

    drivers/intel/fsp2_0: Handle FspNotify calls
    
    Other SOC platforms need to handle the FspNotify calls in the same way
    as Apollo Lake.  Migrate the FspNotify calls into the FSP 2.0 driver.
    Provide a platform callback to handle anything else that needs to be
    done after the FspNotify call.
    
    TEST=Build and run on Galileo Gen2
    
    Change-Id: I1ff327d77516d4ea212740c16c2514c2908758a2
    Signed-off-by: Lee Leahy <leroy.p.leahy at intel.com>
---
 src/drivers/intel/fsp2_0/include/fsp/api.h |  4 +++-
 src/drivers/intel/fsp2_0/notify.c          | 27 ++++++++++++++++++++++++++-
 src/soc/intel/apollolake/chip.c            | 21 +++------------------
 3 files changed, 32 insertions(+), 20 deletions(-)

diff --git a/src/drivers/intel/fsp2_0/include/fsp/api.h b/src/drivers/intel/fsp2_0/include/fsp/api.h
index 1348ead..a6228f2 100644
--- a/src/drivers/intel/fsp2_0/include/fsp/api.h
+++ b/src/drivers/intel/fsp2_0/include/fsp/api.h
@@ -62,12 +62,14 @@ enum fsp_notify_phase {
 /* Main FSP stages */
 void fsp_memory_init(bool s3wake);
 void fsp_silicon_init(void);
-void fsp_notify(enum fsp_notify_phase phase);
 
 /* Callbacks for updating stage-specific parameters */
 void platform_fsp_memory_init_params_cb(struct FSPM_UPD *mupd);
 void platform_fsp_silicon_init_params_cb(struct FSPS_UPD *supd);
 
+/* Callback after processing FSP notify */
+void platform_fsp_notify_status(enum fsp_notify_phase phase);
+
 /*
  * # DOCUMENTATION:
  *
diff --git a/src/drivers/intel/fsp2_0/notify.c b/src/drivers/intel/fsp2_0/notify.c
index 880c44d..1513596 100644
--- a/src/drivers/intel/fsp2_0/notify.c
+++ b/src/drivers/intel/fsp2_0/notify.c
@@ -11,13 +11,14 @@
  */
 
 #include <arch/cpu.h>
+#include <bootstate.h>
 #include <console/console.h>
 #include <fsp/api.h>
 #include <fsp/util.h>
 #include <string.h>
 #include <timestamp.h>
 
-void fsp_notify(enum fsp_notify_phase phase)
+static void fsp_notify(enum fsp_notify_phase phase)
 {
 	enum fsp_status ret;
 	fsp_notify_fn fspnotify;
@@ -55,4 +56,28 @@ void fsp_notify(enum fsp_notify_phase phase)
 		printk(BIOS_SPEW, "FspNotify returned 0x%08x\n", ret);
 		die("FspNotify returned an error!\n");
 	}
+
+	/* Allow the platform to run something after FspNotify */
+	platform_fsp_notify_status(phase);
+}
+
+static void fsp_notify_dummy(void *arg)
+{
+	enum fsp_notify_phase phase = (uint32_t)arg;
+
+	fsp_notify(phase);
+	if (phase == READY_TO_BOOT)
+		fsp_notify(END_OF_FIRMWARE);
+}
+
+BOOT_STATE_INIT_ENTRY(BS_DEV_RESOURCES, BS_ON_EXIT, fsp_notify_dummy,
+						(void *) AFTER_PCI_ENUM);
+BOOT_STATE_INIT_ENTRY(BS_PAYLOAD_LOAD, BS_ON_EXIT, fsp_notify_dummy,
+						(void *) READY_TO_BOOT);
+BOOT_STATE_INIT_ENTRY(BS_OS_RESUME, BS_ON_ENTRY, fsp_notify_dummy,
+						(void *) READY_TO_BOOT);
+
+__attribute__((weak)) void platform_fsp_notify_status(
+	enum fsp_notify_phase phase)
+{
 }
diff --git a/src/soc/intel/apollolake/chip.c b/src/soc/intel/apollolake/chip.c
index 812f663..345d7c4 100644
--- a/src/soc/intel/apollolake/chip.c
+++ b/src/soc/intel/apollolake/chip.c
@@ -406,28 +406,13 @@ struct chip_operations soc_intel_apollolake_ops = {
 	.final = &soc_final
 };
 
-static void fsp_notify_dummy(void *arg)
+void platform_fsp_notify_status(enum fsp_notify_phase phase)
 {
-
-	enum fsp_notify_phase ph = (enum fsp_notify_phase) arg;
-
-	fsp_notify(ph);
-
-	/* Call END_OF_FIRMWARE Notify after READY_TO_BOOT Notify */
-	if (ph == READY_TO_BOOT) {
-		fsp_notify_dummy((void *)END_OF_FIRMWARE);
-		/* Hide the P2SB device to align with previous behavior. */
+	/* Hide the P2SB device to align with previous behavior. */
+	if (phase == END_OF_FIRMWARE)
 		p2sb_hide();
-	}
 }
 
-BOOT_STATE_INIT_ENTRY(BS_DEV_RESOURCES, BS_ON_EXIT, fsp_notify_dummy,
-						(void *) AFTER_PCI_ENUM);
-BOOT_STATE_INIT_ENTRY(BS_PAYLOAD_LOAD, BS_ON_EXIT, fsp_notify_dummy,
-						(void *) READY_TO_BOOT);
-BOOT_STATE_INIT_ENTRY(BS_OS_RESUME, BS_ON_ENTRY, fsp_notify_dummy,
-						(void *) READY_TO_BOOT);
-
 /*
  * spi_init() needs to run unconditionally on every boot (including resume) to
  * allow write protect to be disabled for eventlog and nvram updates. This needs



More information about the coreboot-gerrit mailing list