[coreboot-gerrit] New patch to review for coreboot: pc80: Move set_boot_successful()

Kyösti Mälkki (kyosti.malkki@gmail.com) gerrit at coreboot.org
Sun Dec 11 13:44:58 CET 2016


Kyösti Mälkki (kyosti.malkki at gmail.com) just uploaded a new patch set to gerrit, which you can find at https://review.coreboot.org/17793

-gerrit

commit 6fbf2524c2feb24804d640dd57111488dcfb0086
Author: Kyösti Mälkki <kyosti.malkki at gmail.com>
Date:   Sun Dec 11 12:56:37 2016 +0200

    pc80: Move set_boot_successful()
    
    Don't implement arch or driver -specific code under lib/,
    
    Change-Id: If75980ec5efc622582e2b5e124ad0e7ee3fa39a3
    Signed-off-by: Kyösti Mälkki <kyosti.malkki at gmail.com>
---
 src/drivers/pc80/rtc/mc146818rtc.c | 32 +++++++++++++++++++++++++++++++
 src/include/fallback.h             |  1 +
 src/lib/fallback_boot.c            | 39 ++------------------------------------
 3 files changed, 35 insertions(+), 37 deletions(-)

diff --git a/src/drivers/pc80/rtc/mc146818rtc.c b/src/drivers/pc80/rtc/mc146818rtc.c
index adbc611..b5b3be1 100644
--- a/src/drivers/pc80/rtc/mc146818rtc.c
+++ b/src/drivers/pc80/rtc/mc146818rtc.c
@@ -15,7 +15,9 @@
  */
 
 #include <arch/acpi.h>
+#include <arch/io.h>
 #include <bcd.h>
+#include <fallback.h>
 #include <stdint.h>
 #include <version.h>
 #include <console/console.h>
@@ -404,3 +406,33 @@ int rtc_get(struct rtc_time *time)
 	time->wday = bcd2bin(cmos_read(RTC_CLK_DAYOFWEEK)) - 1;
 	return 0;
 }
+
+/* Signal coreboot proper completed -- just before running payload
+ * or jumping to ACPI S3 wakeup vector.
+ */
+void set_boot_successful(void)
+{
+	uint8_t index, byte;
+
+	index = inb(RTC_PORT(0)) & 0x80;
+	index |= RTC_BOOT_BYTE;
+	outb(index, RTC_PORT(0));
+
+	byte = inb(RTC_PORT(1));
+
+	if (IS_ENABLED(CONFIG_SKIP_MAX_REBOOT_CNT_CLEAR)) {
+		/* Set the fallback boot bit to allow for recovery if
+		 * the payload fails to boot.
+		 * It is the responsibility of the payload to reset
+		 * the normal boot bit to 1 if desired
+		 */
+		byte &= ~RTC_BOOT_NORMAL;
+	} else {
+		/* If we are in normal mode set the boot count to 0 */
+		if (byte & RTC_BOOT_NORMAL)
+			byte &= 0x0f;
+
+	}
+
+	outb(byte, RTC_PORT(1));
+}
diff --git a/src/include/fallback.h b/src/include/fallback.h
index 740f130..3a7225e 100644
--- a/src/include/fallback.h
+++ b/src/include/fallback.h
@@ -4,6 +4,7 @@
 #if !defined(__ASSEMBLER__)
 
 void boot_successful(void);
+void set_boot_successful(void);
 
 #endif /* __ASSEMBLER__ */
 
diff --git a/src/lib/fallback_boot.c b/src/lib/fallback_boot.c
index 203071f..1c12557 100644
--- a/src/lib/fallback_boot.c
+++ b/src/lib/fallback_boot.c
@@ -1,43 +1,8 @@
-#include <console/console.h>
 #include <fallback.h>
 #include <watchdog.h>
-#include <arch/io.h>
 
-#if CONFIG_PC80_SYSTEM
-#include <pc80/mc146818rtc.h>
-
-static void set_boot_successful(void)
-{
-	uint8_t index, byte;
-
-	index = inb(RTC_PORT(0)) & 0x80;
-	index |= RTC_BOOT_BYTE;
-	outb(index, RTC_PORT(0));
-
-	byte = inb(RTC_PORT(1));
-
-	if (IS_ENABLED(CONFIG_SKIP_MAX_REBOOT_CNT_CLEAR)) {
-		/* Set the fallback boot bit to allow for recovery if
-		 * the payload fails to boot.
-		 * It is the responsibility of the payload to reset
-		 * the normal boot bit to 1 if desired
-		 */
-		byte &= ~RTC_BOOT_NORMAL;
-	} else {
-		/* If we are in normal mode set the boot count to 0 */
-		if (byte & RTC_BOOT_NORMAL)
-			byte &= 0x0f;
-
-	}
-
-	outb(byte, RTC_PORT(1));
-}
-#else
-static void set_boot_successful(void)
-{
-	/* To be implemented */
-}
-#endif
+/* Implement platform specific override. */
+void __attribute__((weak)) set_boot_successful(void) { }
 
 void boot_successful(void)
 {



More information about the coreboot-gerrit mailing list