Ronald G. Minnich (rminnich@gmail.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/1397
-gerrit
commit 8f45a843b44583fdeade2a78e657efe8424b144b Author: Ronald G. Minnich rminnich@gmail.com Date: Thu Aug 2 09:34:05 2012 -0700
Add a capability for mainboard-specific posting.
Some mainboards have really nice capabilities for posting, beyond simple POST cards. Further, some can not use a POST card. This change defines a weak symbol (mainboard_post) that can be overridden by a real mainboard_post function.
If, for example, you'd like to do something fancy before the payload starts, you can add this to mainboard.c:
void mainboard_post(u8 value) { switch(value){ case 0xfe: some_fancy_lights(); break; } }
Maybe the post function should be an entry in the device. We're beginning to over-use weak symbols.
BUG=None
TEST=Build and boot a google chromebook. Observe that it still works. Use it to drive some pretty lights.
Change-Id: I3512d2ec34a66c747287191851c3f68b6a7cc1b2 Signed-off-by: Ronald G. Minnich rminnich@gmail.com --- src/console/post.c | 8 ++++++++ src/include/console/console.h | 2 ++ 2 files changed, 10 insertions(+), 0 deletions(-)
diff --git a/src/console/post.c b/src/console/post.c index 08336a2..0f95427 100644 --- a/src/console/post.c +++ b/src/console/post.c @@ -24,6 +24,13 @@
/* Write POST information */
+/* Some mainboards have very nice features beyond just a simple + * display. They can override this function. + */ +void __attribute__((weak)) mainboard_post(uint8_t value) +{ +} + void post_code(uint8_t value) { #if !CONFIG_NO_POST @@ -33,5 +40,6 @@ void post_code(uint8_t value) print_emerg("\n"); #endif outb(value, CONFIG_POST_PORT); + mainboard_post(value); #endif } diff --git a/src/include/console/console.h b/src/include/console/console.h index 56e202d..00be96f 100644 --- a/src/include/console/console.h +++ b/src/include/console/console.h @@ -69,6 +69,8 @@ extern int console_loglevel; #ifndef __ROMCC__ void console_init(void); void post_code(u8 value); +/* this function is weak and can be overridden by a mainboard function. */ +void mainboard_post(u8 value); void __attribute__ ((noreturn)) die(const char *msg); int do_printk(int msg_level, const char *fmt, ...) __attribute__((format(printf, 2, 3)));