summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/console/Kconfig10
-rw-r--r--src/console/init.c4
-rw-r--r--src/include/console/console.h12
3 files changed, 24 insertions, 2 deletions
diff --git a/src/console/Kconfig b/src/console/Kconfig
index 0421f6ba4c..e30edc929d 100644
--- a/src/console/Kconfig
+++ b/src/console/Kconfig
@@ -298,6 +298,14 @@ config SPI_CONSOLE
This is currently working only in ramstage due to how the spi
drivers are written.
+config CONSOLE_OVERRIDE_LOGLEVEL
+ boolean
+ help
+ Set to "y" when the platform overrides the loglevel by providing
+ a get_console_loglevel routine.
+
+if !CONSOLE_OVERRIDE_LOGLEVEL
+
choice
prompt "Default console log level"
default DEFAULT_CONSOLE_LOGLEVEL_8
@@ -355,6 +363,8 @@ config DEFAULT_CONSOLE_LOGLEVEL
help
Map the log level config names to an integer.
+endif
+
config NO_POST
bool "Don't show any POST codes"
default n
diff --git a/src/console/init.c b/src/console/init.c
index 422315ad2a..78c568f96e 100644
--- a/src/console/init.c
+++ b/src/console/init.c
@@ -34,7 +34,7 @@ static int console_loglevel = CONFIG_DEFAULT_CONSOLE_LOGLEVEL;
static inline int get_log_level(void)
{
if (CONSOLE_LEVEL_CONST)
- return CONFIG_DEFAULT_CONSOLE_LOGLEVEL;
+ return get_console_loglevel();
return console_loglevel;
}
@@ -49,7 +49,7 @@ static inline void set_log_level(int new_level)
static void init_log_level(void)
{
- int debug_level = CONFIG_DEFAULT_CONSOLE_LOGLEVEL;
+ int debug_level = get_console_loglevel();
if (CONSOLE_LEVEL_CONST)
return;
diff --git a/src/include/console/console.h b/src/include/console/console.h
index aa935e4579..1ecf89c288 100644
--- a/src/include/console/console.h
+++ b/src/include/console/console.h
@@ -64,6 +64,18 @@ void do_putchar(unsigned char byte);
#define printk(LEVEL, fmt, args...) \
do { do_printk(LEVEL, fmt, ##args); } while (0)
+#if IS_ENABLED(CONFIG_CONSOLE_OVERRIDE_LOGLEVEL)
+/*
+ * This function should be implemented at mainboard level.
+ * The returned value will _replace_ the loglevel value;
+ */
+int get_console_loglevel(void);
+#else
+static inline int get_console_loglevel(void)
+{
+ return CONFIG_DEFAULT_CONSOLE_LOGLEVEL;
+}
+#endif
#else
static inline void console_init(void) {}
static inline int console_log_level(int msg_level) { return 0; }