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
This commit is contained in:
parent
7e396f380e
commit
52785ab327
5 changed files with 113 additions and 0 deletions
35
src/include/console/system76_ec.h
Normal file
35
src/include/console/system76_ec.h
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
#ifndef CONSOLE_SYSTEM76_EC_H
|
||||
#define CONSOLE_SYSTEM76_EC_H 1
|
||||
|
||||
#include <stddef.h>
|
||||
#include <stdint.h>
|
||||
|
||||
void system76_ec_init(void);
|
||||
void system76_ec_flush(void);
|
||||
void system76_ec_print(uint8_t byte);
|
||||
|
||||
#define __CONSOLE_SYSTEM76_EC_ENABLE__ (CONFIG(CONSOLE_SYSTEM76_EC) && \
|
||||
(ENV_BOOTBLOCK || ENV_ROMSTAGE || ENV_RAMSTAGE \
|
||||
|| ENV_SEPARATE_VERSTAGE || ENV_POSTCAR \
|
||||
|| (ENV_SMM && CONFIG(DEBUG_SMI))))
|
||||
|
||||
#if __CONSOLE_SYSTEM76_EC_ENABLE__
|
||||
static inline void __system76_ec_init(void)
|
||||
{
|
||||
system76_ec_init();
|
||||
}
|
||||
static inline void __system76_ec_tx_flush(void)
|
||||
{
|
||||
system76_ec_flush();
|
||||
}
|
||||
static inline void __system76_ec_tx_byte(unsigned char byte)
|
||||
{
|
||||
system76_ec_print(byte);
|
||||
}
|
||||
#else
|
||||
static inline void __system76_ec_init(void) {}
|
||||
static inline void __system76_ec_tx_flush(void) {}
|
||||
static inline void __system76_ec_tx_byte(unsigned char byte) {}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
Loading…
Add table
Add a link
Reference in a new issue