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:
committed by
Nico Huber
parent
16b3e4bd2c
commit
7ce1a75602
@ -15,7 +15,9 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include <arch/acpi.h>
|
#include <arch/acpi.h>
|
||||||
|
#include <arch/io.h>
|
||||||
#include <bcd.h>
|
#include <bcd.h>
|
||||||
|
#include <fallback.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <version.h>
|
#include <version.h>
|
||||||
#include <console/console.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;
|
time->wday = bcd2bin(cmos_read(RTC_CLK_DAYOFWEEK)) - 1;
|
||||||
return 0;
|
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__)
|
#if !defined(__ASSEMBLER__)
|
||||||
|
|
||||||
void boot_successful(void);
|
void boot_successful(void);
|
||||||
|
void set_boot_successful(void);
|
||||||
|
|
||||||
#endif /* __ASSEMBLER__ */
|
#endif /* __ASSEMBLER__ */
|
||||||
|
|
||||||
|
@ -1,43 +1,8 @@
|
|||||||
#include <console/console.h>
|
|
||||||
#include <fallback.h>
|
#include <fallback.h>
|
||||||
#include <watchdog.h>
|
#include <watchdog.h>
|
||||||
#include <arch/io.h>
|
|
||||||
|
|
||||||
#if CONFIG_PC80_SYSTEM
|
/* Implement platform specific override. */
|
||||||
#include <pc80/mc146818rtc.h>
|
void __attribute__((weak)) set_boot_successful(void) { }
|
||||||
|
|
||||||
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
|
|
||||||
|
|
||||||
void boot_successful(void)
|
void boot_successful(void)
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user