diff options
Diffstat (limited to 'src/drivers')
-rw-r--r-- | src/drivers/ocp/include/vpd.h | 1 | ||||
-rw-r--r-- | src/drivers/ocp/vpd/Makefile.inc | 3 | ||||
-rw-r--r-- | src/drivers/ocp/vpd/loglevel_vpd.c | 21 |
3 files changed, 25 insertions, 0 deletions
diff --git a/src/drivers/ocp/include/vpd.h b/src/drivers/ocp/include/vpd.h index d58f79120f..33fece5c4d 100644 --- a/src/drivers/ocp/include/vpd.h +++ b/src/drivers/ocp/include/vpd.h @@ -82,4 +82,5 @@ int get_int_from_vpd_range(const char *const key, const int fallback, const int const int max); bool get_bool_from_vpd(const char *const key, const bool fallback); int get_cxl_mode_from_vpd(void); +int get_loglevel_from_vpd(const char *const key, const int fallback); #endif diff --git a/src/drivers/ocp/vpd/Makefile.inc b/src/drivers/ocp/vpd/Makefile.inc index c34866ff38..8db5afaf47 100644 --- a/src/drivers/ocp/vpd/Makefile.inc +++ b/src/drivers/ocp/vpd/Makefile.inc @@ -1,2 +1,5 @@ romstage-$(CONFIG_OCP_VPD) += vpd_util.c ramstage-$(CONFIG_OCP_VPD) += vpd_util.c +ifeq ($(CONFIG_VPD),y) +all-$(CONFIG_CONSOLE_OVERRIDE_LOGLEVEL) += loglevel_vpd.c +endif diff --git a/src/drivers/ocp/vpd/loglevel_vpd.c b/src/drivers/ocp/vpd/loglevel_vpd.c new file mode 100644 index 0000000000..7a6db5750f --- /dev/null +++ b/src/drivers/ocp/vpd/loglevel_vpd.c @@ -0,0 +1,21 @@ +/* SPDX-License-Identifier: GPL-2.0-only */ + +#include <console/console.h> +#include <drivers/vpd/vpd.h> +#include <drivers/ocp/include/vpd.h> + +int get_loglevel_from_vpd(const char *const key, const int fallback) +{ + int log_level = fallback; + + if (vpd_get_int(key, VPD_RW_THEN_RO, &log_level)) { + if (log_level < 0 || log_level >= BIOS_NEVER) + log_level = fallback; + } + return log_level; +} + +int get_console_loglevel(void) +{ + return get_loglevel_from_vpd(COREBOOT_LOG_LEVEL, COREBOOT_LOG_LEVEL_DEFAULT); +} |