aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrick Georgi <patrick.georgi@secunet.com>2011-01-14 08:36:34 +0000
committerPatrick Georgi <patrick.georgi@coresystems.de>2011-01-14 08:36:34 +0000
commitc3dc8f8ebc57f35132687a1a1a201ef08063c195 (patch)
tree387a7da75d233770821b0955168360912991c994
parentef3296542a1a1883e8a0f5a05992b2db5b507f2c (diff)
Disable CMOS recovery code for ROMCC boards as the CBFS code used for
that feature is not ROMCC compatible. Fixes build errors introduced in r6253. Signed-off-by: Patrick Georgi <patrick.georgi@secunet.com> Acked-by: Patrick Georgi <patrick.georgi@secunet.com> git-svn-id: svn://svn.coreboot.org/coreboot/trunk@6255 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
-rw-r--r--src/arch/x86/Kconfig6
-rw-r--r--src/pc80/mc146818rtc_early.c10
2 files changed, 12 insertions, 4 deletions
diff --git a/src/arch/x86/Kconfig b/src/arch/x86/Kconfig
index aacc0982a6..3684c69e27 100644
--- a/src/arch/x86/Kconfig
+++ b/src/arch/x86/Kconfig
@@ -91,8 +91,14 @@ config PC80_SYSTEM
config BOOTBLOCK_NORTHBRIDGE_INIT
string
+config USE_CMOS_RECOVERY
+ bool
+ default n if ROMCC
+ default y
+
config HAVE_CMOS_DEFAULT
def_bool n
+ depends on USE_CMOS_RECOVERY
config CMOS_DEFAULT_FILE
string
diff --git a/src/pc80/mc146818rtc_early.c b/src/pc80/mc146818rtc_early.c
index 10de0bc54f..bb81ca7b65 100644
--- a/src/pc80/mc146818rtc_early.c
+++ b/src/pc80/mc146818rtc_early.c
@@ -1,6 +1,5 @@
#include <pc80/mc146818rtc.h>
#include <fallback.h>
-#include <cbfs.h>
#if CONFIG_USE_OPTION_TABLE
#include "option_table.h"
#endif
@@ -12,18 +11,20 @@
#error "CONFIG_MAX_REBOOT_CNT too high"
#endif
+#if CONFIG_USE_CMOS_RECOVERY
+#include <cbfs.h>
#include <console/loglevel.h>
int do_printk(int msg_level, const char *fmt, ...) __attribute__((format(printf, 2, 3)));
#define printk_warning(fmt, arg...) do_printk(BIOS_WARNING ,fmt, ##arg)
#define printk_debug(fmt, arg...) do_printk(BIOS_DEBUG ,fmt, ##arg)
+#endif
static int cmos_error(void)
{
unsigned char reg_d;
/* See if the cmos error condition has been flagged */
reg_d = cmos_read(RTC_REG_D);
- printk_debug("CMOS_REG_D(VRT): %x\n", reg_d & RTC_VRT);
return (reg_d & RTC_VRT) == 0;
}
@@ -43,7 +44,6 @@ static int cmos_chksum_valid(void)
old_sum = cmos_read(LB_CKS_LOC) << 8;
old_sum |= cmos_read(LB_CKS_LOC+1);
- printk_debug("CMOS checksum: old = %lx, new=%lx\n", old_sum, sum);
return sum == old_sum;
#else
return 0;
@@ -60,11 +60,12 @@ static inline int last_boot_normal(void)
static inline int do_normal_boot(void)
{
- char *cmos_default = cbfs_find_file("cmos.default", 0xaa);
unsigned char byte;
int i;
if (cmos_error() || !cmos_chksum_valid()) {
+#if CONFIG_USE_CMOS_RECOVERY
+ char *cmos_default = cbfs_find_file("cmos.default", 0xaa);
if (cmos_default) {
printk_warning("WARNING - CMOS CORRUPTED. RESTORING DEFAULTS.\n");
/* First 14 bytes are reserved for
@@ -79,6 +80,7 @@ static inline int do_normal_boot(void)
outb(0x06, 0xcf9);
for (;;) asm("hlt"); /* Wait for reset! */
}
+#endif
/* There are no impossible values, no checksums so just
* trust whatever value we have in the the cmos,