From 6e7645e4febcb254300b79e6dc4e66341fcb3ef4 Mon Sep 17 00:00:00 2001 From: Johnny Lin Date: Mon, 16 Jan 2023 17:21:01 +0800 Subject: drivers/ocp, mb/ocp/deltalake: move get_loglevel_from_vpd function Move get_loglevel_from_vpd from mb/ocp/deltalake to driver drivers/ocp/vpd/loglevel_vpd.c. Change-Id: I70af1051f63c527fd8150f5ecbe4765b4aaacd20 Signed-off-by: Johnny Lin Reviewed-on: https://review.coreboot.org/c/coreboot/+/71936 Reviewed-by: David Hendricks Tested-by: build bot (Jenkins) Reviewed-by: Felix Held --- src/drivers/ocp/include/vpd.h | 1 + src/drivers/ocp/vpd/Makefile.inc | 3 +++ src/drivers/ocp/vpd/loglevel_vpd.c | 21 +++++++++++++++++++++ 3 files changed, 25 insertions(+) create mode 100644 src/drivers/ocp/vpd/loglevel_vpd.c (limited to 'src/drivers/ocp') 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 +#include +#include + +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); +} -- cgit v1.2.3