Julien Viard de Galbert has uploaded this change for review. ( https://review.coreboot.org/23712
Change subject: console: Introduce a way for mainboard to override the loglevel ......................................................................
console: Introduce a way for mainboard to override the loglevel
This change add a weak function to allow mainboard to override the default console loglevel. This allows a mainboard to sample a GPIO to switch the loglevel value between different environments (qualification vs production) without re-flashing.
Change-Id: Id6cc72b8fe5c4c50a6f83ce80e6440b078eec6e2 Signed-off-by: Julien Viard de Galbert jviarddegalbert@online.net --- M src/console/init.c M src/include/console/console.h 2 files changed, 17 insertions(+), 1 deletion(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/12/23712/1
diff --git a/src/console/init.c b/src/console/init.c index 422315a..b14dc3d 100644 --- a/src/console/init.c +++ b/src/console/init.c @@ -29,12 +29,20 @@ #define CONSOLE_LEVEL_CONST 0 #endif
+__attribute__((weak)) const int mainboard_get_default_console_loglevel(void) +{ + return -1; +} + static int console_loglevel = CONFIG_DEFAULT_CONSOLE_LOGLEVEL;
static inline int get_log_level(void) { - if (CONSOLE_LEVEL_CONST) + if (CONSOLE_LEVEL_CONST) { + int lvl = mainboard_get_default_console_loglevel(); + if (lvl >= 0) return lvl; return CONFIG_DEFAULT_CONSOLE_LOGLEVEL; + }
return console_loglevel; } @@ -54,6 +62,9 @@ if (CONSOLE_LEVEL_CONST) return;
+ int lvl = mainboard_get_default_console_loglevel(); + if (lvl >= 0) debug_level = lvl; + get_option(&debug_level, "debug_level");
set_log_level(debug_level); diff --git a/src/include/console/console.h b/src/include/console/console.h index aa935e4..d21b3c4 100644 --- a/src/include/console/console.h +++ b/src/include/console/console.h @@ -64,6 +64,11 @@ #define printk(LEVEL, fmt, args...) \ do { do_printk(LEVEL, fmt, ##args); } while (0)
+/* + * this function is weak and can be overridden by a mainboard function. + * return -1 to not override the configuration default. + */ +const int mainboard_get_default_console_loglevel(void); #else static inline void console_init(void) {} static inline int console_log_level(int msg_level) { return 0; }