aboutsummaryrefslogtreecommitdiff
path: root/src/ec
diff options
context:
space:
mode:
authorDuncan Laurie <dlaurie@google.com>2018-10-15 02:46:45 +0000
committerDuncan Laurie <dlaurie@chromium.org>2018-10-31 18:29:43 +0000
commit421a962cc6b226e07afa5c580ef2df310c03e04e (patch)
treef96af8ed72dcec93f586acd32d8ab9db3a46e227 /src/ec
parentb29e2d58f20619311110cf345545eaff39207351 (diff)
ec/google/wilco: Report BIOS progress to the EC
The EC expects to receive updates about the BIOS boot progress. This is used for the EC logging to track system boot completeness. If the EC is not informed about BIOS progress it will turn the system off 30 seconds after the boot starts. Change-Id: I693c3930117db2b69a119aee0380d6f303c4881c Signed-off-by: Duncan Laurie <dlaurie@google.com> Reviewed-on: https://review.coreboot.org/29118 Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net> Reviewed-by: Aaron Durbin <adurbin@chromium.org> Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Diffstat (limited to 'src/ec')
-rw-r--r--src/ec/google/wilco/chip.c22
-rw-r--r--src/ec/google/wilco/commands.h9
2 files changed, 31 insertions, 0 deletions
diff --git a/src/ec/google/wilco/chip.c b/src/ec/google/wilco/chip.c
index cc9f030957..9a200bd720 100644
--- a/src/ec/google/wilco/chip.c
+++ b/src/ec/google/wilco/chip.c
@@ -13,6 +13,7 @@
* GNU General Public License for more details.
*/
+#include <bootstate.h>
#include <device/pnp.h>
#include <pc80/keyboard.h>
#include <stdint.h>
@@ -22,6 +23,27 @@
#include "ec.h"
#include "chip.h"
+static void wilco_ec_post_complete(void *unused)
+{
+ wilco_ec_send(KB_BIOS_PROGRESS, BIOS_PROGRESS_POST_COMPLETE);
+}
+BOOT_STATE_INIT_ENTRY(BS_PAYLOAD_LOAD, BS_ON_EXIT,
+ wilco_ec_post_complete, NULL);
+
+static void wilco_ec_post_memory_init(void *unused)
+{
+ wilco_ec_send(KB_BIOS_PROGRESS, BIOS_PROGRESS_MEMORY_INIT);
+}
+BOOT_STATE_INIT_ENTRY(BS_PRE_DEVICE, BS_ON_EXIT,
+ wilco_ec_post_memory_init, NULL);
+
+static void wilco_ec_post_video_init(void *unused)
+{
+ wilco_ec_send(KB_BIOS_PROGRESS, BIOS_PROGRESS_VIDEO_INIT);
+}
+BOOT_STATE_INIT_ENTRY(BS_DEV_INIT, BS_ON_EXIT,
+ wilco_ec_post_video_init, NULL);
+
static void wilco_ec_init(struct device *dev)
{
if (!dev->enabled)
diff --git a/src/ec/google/wilco/commands.h b/src/ec/google/wilco/commands.h
index 492900d557..61eb460bfa 100644
--- a/src/ec/google/wilco/commands.h
+++ b/src/ec/google/wilco/commands.h
@@ -34,6 +34,8 @@ enum {
KB_POWER_BUTTON_TO_HOST = 0x3e,
/* Inform the EC that the host is about to enter S3 */
KB_SLP_EN = 0x64,
+ /* Inform the EC about BIOS boot progress */
+ KB_BIOS_PROGRESS = 0xc2,
};
enum set_acpi_mode_cmd {
@@ -41,6 +43,13 @@ enum set_acpi_mode_cmd {
ACPI_ON
};
+enum bios_progress_code {
+ BIOS_PROGRESS_MEMORY_INIT = 0x01,
+ BIOS_PROGRESS_VIDEO_INIT = 0x02,
+ BIOS_PROGRESS_LOGO_DISPLAYED = 0x03,
+ BIOS_PROGRESS_POST_COMPLETE = 0x04,
+};
+
/*
* EC Information
*/