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@gmail.com>
Reviewed-on: https://review.coreboot.org/17793
Tested-by: build bot (Jenkins)
Reviewed-by: Martin Roth <martinroth@google.com>
This commit is contained in:
Kyösti Mälkki 2016-12-11 12:56:37 +02:00 committed by Nico Huber
parent 16b3e4bd2c
commit 7ce1a75602
3 changed files with 37 additions and 37 deletions

View File

@ -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,35 @@ 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));
}

View File

@ -4,6 +4,7 @@
#if !defined(__ASSEMBLER__)
void boot_successful(void);
void set_boot_successful(void);
#endif /* __ASSEMBLER__ */

View File

@ -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)
{