From 35462cb7a0f45b75793d2a4c1b5cbf620f505faf Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 17 Feb 2020 13:35:06 -0700 Subject: [PATCH] Add SMFI console --- ecflash | 2 +- src/board/system76/darp5/board.mk | 12 +++---- src/board/system76/darp5/include/board/smfi.h | 1 + src/board/system76/darp5/smfi.c | 33 +++++++++++++------ src/board/system76/darp5/stdio.c | 3 ++ src/board/system76/galp3-c/board.mk | 12 +++---- .../system76/galp3-c/include/board/smfi.h | 1 + src/board/system76/galp3-c/smfi.c | 33 +++++++++++++------ src/board/system76/galp3-c/stdio.c | 3 ++ src/board/system76/lemp9/board.mk | 12 +++---- src/board/system76/lemp9/include/board/smfi.h | 1 + src/board/system76/lemp9/smfi.c | 32 ++++++++++++------ src/board/system76/lemp9/stdio.c | 3 ++ 13 files changed, 99 insertions(+), 49 deletions(-) diff --git a/ecflash b/ecflash index 5a9300d..945ec8d 160000 --- a/ecflash +++ b/ecflash @@ -1 +1 @@ -Subproject commit 5a9300d804df6b658196f690a10ba8fc7e821a78 +Subproject commit 945ec8d276edd78f26cd744624344e67549824ad diff --git a/src/board/system76/darp5/board.mk b/src/board/system76/darp5/board.mk index 83dced9..4d1d49b 100644 --- a/src/board/system76/darp5/board.mk +++ b/src/board/system76/darp5/board.mk @@ -11,10 +11,10 @@ SRC+=$(BOARD_DIR)/keymap/$(KEYMAP).c # 3 - INFO # 4 - DEBUG # 5 - TRACE -CFLAGS+=-DLEVEL=2 +CFLAGS+=-DLEVEL=4 # Enable I2C debug on 0x76 -CFLAGS+=-DI2C_DEBUGGER=0x76 +#CFLAGS+=-DI2C_DEBUGGER=0x76 # Set battery I2C bus CFLAGS+=-DI2C_SMBUS=I2C_0 @@ -35,6 +35,10 @@ include $(SCRATCH_DIR)/scratch.mk CFLAGS+=-I$(BUILD)/include INCLUDE+=$(BUILD)/include/scratch.h +console: + cargo build --manifest-path ecflash/Cargo.toml --example smfi --release + sudo ecflash/target/release/examples/smfi + flash: $(BUILD)/ec.rom cargo build --manifest-path ecflash/Cargo.toml --example isp --release sudo ecflash/target/release/examples/isp --internal $< @@ -42,7 +46,3 @@ flash: $(BUILD)/ec.rom isp: $(BUILD)/ec.rom cargo build --manifest-path ecflash/Cargo.toml --example isp --release sudo ecflash/target/release/examples/isp $< - -version: - cargo build --manifest-path ecflash/Cargo.toml --example smfi --release - sudo ecflash/target/release/examples/smfi diff --git a/src/board/system76/darp5/include/board/smfi.h b/src/board/system76/darp5/include/board/smfi.h index 532ef23..4ee0398 100644 --- a/src/board/system76/darp5/include/board/smfi.h +++ b/src/board/system76/darp5/include/board/smfi.h @@ -3,5 +3,6 @@ void smfi_init(void); void smfi_event(void); +void smfi_debug(unsigned char byte); #endif // _BOARD_SMFI_H diff --git a/src/board/system76/darp5/smfi.c b/src/board/system76/darp5/smfi.c index ac1590b..ff95768 100644 --- a/src/board/system76/darp5/smfi.c +++ b/src/board/system76/darp5/smfi.c @@ -2,6 +2,7 @@ #include #include +#include #include #include @@ -26,6 +27,7 @@ enum SmfiCmd { SMFI_CMD_PROBE = 1, SMFI_CMD_BOARD = 2, SMFI_CMD_VERSION = 3, + SMFI_CMD_DEBUG = 4, //TODO }; @@ -62,6 +64,7 @@ void smfi_init(void) { } void smfi_event(void) { + int i; if (smfi_cmd[0]) { // Default to success smfi_cmd[1] = SMFI_RES_OK; @@ -80,19 +83,29 @@ void smfi_event(void) { case SMFI_CMD_VERSION: strncpy(&smfi_cmd[2], version(), ARRAY_SIZE(smfi_cmd) - 2); break; + case SMFI_CMD_DEBUG: + for (i = 2; i < ARRAY_SIZE(smfi_cmd) - 2; i++) { + uint8_t b = smfi_cmd[i]; + if (b == 0) break; + putchar(b); + } + default: + // Command not found + smfi_cmd[1] = SMFI_RES_ERR; + break; } // Mark command as finished smfi_cmd[0] = SMFI_CMD_NONE; } - - if (smfi_dbg[0]) { - int i; - for(i = 1; (i <= (int)smfi_dbg[0]) && (i < ARRAY_SIZE(smfi_dbg)); i++) { - putchar(smfi_dbg[i]); - } - - // Mark debug transaction as complete - smfi_dbg[0] = 0; - } +} + +void smfi_debug(unsigned char byte) { + int tail = (int)smfi_dbg[0]; + tail++; + if (tail >= ARRAY_SIZE(smfi_dbg)) { + tail = 1; + } + smfi_dbg[tail] = byte; + smfi_dbg[0] = (uint8_t)tail; } diff --git a/src/board/system76/darp5/stdio.c b/src/board/system76/darp5/stdio.c index 9bdb177..6cb8951 100644 --- a/src/board/system76/darp5/stdio.c +++ b/src/board/system76/darp5/stdio.c @@ -1,5 +1,7 @@ #include +#include + #ifdef SERIAL_DEBUGGER #include #endif @@ -10,6 +12,7 @@ int putchar(int c) { unsigned char byte = (unsigned char)c; + smfi_debug(byte); #ifdef SERIAL_DEBUGGER SBUF = byte; #endif diff --git a/src/board/system76/galp3-c/board.mk b/src/board/system76/galp3-c/board.mk index 83dced9..4d1d49b 100644 --- a/src/board/system76/galp3-c/board.mk +++ b/src/board/system76/galp3-c/board.mk @@ -11,10 +11,10 @@ SRC+=$(BOARD_DIR)/keymap/$(KEYMAP).c # 3 - INFO # 4 - DEBUG # 5 - TRACE -CFLAGS+=-DLEVEL=2 +CFLAGS+=-DLEVEL=4 # Enable I2C debug on 0x76 -CFLAGS+=-DI2C_DEBUGGER=0x76 +#CFLAGS+=-DI2C_DEBUGGER=0x76 # Set battery I2C bus CFLAGS+=-DI2C_SMBUS=I2C_0 @@ -35,6 +35,10 @@ include $(SCRATCH_DIR)/scratch.mk CFLAGS+=-I$(BUILD)/include INCLUDE+=$(BUILD)/include/scratch.h +console: + cargo build --manifest-path ecflash/Cargo.toml --example smfi --release + sudo ecflash/target/release/examples/smfi + flash: $(BUILD)/ec.rom cargo build --manifest-path ecflash/Cargo.toml --example isp --release sudo ecflash/target/release/examples/isp --internal $< @@ -42,7 +46,3 @@ flash: $(BUILD)/ec.rom isp: $(BUILD)/ec.rom cargo build --manifest-path ecflash/Cargo.toml --example isp --release sudo ecflash/target/release/examples/isp $< - -version: - cargo build --manifest-path ecflash/Cargo.toml --example smfi --release - sudo ecflash/target/release/examples/smfi diff --git a/src/board/system76/galp3-c/include/board/smfi.h b/src/board/system76/galp3-c/include/board/smfi.h index 532ef23..4ee0398 100644 --- a/src/board/system76/galp3-c/include/board/smfi.h +++ b/src/board/system76/galp3-c/include/board/smfi.h @@ -3,5 +3,6 @@ void smfi_init(void); void smfi_event(void); +void smfi_debug(unsigned char byte); #endif // _BOARD_SMFI_H diff --git a/src/board/system76/galp3-c/smfi.c b/src/board/system76/galp3-c/smfi.c index ac1590b..ff95768 100644 --- a/src/board/system76/galp3-c/smfi.c +++ b/src/board/system76/galp3-c/smfi.c @@ -2,6 +2,7 @@ #include #include +#include #include #include @@ -26,6 +27,7 @@ enum SmfiCmd { SMFI_CMD_PROBE = 1, SMFI_CMD_BOARD = 2, SMFI_CMD_VERSION = 3, + SMFI_CMD_DEBUG = 4, //TODO }; @@ -62,6 +64,7 @@ void smfi_init(void) { } void smfi_event(void) { + int i; if (smfi_cmd[0]) { // Default to success smfi_cmd[1] = SMFI_RES_OK; @@ -80,19 +83,29 @@ void smfi_event(void) { case SMFI_CMD_VERSION: strncpy(&smfi_cmd[2], version(), ARRAY_SIZE(smfi_cmd) - 2); break; + case SMFI_CMD_DEBUG: + for (i = 2; i < ARRAY_SIZE(smfi_cmd) - 2; i++) { + uint8_t b = smfi_cmd[i]; + if (b == 0) break; + putchar(b); + } + default: + // Command not found + smfi_cmd[1] = SMFI_RES_ERR; + break; } // Mark command as finished smfi_cmd[0] = SMFI_CMD_NONE; } - - if (smfi_dbg[0]) { - int i; - for(i = 1; (i <= (int)smfi_dbg[0]) && (i < ARRAY_SIZE(smfi_dbg)); i++) { - putchar(smfi_dbg[i]); - } - - // Mark debug transaction as complete - smfi_dbg[0] = 0; - } +} + +void smfi_debug(unsigned char byte) { + int tail = (int)smfi_dbg[0]; + tail++; + if (tail >= ARRAY_SIZE(smfi_dbg)) { + tail = 1; + } + smfi_dbg[tail] = byte; + smfi_dbg[0] = (uint8_t)tail; } diff --git a/src/board/system76/galp3-c/stdio.c b/src/board/system76/galp3-c/stdio.c index 9bdb177..6cb8951 100644 --- a/src/board/system76/galp3-c/stdio.c +++ b/src/board/system76/galp3-c/stdio.c @@ -1,5 +1,7 @@ #include +#include + #ifdef SERIAL_DEBUGGER #include #endif @@ -10,6 +12,7 @@ int putchar(int c) { unsigned char byte = (unsigned char)c; + smfi_debug(byte); #ifdef SERIAL_DEBUGGER SBUF = byte; #endif diff --git a/src/board/system76/lemp9/board.mk b/src/board/system76/lemp9/board.mk index 5ff2249..4e78ea3 100644 --- a/src/board/system76/lemp9/board.mk +++ b/src/board/system76/lemp9/board.mk @@ -11,10 +11,10 @@ SRC+=$(BOARD_DIR)/keymap/$(KEYMAP).c # 3 - INFO # 4 - DEBUG # 5 - TRACE -CFLAGS+=-DLEVEL=2 +CFLAGS+=-DLEVEL=4 # Enable I2C debug on 0x76 -CFLAGS+=-DI2C_DEBUGGER=0x76 +#CFLAGS+=-DI2C_DEBUGGER=0x76 # Set battery I2C bus CFLAGS+=-DI2C_SMBUS=I2C_4 @@ -38,6 +38,10 @@ include $(SCRATCH_DIR)/scratch.mk CFLAGS+=-I$(BUILD)/include INCLUDE+=$(BUILD)/include/scratch.h +console: + cargo build --manifest-path ecflash/Cargo.toml --example smfi --release + sudo ecflash/target/release/examples/smfi + flash: $(BUILD)/ec.rom cargo build --manifest-path ecflash/Cargo.toml --example isp --release sudo ecflash/target/release/examples/isp --internal $< @@ -45,7 +49,3 @@ flash: $(BUILD)/ec.rom isp: $(BUILD)/ec.rom cargo build --manifest-path ecflash/Cargo.toml --example isp --release sudo ecflash/target/release/examples/isp $< - -version: - cargo build --manifest-path ecflash/Cargo.toml --example smfi --release - sudo ecflash/target/release/examples/smfi diff --git a/src/board/system76/lemp9/include/board/smfi.h b/src/board/system76/lemp9/include/board/smfi.h index 532ef23..4ee0398 100644 --- a/src/board/system76/lemp9/include/board/smfi.h +++ b/src/board/system76/lemp9/include/board/smfi.h @@ -3,5 +3,6 @@ void smfi_init(void); void smfi_event(void); +void smfi_debug(unsigned char byte); #endif // _BOARD_SMFI_H diff --git a/src/board/system76/lemp9/smfi.c b/src/board/system76/lemp9/smfi.c index e550adf..ff95768 100644 --- a/src/board/system76/lemp9/smfi.c +++ b/src/board/system76/lemp9/smfi.c @@ -27,6 +27,7 @@ enum SmfiCmd { SMFI_CMD_PROBE = 1, SMFI_CMD_BOARD = 2, SMFI_CMD_VERSION = 3, + SMFI_CMD_DEBUG = 4, //TODO }; @@ -63,6 +64,7 @@ void smfi_init(void) { } void smfi_event(void) { + int i; if (smfi_cmd[0]) { // Default to success smfi_cmd[1] = SMFI_RES_OK; @@ -81,19 +83,29 @@ void smfi_event(void) { case SMFI_CMD_VERSION: strncpy(&smfi_cmd[2], version(), ARRAY_SIZE(smfi_cmd) - 2); break; + case SMFI_CMD_DEBUG: + for (i = 2; i < ARRAY_SIZE(smfi_cmd) - 2; i++) { + uint8_t b = smfi_cmd[i]; + if (b == 0) break; + putchar(b); + } + default: + // Command not found + smfi_cmd[1] = SMFI_RES_ERR; + break; } // Mark command as finished smfi_cmd[0] = SMFI_CMD_NONE; } - - if (smfi_dbg[0]) { - int i; - for(i = 1; (i <= (int)smfi_dbg[0]) && (i < ARRAY_SIZE(smfi_dbg)); i++) { - putchar(smfi_dbg[i]); - } - - // Mark debug transaction as complete - smfi_dbg[0] = 0; - } +} + +void smfi_debug(unsigned char byte) { + int tail = (int)smfi_dbg[0]; + tail++; + if (tail >= ARRAY_SIZE(smfi_dbg)) { + tail = 1; + } + smfi_dbg[tail] = byte; + smfi_dbg[0] = (uint8_t)tail; } diff --git a/src/board/system76/lemp9/stdio.c b/src/board/system76/lemp9/stdio.c index 9bdb177..6cb8951 100644 --- a/src/board/system76/lemp9/stdio.c +++ b/src/board/system76/lemp9/stdio.c @@ -1,5 +1,7 @@ #include +#include + #ifdef SERIAL_DEBUGGER #include #endif @@ -10,6 +12,7 @@ int putchar(int c) { unsigned char byte = (unsigned char)c; + smfi_debug(byte); #ifdef SERIAL_DEBUGGER SBUF = byte; #endif