Kyösti Mälkki has uploaded this change for review. ( https://review.coreboot.org/c/coreboot/+/38194 )
Change subject: drivers/pc80/rtc: Remove duplicate cmos_chksum_valid() ......................................................................
drivers/pc80/rtc: Remove duplicate cmos_chksum_valid()
This moves reference to LB_CKS_xxx to a file that is only built with USE_OPTION_TABLE and where option_table.h is always generated.
Change-Id: I5a4b86921876c24cd1d310b674119b960c3d2fd6 Signed-off-by: Kyösti Mälkki kyosti.malkki@gmail.com --- M src/drivers/pc80/rtc/mc146818rtc.c M src/drivers/pc80/rtc/mc146818rtc_boot.c M src/drivers/pc80/rtc/option.c M src/include/option.h 4 files changed, 9 insertions(+), 38 deletions(-)
git pull ssh://review.coreboot.org:29418/coreboot refs/changes/94/38194/1
diff --git a/src/drivers/pc80/rtc/mc146818rtc.c b/src/drivers/pc80/rtc/mc146818rtc.c index fe6900f..d6a6279 100644 --- a/src/drivers/pc80/rtc/mc146818rtc.c +++ b/src/drivers/pc80/rtc/mc146818rtc.c @@ -26,18 +26,6 @@ #include <security/vboot/vbnv_layout.h> #include <types.h>
-/* There's no way around this include guard. option_table.h is autogenerated */ -#if CONFIG(USE_OPTION_TABLE) -#include "option_table.h" -#else -#define LB_CKS_RANGE_START 0 -#define LB_CKS_RANGE_END 0 -#define LB_CKS_LOC 0 -#endif - -/* Don't warn for checking >= LB_CKS_RANGE_START even though it may be 0. */ -#pragma GCC diagnostic ignored "-Wtype-limits" - static void cmos_reset_date(void) { /* Now setup a default date equals to the build date */ @@ -154,8 +142,7 @@
if (CONFIG(USE_OPTION_TABLE)) { /* See if there is a LB CMOS checksum error */ - checksum_invalid = !cmos_checksum_valid(LB_CKS_RANGE_START, - LB_CKS_RANGE_END, LB_CKS_LOC); + checksum_invalid = !cmos_lb_cks_valid(); if (checksum_invalid) printk(BIOS_DEBUG, "RTC: coreboot checksum invalid\n");
diff --git a/src/drivers/pc80/rtc/mc146818rtc_boot.c b/src/drivers/pc80/rtc/mc146818rtc_boot.c index 307b1cf..89b2be3 100644 --- a/src/drivers/pc80/rtc/mc146818rtc_boot.c +++ b/src/drivers/pc80/rtc/mc146818rtc_boot.c @@ -17,30 +17,9 @@ #include <pc80/mc146818rtc.h> #include <fallback.h>
-#if CONFIG(USE_OPTION_TABLE) -#include <option_table.h> - -static int cmos_chksum_valid(void) -{ - unsigned char addr; - u16 sum, old_sum; - - sum = 0; - /* Compute the cmos checksum */ - for (addr = LB_CKS_RANGE_START; addr <= LB_CKS_RANGE_END; addr++) - sum += cmos_read(addr); - - /* Read the stored checksum */ - old_sum = cmos_read(LB_CKS_LOC) << 8; - old_sum |= cmos_read(LB_CKS_LOC + 1); - - return sum == old_sum; -} - void sanitize_cmos(void) { - if (cmos_error() || !cmos_chksum_valid() || - CONFIG(STATIC_OPTION_TABLE)) { + if (cmos_error() || !cmos_lb_cks_valid() || CONFIG(STATIC_OPTION_TABLE)) { size_t length = 128; const unsigned char *cmos_default = cbfs_boot_map_with_leak("cmos.default", @@ -54,7 +33,6 @@ } } } -#endif
#if CONFIG_MAX_REBOOT_CNT > 15 #error "CONFIG_MAX_REBOOT_CNT too high" @@ -84,7 +62,7 @@ { unsigned char byte;
- if (cmos_error() || (CONFIG(USE_OPTION_TABLE) && !cmos_chksum_valid())) { + if (cmos_error() || (CONFIG(USE_OPTION_TABLE) && !cmos_lb_cks_valid())) { /* Invalid CMOS checksum detected! * Force fallback boot... */ diff --git a/src/drivers/pc80/rtc/option.c b/src/drivers/pc80/rtc/option.c index 65f75ef..0f4e553 100644 --- a/src/drivers/pc80/rtc/option.c +++ b/src/drivers/pc80/rtc/option.c @@ -233,3 +233,8 @@ rdev_munmap(&rdev, ct); return CB_SUCCESS; } + +int cmos_lb_cks_valid(void) +{ + return cmos_checksum_valid(LB_CKS_RANGE_START, LB_CKS_RANGE_END, LB_CKS_LOC); +} diff --git a/src/include/option.h b/src/include/option.h index 4bd5dee..e3736c9 100644 --- a/src/include/option.h +++ b/src/include/option.h @@ -17,6 +17,7 @@ #include <types.h>
void sanitize_cmos(void); +int cmos_lb_cks_valid(void);
/* * FIXME: get_option() needs to be abstracted better so that other non-volatile