diff --git a/src/board/system76/darp5/smfi.c b/src/board/system76/darp5/smfi.c index 2d1557e..b4dac23 100644 --- a/src/board/system76/darp5/smfi.c +++ b/src/board/system76/darp5/smfi.c @@ -107,14 +107,17 @@ void smfi_init(void) { FLHCTRL3 |= (1 << 3); } -static enum Result cmd_debug(void) { - int i; - for (i = 2; i < ARRAY_SIZE(smfi_cmd); i++) { - uint8_t b = smfi_cmd[i]; - if (b == 0) break; - putchar(b); +static enum Result cmd_print(void) { + uint8_t flags = smfi_cmd[2]; + uint8_t len = smfi_cmd[3]; + + uint8_t i; + for (i = 0; (i < len) && ((i + 4) < ARRAY_SIZE(smfi_cmd)); i++) { + putchar(smfi_cmd[i + 4]); } + smfi_cmd[3] = i; + return RES_OK; } @@ -162,8 +165,8 @@ void smfi_event(void) { // Always successful smfi_cmd[1] = RES_OK; break; - case CMD_DEBUG: - smfi_cmd[1] = cmd_debug(); + case CMD_PRINT: + smfi_cmd[1] = cmd_print(); break; case CMD_SPI: smfi_cmd[1] = cmd_spi(); diff --git a/src/board/system76/galp3-c/smfi.c b/src/board/system76/galp3-c/smfi.c index 2d1557e..b4dac23 100644 --- a/src/board/system76/galp3-c/smfi.c +++ b/src/board/system76/galp3-c/smfi.c @@ -107,14 +107,17 @@ void smfi_init(void) { FLHCTRL3 |= (1 << 3); } -static enum Result cmd_debug(void) { - int i; - for (i = 2; i < ARRAY_SIZE(smfi_cmd); i++) { - uint8_t b = smfi_cmd[i]; - if (b == 0) break; - putchar(b); +static enum Result cmd_print(void) { + uint8_t flags = smfi_cmd[2]; + uint8_t len = smfi_cmd[3]; + + uint8_t i; + for (i = 0; (i < len) && ((i + 4) < ARRAY_SIZE(smfi_cmd)); i++) { + putchar(smfi_cmd[i + 4]); } + smfi_cmd[3] = i; + return RES_OK; } @@ -162,8 +165,8 @@ void smfi_event(void) { // Always successful smfi_cmd[1] = RES_OK; break; - case CMD_DEBUG: - smfi_cmd[1] = cmd_debug(); + case CMD_PRINT: + smfi_cmd[1] = cmd_print(); break; case CMD_SPI: smfi_cmd[1] = cmd_spi(); diff --git a/src/board/system76/lemp9/smfi.c b/src/board/system76/lemp9/smfi.c index 2d1557e..b4dac23 100644 --- a/src/board/system76/lemp9/smfi.c +++ b/src/board/system76/lemp9/smfi.c @@ -107,14 +107,17 @@ void smfi_init(void) { FLHCTRL3 |= (1 << 3); } -static enum Result cmd_debug(void) { - int i; - for (i = 2; i < ARRAY_SIZE(smfi_cmd); i++) { - uint8_t b = smfi_cmd[i]; - if (b == 0) break; - putchar(b); +static enum Result cmd_print(void) { + uint8_t flags = smfi_cmd[2]; + uint8_t len = smfi_cmd[3]; + + uint8_t i; + for (i = 0; (i < len) && ((i + 4) < ARRAY_SIZE(smfi_cmd)); i++) { + putchar(smfi_cmd[i + 4]); } + smfi_cmd[3] = i; + return RES_OK; } @@ -162,8 +165,8 @@ void smfi_event(void) { // Always successful smfi_cmd[1] = RES_OK; break; - case CMD_DEBUG: - smfi_cmd[1] = cmd_debug(); + case CMD_PRINT: + smfi_cmd[1] = cmd_print(); break; case CMD_SPI: smfi_cmd[1] = cmd_spi(); diff --git a/src/common/include/common/command.h b/src/common/include/common/command.h index 1f61566..36966f7 100644 --- a/src/common/include/common/command.h +++ b/src/common/include/common/command.h @@ -11,7 +11,7 @@ enum Command { // Read version string CMD_VERSION = 3, // Write bytes to console - CMD_DEBUG = 4, + CMD_PRINT = 4, // Access SPI chip CMD_SPI = 5, // Reset EC