console/flashsconsole: Add spi flash console for debugging

If CONSOLE_SPI_FLASH config is enabled, we write the cbmem
messages to the 'CONSOLE' area in FMAP which allows us to grab the
log when we read the flash.

This is useful when you don't have usb debugging, and
UART lines are hard to find. Since a failure to boot would
require a hardware flasher anyways, we can get the log
at the same time.

This feature should only be used when no alternative is
found and only when we can't boot the system, because
excessive writes to the flash is not recommended.

This has been tested on purism/librem13 v2 and librem 15 v3 which
run Intel Skylake hardware. It has not been tested on other archs
or with a driver other than the fast_spi.

Change-Id: I74a297b94f6881d8c27cbe5168f161d8331c3df3
Signed-off-by: Youness Alaoui <youness.alaoui@puri.sm>
Reviewed-on: https://review.coreboot.org/19849
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
Reviewed-by: Julius Werner <jwerner@chromium.org>
Reviewed-by: Philippe Mathieu-Daudé <philippe.mathieu.daude@gmail.com>
This commit is contained in:
Youness Alaoui
2017-05-11 10:36:29 -04:00
committed by Martin Roth
parent cadd7c7ed3
commit c4b4ff3b1f
8 changed files with 256 additions and 3 deletions

View File

@ -21,6 +21,7 @@
#include <console/uart.h>
#include <console/usb.h>
#include <console/spi.h>
#include <console/flash.h>
#include <rules.h>
void console_hw_init(void)
@ -33,6 +34,7 @@ void console_hw_init(void)
__ne2k_init();
__usbdebug_init();
__spiconsole_init();
__flashconsole_init();
}
void console_tx_byte(unsigned char byte)
@ -53,6 +55,7 @@ void console_tx_byte(unsigned char byte)
__ne2k_tx_byte(byte);
__usb_tx_byte(byte);
__spiconsole_tx_byte(byte);
__flashconsole_tx_byte(byte);
}
void console_tx_flush(void)
@ -60,6 +63,7 @@ void console_tx_flush(void)
__uart_tx_flush();
__ne2k_tx_flush();
__usb_tx_flush();
__flashconsole_tx_flush();
}
void console_write_line(uint8_t *buffer, size_t number_of_bytes)