diff options
author | Vadim Bendebury <vbendeb@chromium.org> | 2012-06-07 18:47:13 -0700 |
---|---|---|
committer | Ronald G. Minnich <rminnich@gmail.com> | 2012-11-14 05:19:21 +0100 |
commit | 48a4a7f24453e8fd0672146d78d7790539c6a2f8 (patch) | |
tree | 645bcce02a07405fb7e47ed24ec32ab9830f7781 | |
parent | a42e2f4daaa9537eeea41f68eae1ef16265f4010 (diff) |
Provide MRC with a console printing callback function
Let memory initialization code use the coreboot romstage console. This
simplifies the code and makes sure that all output is available in
/sys/firmware/log.
The pei_data structure is modified to allow passing the console output
function pointer. Romstage console_tx_byte() is used for this purpose.
Change-Id: I722cfcb9ff0cf527c12cb6cac09d77ef17b588e0
Signed-off-by: Vadim Bendebury <vbendeb@chromium.org>
Reviewed-on: http://review.coreboot.org/1823
Tested-by: build bot (Jenkins)
Reviewed-by: Martin Roth <martin@se-eng.com>
Reviewed-by: Ronald G. Minnich <rminnich@gmail.com>
-rw-r--r-- | src/arch/x86/lib/romstage_console.c | 2 | ||||
-rw-r--r-- | src/include/console/console.h | 2 | ||||
-rw-r--r-- | src/northbridge/intel/sandybridge/pei_data.h | 4 | ||||
-rw-r--r-- | src/northbridge/intel/sandybridge/raminit.c | 3 |
4 files changed, 8 insertions, 3 deletions
diff --git a/src/arch/x86/lib/romstage_console.c b/src/arch/x86/lib/romstage_console.c index af2944d52c..f43db05622 100644 --- a/src/arch/x86/lib/romstage_console.c +++ b/src/arch/x86/lib/romstage_console.c @@ -29,7 +29,7 @@ #include <console/ne2k.h> #endif -static void console_tx_byte(unsigned char byte) +void console_tx_byte(unsigned char byte) { if (byte == '\n') console_tx_byte('\r'); diff --git a/src/include/console/console.h b/src/include/console/console.h index 00be96f80f..375e5a42f9 100644 --- a/src/include/console/console.h +++ b/src/include/console/console.h @@ -38,7 +38,6 @@ #endif #ifndef __PRE_RAM__ -void console_tx_byte(unsigned char byte); void console_tx_flush(void); unsigned char console_rx_byte(void); int console_tst_byte(void); @@ -68,6 +67,7 @@ extern int console_loglevel; #ifndef __ROMCC__ void console_init(void); +void console_tx_byte(unsigned char byte); void post_code(u8 value); /* this function is weak and can be overridden by a mainboard function. */ void mainboard_post(u8 value); diff --git a/src/northbridge/intel/sandybridge/pei_data.h b/src/northbridge/intel/sandybridge/pei_data.h index cda08b2d3f..5bb3b38a13 100644 --- a/src/northbridge/intel/sandybridge/pei_data.h +++ b/src/northbridge/intel/sandybridge/pei_data.h @@ -30,7 +30,8 @@ #ifndef PEI_DATA_H #define PEI_DATA_H -#define PEI_VERSION 1 +typedef void (*tx_byte_func)(unsigned char byte); +#define PEI_VERSION 2 struct pei_data { uint32_t pei_version; @@ -93,6 +94,7 @@ struct pei_data * spd_address for a given "DIMM". */ uint8_t spd_data[4][256]; + tx_byte_func tx_byte; } __attribute__((packed)); #endif diff --git a/src/northbridge/intel/sandybridge/raminit.c b/src/northbridge/intel/sandybridge/raminit.c index 8248fa1486..2b46873e4d 100644 --- a/src/northbridge/intel/sandybridge/raminit.c +++ b/src/northbridge/intel/sandybridge/raminit.c @@ -241,6 +241,9 @@ void sdram_initialize(struct pei_data *pei_data) hlt(); } + /* Pass console handler in pei_data */ + pei_data->tx_byte = console_tx_byte; + /* Locate and call UEFI System Agent binary. */ entry = (unsigned long)cbfs_find_file("mrc.bin", 0xab); if (entry) { |