ec/google/wilco: Add support for KB_ERR_CODE to Wilco EC

Adds support for the KB_ERR_CODE command on the Wilco EC. This command
is used to drive diagnostic LEDs on the platform after a failed boot.
This change also adds the Wilco EC mailbox command support to bootblock
and verstage so that those stages can use the KB_ERR_CODE command.

BUG=b:124401932
BRANCH=sarien
TEST=build coreboot for sarien and arcada platforms

Change-Id: I96d17baf57694e4e01c676d80c606f67054cd0c3
Signed-off-by: Keith Short <keithshort@chromium.org>
Reviewed-on: https://review.coreboot.org/c/coreboot/+/32776
Reviewed-by: Duncan Laurie <dlaurie@chromium.org>
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
This commit is contained in:
Keith Short 2019-05-10 11:49:24 -06:00 committed by Patrick Georgi
parent 686b539949
commit 8ef6732b94
3 changed files with 29 additions and 1 deletions

View File

@ -1,6 +1,7 @@
ifeq ($(CONFIG_EC_GOOGLE_WILCO),y) ifeq ($(CONFIG_EC_GOOGLE_WILCO),y)
bootblock-y += bootblock.c bootblock-y += bootblock.c commands.c mailbox.c
verstage-y += commands.c mailbox.c
romstage-y += commands.c mailbox.c romstage.c boardid.c romstage-y += commands.c mailbox.c romstage.c boardid.c
ramstage-y += chip.c commands.c mailbox.c boardid.c ramstage-y += chip.c commands.c mailbox.c boardid.c
smm-y += commands.c mailbox.c smihandler.c boardid.c smm-y += commands.c mailbox.c smihandler.c boardid.c

View File

@ -181,3 +181,9 @@ int wilco_ec_signed_fw(void)
CONFIG_EC_BASE_ACPI_DATA); CONFIG_EC_BASE_ACPI_DATA);
return !!ec_read(EC_RAM_SIGNED_FW); return !!ec_read(EC_RAM_SIGNED_FW);
} }
int wilco_ec_err_code(enum ec_err_code err_code)
{
return wilco_ec_mailbox(WILCO_EC_MSG_DEFAULT, KB_ERR_CODE,
&err_code, 1, NULL, 0);
}

View File

@ -50,6 +50,8 @@ enum {
KB_SLP_EN = 0x64, KB_SLP_EN = 0x64,
/* Inform the EC about BIOS boot progress */ /* Inform the EC about BIOS boot progress */
KB_BIOS_PROGRESS = 0xc2, KB_BIOS_PROGRESS = 0xc2,
/* Inform the EC that a fatal error occurred */
KB_ERR_CODE = 0x7b,
}; };
enum ec_ram_addr { enum ec_ram_addr {
@ -86,6 +88,12 @@ enum ec_camera {
CAMERA_OFF CAMERA_OFF
}; };
enum ec_err_code {
DLED_MEMORY = 0x03,
DLED_PANEL = 0x10,
DLED_ROM = 0x19,
};
/** /**
* wilco_ec_radio_control() - Control wireless radios. * wilco_ec_radio_control() - Control wireless radios.
* @ec_radio: Wireless radio type. * @ec_radio: Wireless radio type.
@ -310,4 +318,17 @@ enum ec_acpi_wake_events {
*/ */
int wilco_ec_signed_fw(void); int wilco_ec_signed_fw(void);
/**
* wilco_ec_err_code
*
* Send an error code to the EC to indicate a failed boot. The EC flashes the
* platform LED amber and white to provide user indication of the failure type.
*
* @err_code: Error code to send to the EC
*
* Returns 0 if EC command was successful
* Returns -1 if EC command failed
*/
int wilco_ec_err_code(enum ec_err_code err_code);
#endif /* EC_GOOGLE_WILCO_COMMANDS_H */ #endif /* EC_GOOGLE_WILCO_COMMANDS_H */