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:
parent
16b3e4bd2c
commit
7ce1a75602
|
@ -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));
|
||||
}
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
#if !defined(__ASSEMBLER__)
|
||||
|
||||
void boot_successful(void);
|
||||
void set_boot_successful(void);
|
||||
|
||||
#endif /* __ASSEMBLER__ */
|
||||
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue