summaryrefslogtreecommitdiff
path: root/src/console
diff options
context:
space:
mode:
authorJeremy Soller <jeremy@system76.com>2020-07-22 06:40:28 -0600
committerMichael Niewöhner <c0d3z3r0@review.coreboot.org>2020-09-07 21:46:34 +0000
commit52785ab327b6be15e573f1ec68e3528847bcbd89 (patch)
tree498e61404036bc69ce4484a6c09e9520733da170 /src/console
parent7e396f380eb480aac7546bc65c16e4585f7dfc78 (diff)
downloadcoreboot-52785ab327b6be15e573f1ec68e3528847bcbd89.tar.xz
ec/system76: Add console support
This adds support for line-buffered console output to System76 EC firmware. Once the print command is received, the EC firmware multiplexes the output to any enabled console on the EC. This can be a memory ringbuffer, a parallel port (using the keyboard connector), or i2c (using the battery connector). Once the entire buffer is sent, it sets the command register to 0, indicating completion. For more information, please see: https://github.com/system76/ec/blob/master/doc/debugging.md Tested on system76/lemp9 with CONSOLE_SYSTEM76_EC enabled. Signed-off-by: Jeremy Soller <jeremy@system76.com> Change-Id: I861bf3e22f40dd6c3ec7ba1d73711b399358e332 Reviewed-on: https://review.coreboot.org/c/coreboot/+/43718 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Michael Niewöhner
Diffstat (limited to 'src/console')
-rw-r--r--src/console/Kconfig7
-rw-r--r--src/console/console.c4
2 files changed, 11 insertions, 0 deletions
diff --git a/src/console/Kconfig b/src/console/Kconfig
index 7c6e9bc5e0..bad6c564fc 100644
--- a/src/console/Kconfig
+++ b/src/console/Kconfig
@@ -302,6 +302,13 @@ config SPI_CONSOLE
This is currently working only in ramstage due to how the spi
drivers are written.
+config CONSOLE_SYSTEM76_EC
+ bool "System76 EC console output"
+ default n
+ depends on EC_SYSTEM76_EC
+ help
+ Send coreboot debug output to a System76 embedded controller.
+
config CONSOLE_OVERRIDE_LOGLEVEL
bool
help
diff --git a/src/console/console.c b/src/console/console.c
index bc9d9183a0..2f544a80f2 100644
--- a/src/console/console.c
+++ b/src/console/console.c
@@ -9,6 +9,7 @@
#include <console/usb.h>
#include <console/spi.h>
#include <console/flash.h>
+#include <console/system76_ec.h>
void console_hw_init(void)
{
@@ -21,6 +22,7 @@ void console_hw_init(void)
__usbdebug_init();
__spiconsole_init();
__flashconsole_init();
+ __system76_ec_init();
}
void console_tx_byte(unsigned char byte)
@@ -42,6 +44,7 @@ void console_tx_byte(unsigned char byte)
__usb_tx_byte(byte);
__spiconsole_tx_byte(byte);
__flashconsole_tx_byte(byte);
+ __system76_ec_tx_byte(byte);
}
void console_tx_flush(void)
@@ -50,6 +53,7 @@ void console_tx_flush(void)
__ne2k_tx_flush();
__usb_tx_flush();
__flashconsole_tx_flush();
+ __system76_ec_tx_flush();
}
void console_write_line(uint8_t *buffer, size_t number_of_bytes)