summaryrefslogtreecommitdiff
path: root/src/southbridge/intel/lynxpoint/smi.c
diff options
context:
space:
mode:
authorDuncan Laurie <dlaurie@chromium.org>2014-02-10 11:34:27 -0800
committerAaron Durbin <adurbin@google.com>2014-02-18 18:22:51 +0100
commit0d0b3c5467192a101faaaebcace4ca390c2a5646 (patch)
tree0ac86330d27d9017808d1795d1cb9b4fded5d965 /src/southbridge/intel/lynxpoint/smi.c
parent970ad7076388b3ef98988121170df86196d493b4 (diff)
lynxpoint: Finalize chipset before playload if not CONFIG_CHROMEOS
The Chrome OS environment sends an SMI to finalize the chipset/board at the end of the "depthcharge" payload, but there is no facility to send this command if not using the full ChromeOS firmware stack. This commit adds a callback before booting the payload that will issue this SMI which will lock down the chipset and route USB devices to the XHCI controller. Change-Id: I2db9c44d61ebf8fa28a8a2b260a63d4aa4d75842 Signed-off-by: Duncan Laurie <dlaurie@chromium.org> Reviewed-on: http://review.coreboot.org/5181 Tested-by: build bot (Jenkins) Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net> Reviewed-by: Ronald G. Minnich <rminnich@gmail.com>
Diffstat (limited to 'src/southbridge/intel/lynxpoint/smi.c')
-rw-r--r--src/southbridge/intel/lynxpoint/smi.c19
1 files changed, 18 insertions, 1 deletions
diff --git a/src/southbridge/intel/lynxpoint/smi.c b/src/southbridge/intel/lynxpoint/smi.c
index 75c3e66743..af40eaf020 100644
--- a/src/southbridge/intel/lynxpoint/smi.c
+++ b/src/southbridge/intel/lynxpoint/smi.c
@@ -19,7 +19,7 @@
* MA 02110-1301 USA
*/
-
+#include <bootstate.h>
#include <device/device.h>
#include <device/pci.h>
#include <console/console.h>
@@ -124,3 +124,20 @@ void smm_setup_structures(void *gnvs, void *tcg, void *smi1)
"d" (APM_CNT)
);
}
+
+/*
+ * Finalize system before payload boot if not in ChromeOS environment.
+ */
+#if !CONFIG_CHROMEOS
+
+static void finalize_boot(void *unused)
+{
+ outb(0xcb, 0xb2);
+}
+
+BOOT_STATE_INIT_ENTRIES(finalize) = {
+ BOOT_STATE_INIT_ENTRY(BS_PAYLOAD_BOOT, BS_ON_ENTRY,
+ finalize_boot, NULL),
+};
+
+#endif