[coreboot-gerrit] Change in coreboot[master]: ec/google/wilco: Add a bootblock function for early init

Duncan Laurie (Code Review) gerrit at coreboot.org
Tue Oct 16 00:54:35 CEST 2018


Duncan Laurie has uploaded this change for review. ( https://review.coreboot.org/29121


Change subject: ec/google/wilco: Add a bootblock function for early init
......................................................................

ec/google/wilco: Add a bootblock function for early init

Add a function for use in bootblock stage that performs early init
of the EC, in particular setting it up for UART passthrough so a
legacy serial port can be used by the host.

This needs to be called by the mainboard that intends to use it
in bootblock in order for the UART to be available in later stages.

Some of the PNP style programming may look odd, but it is following
the EC specification which is not entirely standard.  This code has
been tested on a board with this EC and it is functional.

Change-Id: I9d6935a9fdf0d7290a94bf2ee565ef2a7c00ecc7
Signed-off-by: Duncan Laurie <dlaurie at google.com>
---
M src/ec/google/wilco/Makefile.inc
A src/ec/google/wilco/bootblock.c
A src/ec/google/wilco/bootblock.h
3 files changed, 75 insertions(+), 0 deletions(-)



  git pull ssh://review.coreboot.org:29418/coreboot refs/changes/21/29121/1

diff --git a/src/ec/google/wilco/Makefile.inc b/src/ec/google/wilco/Makefile.inc
index 33eefd5..2e1c0d4 100644
--- a/src/ec/google/wilco/Makefile.inc
+++ b/src/ec/google/wilco/Makefile.inc
@@ -1,5 +1,6 @@
 ifeq ($(CONFIG_EC_GOOGLE_WILCO),y)
 
+bootblock-y += bootblock.c
 ramstage-y += chip.c commands.c mailbox.c
 smm-y += commands.c mailbox.c smihandler.c
 
diff --git a/src/ec/google/wilco/bootblock.c b/src/ec/google/wilco/bootblock.c
new file mode 100644
index 0000000..dadc5c9
--- /dev/null
+++ b/src/ec/google/wilco/bootblock.c
@@ -0,0 +1,52 @@
+/*
+ * This file is part of the coreboot project.
+ *
+ * Copyright 2018 Google LLC
+ *
+ * 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; version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ */
+
+#include <arch/io.h>
+#include <device/pnp_def.h>
+#include <swab.h>
+
+#include "bootblock.h"
+
+#define PNP_CFG_IDX	0x2e
+#define PNP_LDN_SERIAL	0x0d
+
+static void pnp_enter_conf_state(pnp_devfn_t dev)
+{
+	outb(0x55, PNP_CFG_IDX);
+	outb(0x55, PNP_CFG_IDX);
+}
+
+static void pnp_exit_conf_state(pnp_devfn_t dev)
+{
+	outb(0xaa, PNP_CFG_IDX);
+}
+
+static void wilco_ec_serial_init(void)
+{
+	pnp_devfn_t dev = PNP_DEV(PNP_CFG_IDX, PNP_LDN_SERIAL);
+
+	pnp_enter_conf_state(dev);
+	pnp_set_logical_device(dev);
+	pnp_set_enable(dev, 1);
+	pnp_set_iobase(dev, PNP_IDX_IO1, cpu_to_be16(CONFIG_TTYS0_BASE));
+	pnp_write_config(dev, PNP_IDX_IO0, 1);
+	pnp_exit_conf_state(dev);
+}
+
+void wilco_ec_early_init(void)
+{
+	if (IS_ENABLED(CONFIG_DRIVERS_UART_8250IO))
+		wilco_ec_serial_init();
+}
diff --git a/src/ec/google/wilco/bootblock.h b/src/ec/google/wilco/bootblock.h
new file mode 100644
index 0000000..6fc3fc7
--- /dev/null
+++ b/src/ec/google/wilco/bootblock.h
@@ -0,0 +1,22 @@
+/*
+ * This file is part of the coreboot project.
+ *
+ * Copyright 2018 Google LLC
+ *
+ * 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; version 2 of the License.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ */
+
+#ifndef EC_GOOGLE_WILCO_BOOTBLOCK_H
+#define EC_GOOGLE_WILCO_BOOTBLOCK_H
+
+/* Perform early initialization of the EC */
+void wilco_ec_early_init(void);
+
+#endif /* EC_GOOGLE_WILCO_BOOTBLOCK_H */

-- 
To view, visit https://review.coreboot.org/29121
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: I9d6935a9fdf0d7290a94bf2ee565ef2a7c00ecc7
Gerrit-Change-Number: 29121
Gerrit-PatchSet: 1
Gerrit-Owner: Duncan Laurie <dlaurie at chromium.org>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.coreboot.org/pipermail/coreboot-gerrit/attachments/20181015/3cc892bf/attachment-0001.html>


More information about the coreboot-gerrit mailing list