console: Split loglevel for fast and slow

For fast CBMEM console use minimum BIOS_DEBUG level.
For other consoles, Kconfig and/or nvram settings
apply.

Change-Id: Iff56a0a3182f258200cac80e013957d598cc2130
Signed-off-by: Kyösti Mälkki <kyosti.malkki@gmail.com>
Reviewed-on: https://review.coreboot.org/c/31370
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Julius Werner <jwerner@chromium.org>
This commit is contained in:
Kyösti Mälkki
2019-02-12 14:16:21 +02:00
committed by Patrick Georgi
parent 7132f259bf
commit e613d704d1
4 changed files with 32 additions and 8 deletions

View File

@ -17,6 +17,7 @@
* blatantly copied from linux/kernel/printk.c
*/
#include <console/cbmem_console.h>
#include <console/console.h>
#include <console/streams.h>
#include <console/vtxprintf.h>
@ -36,18 +37,24 @@ void do_putchar(unsigned char byte)
static void wrap_putchar(unsigned char byte, void *data)
{
do_putchar(byte);
console_tx_byte(byte);
}
static void wrap_putchar_cbmemc(unsigned char byte, void *data)
{
__cbmemc_tx_byte(byte);
}
int vprintk(int msg_level, const char *fmt, va_list args)
{
int i;
int i, log_this;
if (IS_ENABLED(CONFIG_SQUELCH_EARLY_SMP) && ENV_CACHE_AS_RAM &&
!boot_cpu())
return 0;
if (!console_log_level(msg_level))
log_this = console_log_level(msg_level);
if (log_this < CONSOLE_LOG_FAST)
return 0;
DISABLE_TRACE;
@ -59,9 +66,12 @@ int vprintk(int msg_level, const char *fmt, va_list args)
spin_lock(&console_lock);
#endif
i = vtxprintf(wrap_putchar, fmt, args, NULL);
console_tx_flush();
if (log_this == CONSOLE_LOG_FAST) {
i = vtxprintf(wrap_putchar_cbmemc, fmt, args, NULL);
} else {
i = vtxprintf(wrap_putchar, fmt, args, NULL);
console_tx_flush();
}
#ifdef __PRE_RAM__
#if IS_ENABLED(CONFIG_HAVE_ROMSTAGE_CONSOLE_SPINLOCK)